하둡 클러스터 설치하기
사전 준비사항
- openjdk 8
- ldap 에 hadoop 그룹 추가, hadoop 계정 추가 (hadoop 계정을 이용해서 hadoop을 설치할것임)
1. HDFS로 사용할 sdb 하드디스크 포맷, 마운트하기
모든 서버에 적용한다.
파티션 만들기
$ fdisk /dev/sdb
현재 마운트 되어있는 것 모두 삭제 (d)
새 파티션 생성 (n)
변경사항 반영 (w)
포맷하기
$ mkfs.ext4 /dev/sdb1
마운트하기
root 디렉토리에 data1 디렉토리를 생성해서 거기에 마운트를 해줄것이다.
$ mkdir /data1
$ mount /dev/sdb1 /data1
$ df -T
** 부팅 시 자동으로 마운트 되도록 하기
/etc/fstab 파일에 아래 내용 추가
/dev/sdb1 /data1 ext4 defaults 0 0
2. 시스템 설정하기
hosts 파일 수정하기
/etc/hosts 파일을 아래와 같이 수정한다.
192.0.2.1 node-master
192.0.2.2 node1
192.0.2.3 node2
hadoop 계정에서 비밀번호 없이 로그인하기
홈 디렉토리로 가서
$ ssh-keygen -t rsa
$ cd .ssh
$ cat id_rsa.pub > authorized_keys
hadoop binary 파일 다운받기
/opt/hadoop 에서 설치할 것이다.
wget https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-x.x.x/hadoop-x.x.x.tar.gz
$ tar -xzf hadoop-x.x.x.tar.gz
$ mv hadoop-x.x.x hadoop
환경변수 설정
/opt/hadoop/.profile 파일에 아래 내용 추가
PATH=/opt/hadoop/bin:/opt/hadoop/sbin:$PATH
.bashrc 파일에 아래 내용 추가
export HADOOP_HOME=/opt/hadoop
export PATH=${PATH}:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin
3. Master Node 설정하기
자바 환경변수 설정
/opt/hadoop/etc/hadoop/hadoop-env.sh 파일에 아래 내용 추가
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/
NameNode Location 설정
/opt/hadoop/etc/hadoop/core-site.xml 파일에 아래 내용 추가
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://<ip주소>:9000</value>
</property>
</configuration>
HDFS path 설정
/opt/hadoop/etc/hadoop/hdfs-site.xml 파일에 아래 내용 추가
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>/data1/nameNode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/data1/dataNode</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>
YARN 설정
opt/hadoop/etc/hadoop/mapred-site.xml 파일에 아래 내용 추가
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=$HADOOP_HOME</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=$HADOOP_HOME</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=$HADOOP_HOME</value>
</property>
</configuration>
opt/hadoop/etc/hadoop/yarn-site.xml 파일에 아래 내용 추가
<configuration>
<property>
<name>yarn.acl.enable</name>
<value>0</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value><마스터노드 ip 주소></value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
Workers 설정
opt/hadoop/etc/hadoop/workers 파일에 아래 내용 추가
node1
node2
...
4. Config 파일을 각 노드로 복사하기
$ cd /opt
$ rsycn -avPd opt/* node1:/opt
$ rsycn -avPd opt/* node2:/opt
5. HDFS 포맷
master node에서
$ hdfs namenode -format
6. HDFS 실행 및 모니터링
master node에서
HDFS 시작
$ start-dfs.sh
HDFS 모니터링
http://<마스터노드 ip주소="">:9870 접속
마스터노드>
HDFS 끄기
$ stop-dfs.sh
7. YARN 실행 및 모니터링
master node에서
YARN 시작
$ start-yarn.sh
YARN 모니터링
http://<마스터노드 ip주소="">:8088 접속
마스터노드>
YARN 끄기
$ stop-yarn.sh
8. hadoop 돌려보기
IntelliJ 에서 짰던 WordCount 코드를 돌려보려고 한다.
- 프로젝트 디렉토리에서 mvn install
- target 디렉토리에 test-1.0-SNAPSHOT.jar 파일이 생긴다.
- jar 파일을 hadoop 계정으로 가져온다.
hadoop jar test-1.0-SNAPSHOT.jar package1.WordCount -Dmapred.reduce.tasks=2 test.txt
실행- 프로세스는 8088에서 볼 수 있다.