2021년 5월 6일 목요일

Hadoop 설치와 운용 : VirtualBox환경에서 우분투 16.04 두개를 이용해서 설치

 1. 설치 환경 : Virtualbox 6.1, Ubutu 16.04, hadoop 2.6.5, JAVA jdk1.8

가장먼저 내 Virtualbox에 하나의 Ubuntu 16.04 OS를 설치하여, java jdk1.8을 설치해주고, hadoop 2.6.5를 설치해주고, 환경설정과 ssh 키 생성까지 완료한다.

그리고 이 pc를 virtualbox에서 복제해서 하나의 pc를 더준비하고 ssh-copy-id로 공유환경설정 후 하둡환경을 설정한다.

기본적으로 두개의 서버를 활용하는 개념으로 구성하였으며 설치전략은 doop1 서버에는 NN, DN, RM, NM를 운용하고 doop2 서버에는 DN, NM, SNN를 운용하는 개념으로 준비한다.

이후 start-all.sh 실행시킨 후 여러 가지 모니터링 방법을 확인한다.  


2. 내 pc에 필요한 설치파일 다운로드 

가. https://releases.ubuntu.com/16.04/ :

ubuntu os ubuntu-16.04.7-desktop-amd64.iso 다운로드

나. https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html :

oracle jdk 1.8 찾아서 jdk-8u291-linux-x64.tar.gz 다운로드

다. http://archive.apache.org/dist/ : 

archive.apache.org 에서 common에서 hadoop2.6.5.tar.gz 다운로드

라. 가상머신에서 우분투 서버나 pc가 준비되면 scp를 이용해 아래와 같이 전송해준다. 

scp jdk-8u291-linux-x64.tar.gz hdc@192.168.219.111:downloads

scp hadoop-2.6.5.tar.gz hdc@192.168.219.111:downloads


3. VirtualBox에 하나의 Ubuntu PC 준비

가. 우분투 설치

가상 우분투 PC 설치 환경 : 메모리 1536정도, vmdk 선택, 용량 20G정도,  

설치후 storage IDE 우분투 데스크탑 iso 연결, 네트워크 어뎁처브리지 선택

OS 설치간에 이름 doop1, id hdc 로 설정 설치완료 후 

sudo passwd 설정

ifconfig # 네트워크 주소 확인

ufw disable # 방화벽 제거

apt install wget 

apt install openssh-server # ssh 통신가능토록 설치

visudo에서 hdc를 root 사용자와 동일 권한 부여 설정 및 저장

hdc   ALL=(ALL:ALL) ALL

ping 192.168.219.104 # 확인후 ctrl+c 

설치할 java hadoop 파일 가져오기 : 내 pc 터미널에서 

scp jdk-8u291-linux-x64.tar.gz hdc@192.168.219.111:downloads

scp hadoop-2.6.5.tar.gz hdc@192.168.219.111:downloads


나. java 설치

sudo apt install openjdk-8-jdk -y

java -version


다. hadoop 설치 hdc 계정에서 

cd /usr/local

tar -xvf /home/hdc/downloads/hadoop-2.6.5.tar.gz

ln -s hadoop-2.6.5 hadoop

chown -R hdc:hdc hadoop*

cd


라. 환경설정

nano .bashrc ##for examples 밑에 추가

-----------

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_291

export PATH=$PATH:$JAVA_HOME/bin

export HADOOP_INSTALL=/usr/local/hadoop

export PATH=$PATH:$HADOOP_INSTALL/bin

export PATH=$PATH:$HADOOP_INSTALL/sbin

--------

source .bashrc

java -version

hadoop version

su - hdc 

나와서 동일하게 .bashrc 설정


마. 인증키 생성 

ssh-keygen -t rsa -P ""

ll .ssh


4. 복제 ubuntu pc 준비

가. virtualBox에서 우측마우스로 복제, 이름 doop2, 모든 네트워크 어뎁터의 새 MAC 주소 생성 선택, 완전한 복제

ifconfig # 네트워크 새주소 확인

hostnamectl set-hostname doop2

sudo su  # host 변경확인가능

nano /etc/hosts  # localhost 밑에 doop1, doop2 추가

-----

127.0.0.1 localhost

192.168.219.111 doop1

192.168.219.112 doop2

------

reboot # 재부팅하여 화면 최소화 내려놓기

## doop1 pc도 nano /etc/hosts 파일 수정


나. 두개의 pc를 모두 가동시킨 상태에서 내 피시 터미널로 doop1 작업

ssh hdc@192.168.219.111

ssh-copy-id -i $HOME/.ssh/id_rsa.pub hdc@doop2

자체 인증 설정

cat $HOME/.ssh/id_rsa.pub>>$HOME/.ssh/authorized_keys

