Linux 기준
1. JDK 설치
$ sudo apt-get install default-jdk
$ javac -version
필자: jdk 1.8
2. 기타 패키지 설치
$ sudo apt-get install ssh rsync
3. hadoop 설치
hadoop-3.3.1 url
$ sudo wget https://mirror.navercorp.com/apache/hadoop/common/hadoop-3.3.1/hadoop-3.3.1.tar.gz
$ sudo mv hadoop-3.3.1 /usr/local/hadoop
-> 꼭 /usr/local 일 필요는 없음. hadoop을 설치하고자 하는 base directory 사용.
4. 클러스터 구성
4.1. (편의를 위해) file permission 조정
/usr/local 에서 진행
$ ls -lh
$ sudo chown -R soo:soo hadoop
-> hadoop 파일을 비롯한 모든 아래 항목들의 owner를 soo:soo로 변경
5. hosts 구성
5.1. /etc/hosts 구성
port 번호와 server 설정
5.2. ssh key 설정
$ ssh-keygen -t rsa
$ cat id_rsa.pub >> $HOME/.ssh/authorized_keys
-> master node와 slave node 간의 원활한 통신을 위함
모든 node에서 진행 후, 비밀번호 없이 ssh를 통해 node간 이동이 가능한지 확인
5.3. hadoop 설정 (master node만 필요)
$ cd /usr/local/hadoop/etc/hadoop
$ vi masters
$ vi slaves
eternity3
eternity5
$ vi workers
eternity3
eternity5
6. *-site.xml 설정
위치: /usr/local/hadoop/etc/hadoop
6.1. hdfs-site.xml
6.2. mapred-site.xml
framework yarn 사용
6.3. yarn-site.xml
6.4. core-site.xml
6.5. hadoop-env.sh
7. hadoop directory를 eternity3, 5에 복사
7.1. 복사된 데이터를 받을 계정 권한 설정
$ ssh eternity3
$ cd /usr/local
$ sudo mkdir hadoop
$ sudo chown -R soo:soo hadoop
$ exit
-> 모든 slave node에 수행
7.2. master node에서 slave node로 data 복사
$ for i in 3 5; do scp -r /usr/local/hadoop/* soo@eternity$i:/usr/local/hadoop; done;
8. bash 설정
$ cd ~
$ vi .bashrc
$ source .bashrc
9. namenode, datanode directory 설정
$ sudo mkdir /hadoop_datas
$ sudo mkdir /hadoop_datas/namenode
$ ls -la /hadoop_datas
$ sudo chown -R soo:soo /hadoop_datas
$ for i in 3 5; do ssh -t eternity$i "sudo mkdir -p /hadoop_datas/dn"; done;
$ for i in 3 5; do ssh -t eternity$i "sudo chown -R soo:soo /hadoop_datas"; done;
-> namenode data directory 명: namenode
-> datanode data directory 명: dn 으로 설정 (뭘로 설정해도 상관 없음)
10. namenode format
$ hadoop namenode -format
11. 실행
$ start-dfs.sh
11.1. hadoop에 file 올려보기
$ hdfs dfs -put txt.1 /text
$ hdfs dfs -ls /
$ hdfs dfs -cat /text
11.2. hadoop 멈추기
$ stop-dfs.sh
hadoop이 정상적으로 돌아가지 않은 경우, hadoop을 멈추고 hadoop namenode format을 해야한다.
이때, format 전에 namenode data directory와 datanode data directory 내의 모든 폴더 및 파일들을 삭제한 후에 format을 진행해야한다.
ex. 본인이 지정한 namenode/datanode data directory에서 진행
master node에서는,
$ cd /hadoop_datas/namenode
$ rm -rf (폴더 내에 존재하는 파일)
slave node에서는,
$ cd /hadoop_datas/dn
$ rm -rf (폴더 내에 존재하는 파일)
master node에서,
$ hadoop namenode -format
$