VirtualBox 에 4개의 Ubuntu 를 만든다.
설치 시 사용자명은 hadoop 으로 한다.
4개를 따로 설치하거나 1개를 만들어서 3개를 복제한다.
각각 아래처럼 이름과 IP 주소를 사용할 예정. IP 주소는 각 VirtualBox에서 자동으로 생성되고 뒤에 2자리만 순서대로 변경해서 넣어주면된다.
192.168.30.101 hadoop01
192.168.30.102 hadoop02
192.168.30.103 hadoop03
192.168.30.104 hadoop04
복제 전에 할 일
hadoop01에 아래와 같이 먼저 설치한 후 복제해서 hadoop02 ~ hadoop04를 만든다.
// vim 설치
$ sudo apt-get install vim
// 각각 Ubuntu 에 JDK 8 설치
$ sudo add-apt-repository ppa:webupd8team/java
$ sudo apt-get update
$ sudo apt-get install oracle-java8-installer
// 자바 환경설정. 아래 내용 입력 후 저장
$ vim .bashrc
export JAVA_HOME=/usr/lib/jvm/java-8-oracle
VirtualBox 호스트 전용 어댑터 설정
1. 전체 설정
VirtualBox > 전역 도구(G) > 호스트 네트워크 관리자 > 만들기 > vboxnet0 > 192.168.57.1 > 어댑터 > o 수동으로 어댑터 설정 > IPv4 주소: 192.168.30.1 > IPv4 서브넷 마스크: 255.255.255.0
2. 각 VM이 종료된 상태에서 어댑터 추가
VM > 우클릭 > 설정 > 네트워크 > 어댑터 2 > v 네트워크 어댑터 사용하기 > 다음에 연결됨: 호스트 전용 어댑터 > 이름: vboxnet1 > 확인
hadoop 복제
3. 게스트 OS 네트워크 설정
// ifconfig 로 체크한 이름 중 enp0s8 을 기준으로 수정하면 됨
$ ifconfig
// cat 으로 현재 정보 확인
$ sudo cat /etc/network/interfaces
// hadoop01 에서 vi 로 아래 내용 추가
$ sudo vi /etc/network/interfaces
auto enp0s8
iface enp0s8 inet static
address 192.168.56.101
netmask 255.255.255.0
network 192.168.56.1
// hostname 수정
$ sudo vi /etc/hostname
hadoop01
$ sudo reboot
// 리부팅
4. 호스트 OS 에서 ping 으로 체크하면 응답 OK
$ ping 192.168.56.101
// hadoop02 에서 vi 로 아래 내용 추가
$ sudo vi /etc/network/interfaces
auto enp0s8
iface enp0s8 inet static
address 192.168.56.102
netmask 255.255.255.0
network 192.168.56.1
// hostname 수정
$ sudo vi /etc/hostname
hadoop02
// 리부팅
$ sudo reboot
// hadoop03 에서 vi 로 아래 내용 추가
$ sudo vi /etc/network/interfaces
auto enp0s8
iface enp0s8 inet static
address 192.168.56.103
netmask 255.255.255.0
network 192.168.56.1
// hostname 수정
$ sudo vi /etc/hostname
hadoop03
// 리부팅
$ sudo reboot
// hadoop04 에서 vi 로 아래 내용 추가
$ sudo vi /etc/network/interfaces
auto enp0s8
iface enp0s8 inet static
address 192.168.56.104
netmask 255.255.255.0
network 192.168.56.1
// hostname 수정
$ sudo vi /etc/hostname
hadoop04
// 리부팅
$ sudo vi /etc/hosts
127.0.0.1 localhost
192.168.56.101 hadoop01
192.168.56.102 hadoop02
192.168.56.103 hadoop03
192.168.56.104 hadoop04
hadoop02, hadoop03, hadoop04 에도 모두 같은 내용으로 hosts 파일 수정
hadoop01, hadoop02, hadoop03, hadoop04 모두 openssh-server 설치한다.
$ sudo apt-get install openssh-server
// 아래 부분은 hadoop01 에서만 실행
$ ssh-keygen -t rsa
# 엔터 3번
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ ssh localhost
# 처음 한번만 yes, 두번째 접속시 부터는 안 물어봄.
$ exit
# exit 로 꼭 나와야 함
// hadoop02, hadoop03, hadoop04 에 키 복사
$ ssh-copy-id -i /home/hadoop/.ssh/id_rsa.pub hadoop@hadoop02
$ ssh-copy-id -i /home/hadoop/.ssh/id_rsa.pub hadoop@hadoop03
$ ssh-copy-id -i /home/hadoop/.ssh/id_rsa.pub hadoop@hadoop04
// 접속 잘 되는지 확인
$ ssh hadoop@hadoop02
//hadoop 1.2.1 다운로드
$ wget https://archive.apache.org/dist/hadoop/common/hadoop-1.2.1/hadoop-1.2.1.tar.gz
// 압축 해제
$ tar zxvf hadoop-1.2.1.tar.gz
$ cd hadoop-1.2.1/
$ cd conf
$ vi hadoop-env.sh
// 맨아래에 내용 추가
export JAVA_HOME=/usr/lib/jvm/java-8-oracle
export HADOOP_HOME=/home/hadoop/hadoop-1.2.1
export HADOOP_HOME_WARN_SUPPRESS="TRUE"
export HADOOP_HEAPSIZE=1024 // 메모리 설정
export HADOOP_PID_DIR=/home/hadoop/hadoop-1.2.1/pids
$ vi core-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://hadoop01:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoop-data</value>
</property>
</configuration>
$ vi hdfs-site.xml
// dfs.replication : 복제갯수
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.http.address</name>
<value>hadoop01:50070</value>
</property>
<property>
<name>dfs.secondary.http.address</name>
<value>hadoop02:50090</value>
</property>
</configuration>
// 맵리듀스 설정
$ vi mapred-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>hadoop01:9001</value>
</property>
</configuration>
$ cd hadoop-1.2.1/conf
$ ls
// secondary namenode: hadoop02
// slaves : datanode. hadoop02, hadoop03, hadoop04
$ vi masters
hadoop02
$ vi slaves
hadoop02
hadoop03
hadoop04
// 맨 상위로 이동
$ cd ~
// hadoop-1.2.1 통째로 압축
$ tar zcvf hadoop.tar.gz hadoop-1.2.1
// hadoop02, hadoop03, hadoop04로 복사
$ scp hadoop.tar.gz hadoop@hadoop02:/home/hadoop
$ scp hadoop.tar.gz hadoop@hadoop03:/home/hadoop
$ scp hadoop.tar.gz hadoop@hadoop04:/home/hadoop
// 압축풀기
$ ssh hadoop@hadoop02
$ tar zxvf hadoop.tar.gz
$ exit
$ ssh hadoop@hadoop03
$ tar zxvf hadoop.tar.gz
$ exit
$ ssh hadoop@hadoop04
$ tar zxvf hadoop.tar.gz
$ exit
// 하둡 경로 설정
$ vim .bashrc
export HADOOP_INSTALL=/home/hadoop/hadoop-1.2.1
exprot PATH=$PATH:$HADOOP_INSTALL/bin
$ exit
// 리부트
$ sudo reboot
// hadoop 실행
$ hadoop
// 반드시 hadoop01 에서 실행
$ hadoop namenode -format
$ start-all.sh
$ jps
JobTracker
Jps
NameNode
// 3가지 떠있는 것 확인 가능
// 나머지 hadoop2,3,4에서도 동일 명령어로 확인 가능
// hadoop01, hadoop02, hadoop03, hadoop04 에서 jps 실행해서 확인
// hadoop01은 NameNode, JobTracker
// hadoop02은 SecondaryNameNode, DataNode, TaskTracker
// hadoop03은 DataNode, TaskTracker
// hadoop04은 DataNode, TaskTracker 가 보이면 OK
// 반드시 종료 시켜야 함
$ stop-all.sh
브라우저로 http://hadoop01:50070 으로 접속해서 HDFS 확인
브라우저로 http://hadoop01:50030 으로 접속해서 MapReduce 확인
'Programming > Data Engineering' 카테고리의 다른 글
Hadoop wordCount example (0) | 2018.04.25 |
---|---|
HDFS의 기본 구조(HDFS Architecture) (0) | 2018.04.25 |