빅데이터 분산모드 구축 (수정중)
빅데이터 분산모드 구축
1.단일 노드 설치
centos 7 JDK 재설치
hanoob은 자바 기반으로 만들어져 있어 운영체제에 자바가 설치되어 있어야 한다. 이번 프로젝트에서 쓸 hanoob 2.9.2는 centos 7에 기본적으로 설치되어 있는 1.8.0_181버전이 아닌 1.8.0_191 버전을 설치해야 한다. jdk를 다시 설치해보자.
자바의 버전을 확인해보면 1.8.0_181버전이 설치되어있는 것을 확인할 수 있다.
기존의 JDK를 yum명령으를 통해 삭제한다.
https://www.oracle.com/ 사이트로 들어가 8u191버전을 다운받는다.
다운로드 받은 jdk-8u191압축파일을 푼다. 압축을 푼 폴더는 jdk1.8.0_191->jdk1.8로 바꾸어 준다.
jdk1.8폴더를 /usr/local로 옮긴다.
/etc/profile 파일을 vi편집기로 연다.
/etc/profile 파일 마지막 줄에 위의 명령어를 입력해 jdk의 PATH를 지정해준 뒤, 파일을 저장한다.
/etc/profile을 source명령어를 통해 소스에 추가한 뒤, 재부팅 시킨다.
재부팅 후, java의 버전을 확인하면 1.8.0_191로 적용되 있는 것을 확인할 수 있다.
hadoop 설치
weget 명령어를 사용하여 미러사이트에서 hadoop 2.9.2 버전을 다운로드 받는다.
다운로드 받은 하둡의 압축을 푼다.
압축을 푼 hadoop-2.9.2폴더를 /home/centos/폴더로 옮긴다.
/etc/profile 파일을 vi편집기로 연다.
편집기에서 위의 내용을 추가하고 저장한다.
/etc/profile을 소스에 저장한 뒤, 재부팅 한다.
재부팅 후 하둡이 제대로 설치되어 있는 것을 확인할 수 있다.
완전 분산 모드 설치
서버 신뢰관계(보안통신) 추가
# yum install -y openssh* 명령어로 openssh를 설치한다.
# /usr/sbin/sshd 명령어로 ssh 서비스 실행
ssh-keygen -t rsa -P "" //비밀번호를 생략한 ssh 로그인 설정 공개키와 비밀키 생성
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys //공개키를 ssh의 인증키로 등록
chmod 777 ~/.ssh/authorized_keys // 인증키의 permission 설정(생략 가능)
ssh localhost (ssh 접속 확인)
Master 노드를 복사 하여 slave 생성
[master 노드]-[Manage]-[Clone]
vmware의 기능인 clone 복사 기능을 사용한다.
이름은 [centos7-slave1]로 생성한다.
같은 방법으로 slave1, slave2, slave3, slave4 총 4개로 분산할 데이터 노드를 생성하였다.
IP설정 및 hostname 설정
IP변경을 위해 master 노드의 IP를 설정하기 위해 [유선 네트워크 설정]으로 들어간다.
Master 노드의 IP는 자동이 아닌 수동, 주소는 1.0.0.10/24로 할당하였다.
[slave1]
[slave2]
[slave3]
[slave4]
slave1, slave2, slave3, slave4 의 IP를 각각 다르게 설정한다.
호스트 네임 설정
호스트 이름을 변경하기 위해 /etc/hostname를 vi편집기로 연다.
[master]
[slave1]
[slave2]
[slave3]
[slave4]
각 노드의 역할에 맞게 이름을 지정한 뒤 재부팅한다.
호스트의 이름을 등록하기 위해 /etc/hosts를 vi로 열어 준다.
모든 노드에 위의 내용을 추가한다.
각각의 노드에 ping명령어를 입력하여 네트워크가 연결되는지 확인한다.
SSH 접속을 할 때 인증이 필요한데, 인증키를 복사하면 SSH 접속 시 인증을 하지 않아도 된다.
# scp -rp ~/.ssh/authorized_keys root@slave1:~/.ssh/authorized_keys 명령어를 입력하여, 이전에 master에서 생성한 공개키를 모든 slave 노드로 복사 한다. (master에서 실행)
7. 노드들간의 SSH 접속 확인
master 노드에서 slave1, slave2, slave3, slave4로 SSH를 접속 테스트를 한다.
이 때 원래는 각 노드의 인증 비밀번호를 입력해야 하지만 openssh로 생성한 인증파일을 복사했으므로 SSH로 접속 할 때 비밀번호를 입력하지 않아도 된다.
8. hadoop-env.sh 수정(master에서만
실행)(전부 다 해야되는거같은데..?) $HADOOP_HOME/etc/hadoop/hadoop-env.sh 텍스트 편집기의 줄 번호가 표시되도록 설정 ( 텍스트 편집기 - 기본 설정 - 줄 번호 표시 체크 ) 25번 라인 JDK 경로
수정 : export JAVA_HOME=/usr/local/jdk1.8 113번 라인 하둡 데몬의 pid 저장
경로 수정 export
HADOOP_PID_DIR=/home/centos/hadoop-2.9.2/pids 9.core-site.xml 수정(모든
노드에서 실행) $HADOOP_HOME/etc/hadoop/core-site.xml //localhost를
master로 수정 <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://master:9000</value> </property> </configuration> 10. hdfs-site.xml
수정 $HADOOP_HOME 하위에
namenode와 datanode 디렉토리를 만든다.(master) mkdir $HADOOP_HOME/namenode chown root -R $HADOOP_HOME/namenode chmod 777 $HADOOP_HOME/namenode // mkdir $HADOOP_HOME/datanode chown root -R $HADOOP_HOME/datanode chmod 777 $HADOOP_HOME/datanode // $HADOOP_HOME
하위에 datanode 디렉토리를 만든다.(slave1,
slave2, slave3, slave4) mkdir $HADOOP_HOME/datanode chown root -R $HADOOP_HOME/datanode chmod 777 $HADOOP_HOME/datanode hdfs-site.xml
수정(master) $HADOOP_HOME/etc/hadoop/hdfs-site.xml <configuration> <property> <name>dfs.replication</name> <value>2</value> </property> <property> <name>dfs.permissions</name> <value>false</value>
</property>
<property> <name>dfs.namenode.name.dir</name> <value>file:/home/centos/hadoop-2.9.2/namenode</value>
</property> //
<property> <name>dfs.datanode.data.dir</name> <value>file:/home/centos/hadoop-2.9.2/datanode</value> </property> // </configuration> hdfs-site.xml
수정(slave1, slave2, slave3) $HADOOP_HOME/etc/hadoop/hdfs-site.xml <configuration>
<property> <name>dfs.replication</name> <value>2</value>
</property>
<property> <name>dfs.permissions</name> <value>false</value>
</property>
<property> <name>dfs.datanode.data.dir</name> <value>file:/home/centos/hadoop-2.9.2/datanode</value>
</property> </configuration> 11. 잡트래커 설정(모든
노드) 탬플릿 카피 mapred-site.xml 만들기 cp
$HADOOP_HOME/etc/hadoop/mapred-site.xml.template
$HADOOP_HOME/etc/hadoop/mapred-site.xml vi $HADOOP_HOME/etc/hadoop/mapred-site.xml <?xml version="1.0"?> <?xml-stylesheet
type="text/xsl" herf="configuration.xsl"?> <configuration>
<property> <name>mapreduce.framework.name</name> <value>yarn</value>
</property> </configuration> yarn-site.xml
편집 vi $HADOOP_HOME/etc/hadoop/yarn-site.xml <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> 12. master , slaves 파일 편집(master만) vi $HADOOP_HOME/etc/hadoop/masters master vi $HADOOP_HOME/etc/hadoop/slaves master slave1 slave2 slave3 slave4 13. 네임노드 포맷(master에서만
실행) 하둡 가동, HDFS폴더 생성 $HADOOP_HOME/bin/hdfs namenode -format 14. 방화벽을 내림(모든
노드) systemctl stop firewalld.service systemctl disable firewalld.service 15. DFS, Yarn 시작(master에서만
실행) start-dfs.sh (NameNode, SecondaryNameNode,
DataNode가 실행됨) start-yarn.sh (master에서는 ResourceManager와 NodeManager가 실행되고, slave에서는 NodeManager가 실행됨) start-dfs.sh //종료는 stop-dfs.sh start-yarn.sh 프로세스 확인 jps slave1, slave2, slave3에서도 jps를 실행하여 DataNode가 구동되는지 확인한다. 16. 구동이 제대로 되지 않는다면 명령어 구문 다시 확인 17. 하둡2 웹 인터페이스
확인 (master에서 실행) https://master:50070 18. yarn 웹 인터페이스
(master에서 실행) http://master:8088