ssh doop1 등으로 로그인 가능


다. hadoop 환경 설정

cd /usr/local/hadoop/etc/hadoop


설치전략 doop1번 : NN, DN, RM, NM

doop2번 : DN, NM(노드매니저),SNN(세컨드내임노드)

해당파일 설정시 아래의 property들을 <configuration></configuration> 사이에 붙여넣는다.


설정1 : nano core-site.xml

-----------

<property>

<name>fs.defaultFS</name>

<value>hdfs://doop1:9000</value>

</property>

-------

설정 2:

mv mapred-site.xml.template mapred-site.xml

nano mapred-site.xml

-----------

<property>

<name>mapreduce.framework.name</name>

<value>yarn</value>

</property>

---------

설정3:

nano hdfs-site.xml

-----

<property>

<name>dfs.replication</name>

<value>2</value>

</property>


<property>

<name>dfs.namenode.name.dir</name>

<value>/abc/name</value>

</property>


<property>

<name>dfs.datanode.data.dir</name>

<value>/abc/data</value>

<final>true</final>

</property>


<property>

<name>dfs.namenode.http-address</name>

<value>doop1:50070</value>

</property>


<property>

<name>dfs.namenode.secondary.http-address</name>

<value>doop2:50090</value>

</property>

-------------

설정4:

nano yarn-site.xml

--------------------

<property>

<name>yarn.resourcemanager.address</name>

<value>doop1:9001</value>

</property>


<property>

<name>yarn.resourcemanager.resource-tracker.address</name>

<value>doop1:8031</value>

</property>


<property>

<name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>

<value>org.apache.hadoop.mapred.ShuffleHandler</value>

</property>


<property>

<name>yarn.nodemanager.aux-services</name>

<value>mapreduce_shuffle</value>

</property>


<property>

<name>yarn.nodemanager.pmem-check-enabled</name>

<value>false</value>

</property>


<property>

<name>yarn.nodemanager.vmem-check-enabled</name>

<value>false</value>

</property>


<property>

<name>yarn.log-aggregation-enable</name>

<value>true</value>

</property>


<property>

<name>yarn.nodemanager.log-aggregation.roll-monitoring-interval-seconds</name>

<value>3600</value>

</property>


----------

설정5:

nano slaves

-----------

doop1

doop2

----------

설정6:

nano hadoop-env.sh # 변경없음


라. doop2에게 보내주고 설정하기

scp core-site.xml hdc@doop2:/usr/local/hadoop/etc/hadoop

scp mapred-site.xml hdc@doop2:/usr/local/hadoop/etc/hadoop

scp hdfs-site.xml hdc@doop2:/usr/local/hadoop/etc/hadoop

scp yarn-site.xml hdc@doop2:/usr/local/hadoop/etc/hadoop

scp slaves hdc@doop2:/usr/local/hadoop/etc/hadoop


마. 데이터 폴더 준비하기

sudo mkdir /abc

sudo chown -R hdc:hdc /abc


바. doop2 설정확인 및 조정

ssh doop2로 이동해서

설정변경 1: 

nano hdfs-site.xml 수정

두번째 property namenode 관련 제거

세번째 datanode에는 value에서 data2로 

dfs.namenode.checkpoint.period 축가 

------------

<property>

<name>dfs.replication</name>

<value>2</value>

</property>


<property>

<name>dfs.datanode.data.dir</name>

<value>/abc/data2</value>

<final>true</final>

</property>


<property>

<name>dfs.namenode.http-address</name>

<value>doop1:50070</value>

</property>


<property>

<name>dfs.namenode.secondary.http-address</name>

<value>doop2:50090</value>

</property>


<property>

<name>dfs.namenode.checkpoint.period</name>

<value>600</value>

</property>


---------------------

설정변경 2:

home에 abc 폴더 생성

sudo mkdir /abc

sudo chown -R hdc:hdc /abc


사 . 이제 모든 것에서 logout

doop1 home에서

hdfs namenode -format   ##한번만 

ls -all /abc #확인

ll /abc/name/current/

버전확인

cat /abc/name/current/VERSION 


5. 시작 및 모니터 

start-all.sh

이것을 실행시키면 start-dfs.sh, start-yarn.sh>(hadoop-daemon.sh start nn/dn/snn & yarn-daemon.sh start rm/nm)

jps #프로세스확인(5개 작동중)


ssh doop2 # doop2에서 확인

jps (4개 프로세스)

ls -all /abc/data2/current/  #data2 확인가능


hdfs -h 명령어 옵션확인

hdfs dfsadmin

hdfs dfsadmin -report


브라우저 확인 : http://doop1:50070

resourcemanager확인 : http://doop1:8088

댓글 없음:

댓글 쓰기