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