빅데이터

빅데이터 분산모드 구축 (수정중)

nunsaram 2019. 2. 25. 11:51

빅데이터 분산모드 구축

분산 모드를 설치하기 전, 단일노드(Master Node)를 먼저 설치를 하고 vmware clone 생성을 통해, slave노드들을 만들어 분산파일 시스템을 구축

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 파일 마지막 줄에 위의 명령어를 입력해 jdkPATH를 지정해준 뒤, 파일을 저장한다.




/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/hostsvi로 열어 준다.




모든 노드에 위의 내용을 추가한다.

 



각각의 노드에 ping명령어를 입력하여 네트워크가 연결되는지 확인한다.

 



SSH 접속을 할 때 인증이 필요한데, 인증키를 복사하면 SSH 접속 시 인증을 하지 않아도 된다.

# scp -rp ~/.ssh/authorized_keys root@slave1:~/.ssh/authorized_keys 명령어를 입력하여, 이전에 master에서 생성한 공개키를 모든 slave 노드로 복사 한다. (master에서 실행)

 

 

7. 노드들간의 SSH 접속 확인




master 노드에서 slave1, slave2, slave3, slave4SSH를 접속 테스트를 한다.

이 때 원래는 각 노드의 인증 비밀번호를 입력해야 하지만 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