관리 메뉴

Hee'World

[1004jonghee]CentOS 6.4에 Hadoop 설치하기(네임노드,세컨더리노드,데이타노드1,2) 본문

BigData/Hadoop

[1004jonghee]CentOS 6.4에 Hadoop 설치하기(네임노드,세컨더리노드,데이타노드1,2)

Jonghee Jeon 2013. 7. 8. 14:08

 

먼저 저는 VMware에 CentOS 6.4 버전으로 4대의 가상 머신을 만들어서 설치를 하였습니다.

 

1번 머신은 NameNode

2번 머신은 DataNode01, SecondaryNode

3번 머신은 DataNode02

4번 머신은 DataNode03

 

이렇게 구성을 하였습니다.

 

바로 설치에 들어가겠습니다.

먼저 하둡 설치 전에 해야 할 설정 및 설치가 있습니다. OraclJDK설치와 SSH 설정, hosts파일 설정 ,profile설정 입니다.

 

CentOS6.4를 설치하면 디폴트로 OpenJDK가 설치되어 있습니다. 자세히 아는 것은 아니지만 OpenJDK는 오픈소스로 구현된 JDK 입니다. 자주 업데이트도 되고 안정성 또한 떨어진다고 알고 있습니다. 반면 OracleJDK는 OpenJDK보다는 안정성이 훨쒼 좋기 때문에 OpenJDK를 삭제하고 OracleJDK를 설치하는 것입니다. (틀렸다면 지적해주세요 ㅠㅠㅠㅠㅠㅠ)

그리고 자바설치는 4대 모두 동일하게 작업해주세요.

 

일단 계정으로 접속 되어 있다면 root 계정으로 전환합니다.

그리고 rpm -qa | grep java 이렇게 명령어를 입력합니다.

그러면 설치된 openjdk가 보여집니다.

여기서 yum remove java-1.6.0-openjdk-1.6.0.0-1.50.1.11.5.el6_3.x86_64 이렇게 입력하여 openjdk1.6버전을 삭제합니다.

 

 

 

중간에 y/N 물음이 나오면 y를 입력하여 줍니다.

 

 

openjdk1.6이 삭제가 완료되면 나머지 1.7버전도 지워줍니다.

 

여기도 중간에 y/n 물음이 나오면 y를 입력하여 줍니다.

 

삭제가 다 되어지고 java -version 이 명령어를 입력 하여 자바 버전이 확인이 되어 지는지 확인합니다. (확인이 안되어집니다.)

 

그럼 Openjdk를 삭제 하였으니 OracleJDK를 설치하겠습니다. 

오라클 홈페이지에서 Linux64bit 버전을 다운로드 합니다.

 

다운로드를 한 곳에서 압축을 풀어 줍니다. 리눅스에서는 압축을 푸는 것으로 설치가 완료 됩니다.

압축이 풀어진 디렉토리를 /usr/local/jdk 로 이동하여 줍니다.

이동을 한 뒤에 환경 설정을 해주어야 합니다. 

vi /etc/profile 를 입력하여 줍니다.( root계정에서 해주셔야 하며 4대 모두 해주세요.) 

profile을 열었으면 맨 아래쪽에

export JAVA_HOME=/usr/local/jdk

export HADOOP_HOME=/usr/local/hadoop

export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin

를 입력하고 저장한 뒤 나옵니다.

 

나와서는 source /etc/profile 를 입력하여 변경된 파일을 적용시켜줍니다.

 

 

적용을 시켰다면 java -version을 입력하여 자바가 제대로 설치가 되었는지 확인합니다.

위에 그림처럼 나온다면 제대로 설치가 되어진 것입니다.

 

그다음은 hosts 파일을 설정하는 단계입니다.(4대 모두 설정해주셔야 합니다.) 

vi /etc/hosts 라고 입력하여 줍니다.

 

2번째줄 쓰여져 있는데 그아래에

각 노드의 아이피와 네임을 입력하여 줍니다(네임은 원하는 네임을 적어주시면 됩니다.)

 

 

저장을 하고 나온 뒤 more /etc/hosts 를 입력하여 제대로 입력 되었는지 확인 합니다.

 

 

다음은 SSH 설정입니다.

하둡은 SSH 프로토콜을 이용하여 하둡클러스터간에 내부 통신을 수행합니다. 여기서 SSH 프로토콜을 이용하지 못한다면 하둡을 실행 시킬수 없는 상황이 벌어집니다. 이러한 상황을 막고자 네임노드에서 SSH 공개키를 설정하고, 이 공개키를 전체 서버에 복사하는 작업을 해주어야 합니다. * 시작하세요 하둡 프로그래밍 p. 29 쪽에 있는 내용입니다.

저는 일단계정에서 계속 시도를 해보았지만 계속 실패를 거듭하여서 ㅠㅠ root계정에서 설치를 하였습니다.

root계정에서 설치하고 사용할 경우 보안상에서 문제가 있을 수 있으며, 환경파일을 잘 못 건들여서 운영상에 문제가 생길 수도 있습니다.

 

먼저 root계정 최상위 위치에서 ssh-keygen -t rsa 를 입력하여 ssh 공개키를 생성하여 줍니다

그리고 나서 다음 메세지에서는 다른거 입력 할 거 없이 엔터를 쳐주시면 됩니다.

4대 모두 공개키를 생성해주시고 그다음은 네임노드에서 작업해주시면 됩니다. 

그 다음 cd .ssh 하여 .ssh 디렉토리로 이동합니다.

디렉토리안에 id_rsa, id_rsa.pub 이렇게 두개의 파일이 있어야 정상입니다.

id_rsa.pub 파일을 authorized_keys 파일로 복사하여 줍니다.

그다음은 나머지 노드들에서 생성된 공개키를 authorized_keyz로 복사하여 가져옵니다.

 

 

more authorized_keys 입력하여 내용보면 모든 노드들의 공개키가 authorized_keys파일 하나로 묶어 진걸 볼 수 있습니다.

 

scp -rp authorized_keys root@SNameNode:~/.ssh/authorized_keys

scp -rp authorized_keys root@DataNode02:~/.ssh/authorized_keys

scp -rp authorized_keys root@DataNode03:~/.ssh/authorized_keys

이렇게 입력하고 패스워드는 각 루트의 비밀번호를 입력하며,

하나로 묶어진 공개키를 각 노드들로 복사하여 줍니다.

그다음 ssh SNameNode date 이렇게 입력하여 패스워드를 묻지 않고 그 노드의 날짜와 시간을 알려주면 제대로 설정이 되어 진것입니다.

 

 

드디어 하둡 설치 입니다. (저는 1.1.2 버전을 설치하였습니다.)

먼저 하둡을 다운로드 합니다. 

홉페이지에서 다운로드 하셔도 되고  wget 명령어를 이용하여 다운로드 하셔도 됩니다.

 

 

다운로드 하는 동안에 디렉토리 3개를 생성하여 줍니다.

 

 

하둡을 다운로드 하셨다면 하둡파일의 압축을 풀어줍니다.

 

 

압축을 푸셨다면 하둡 디렉토리를 mv hadoop-1.1.2 /usr/local/hadoop 이렇게 이동합니다.

이동 시킨뒤 cd /usr/local/hadoop/conf 디렉토리로 이동합니다.

conf 디렉토리 안에 보시면 여러 파일이 있는데 여기서 우리가 수정해 주어야 할 파일이 있습니다.

core-site.xml -> hdfs와 맵 리듀스에서 공통적으로 사용할 환경 정보를 설정합니다.

hadoop-env.sh -> 하둡을 실행하는 셸 스크립트 파일에서 필요한 환경 변수를 설정합니다.

hdfs-site.xml -> HDFS에서 사용할 환경 정보를 설정합니다.

mapred-site.xml -> 맵리듀스에서 사용할 환경 정보를 설정합니다.

masters -> 보조 네임노드(SecondaryNode)를 실행할 서버를 설정합니다.

slaves -> 데이터노드를 실행할 서버를 설정합니다.

 

 

conf 디렉토리 안에서 vi core-site.xml 를 입력하여 파일을 열고 아래의 내용을 입력합니다. 

 

 

다음은 vi hadoop-env.sh 파일을 열고 export JAVA_HOME=/usr/local/jdk 를 입력하여 줍니다. 

 

 

다음은 hdfs-site.xml 파일을 열고 아래의 내용을 입력하여 줍니다. 

 

 

그다음은 mapred-site.xml 파일을 열고 아래의 내용을 입력하여 줍니다. 

 

 

다음은 masters 파일을 열고 localhost를 지우고 secondary노드 네임(hosts 파일에 적었던 이름)을 적어줍니다. 

 

 

다음은 slaves 파일을 열고 데이터노드가 될 네임들을 적어줍니다. 

 

 

6개의 파일을 다 입력하였다면 이제 하둡파일을 압축하여 세컨더리노드,데이터노드01,데이터노드02에 배포합니다. 

압축 된 파일을 scp 명령어를 이용하여 배포하여 줍니다.

scp -rp hadoop.tar.gz SNameNode:/usr/local

scp -rp hadoop.tar.gz DataNod02e:/usr/local

scp -rp hadoop.tar.gz DataNode03:/usr/local

 

 

배포한 파일을 확인 후 압축을 풀어 줍니다.(세컨더리 노드) 

 

배포된 파일을 확인 후 압축을 풀어줍니다.(데이터노드02) 

 

배포된 파일을 확인 후 압축을 풀어 줍니다.(데이터노드03) 

 

 

압축을 다 풀었다면 이제 네임노드를 초기화해주어야 합니다.

hadoop 폴더에 들어가서 ./bin/hadoop namenode -format을 실행합니다.

 

 

중간에 Y or N 이 나오면 Y를 입력하여 줍니다.

 

초기화가 다 되었으면 hadoop shell을 실행하여 줍니다.

hadoop폴더안에서 ./bin/start-all.sh를 실행합니다. 

쉘을 실행하고 나서

jps를 입력하여

jps,jobTracker,NameNode가 떠 있어야 하며

 

세컨더리 노드에서는 SecondaryNameNode,TaskTracker,DataNode가 떠 있어야 하며 

 

데이터노드에서는 DataNode, TaskTracker가 떠 있어야 합니다. 

이렇게 모두 성공하셨다면 하둡설치는 완료 되신겁니다.!!!!^^

수고 하셨습니다.

-------------------------------------------------------

만약 네임노드는 떠 있고 세컨더리,데이터노드가 죽는다면

여러 문제가 있을 수가 있습니다. 간혹, 하둡 환경파일중에 오타를 치셨다던가, 경로를 잘못 지정하셨다 던다,

아니면 방화벽 문제가 있을 수 있습니다.

방화벽문제는 방화벽을 해제 해주시고, 하둡 bin 디렉토리 안에 있는 stop-all.sh를 실행하여 중지하고

다시 start-all.sh를 실행하시면 됩니다.

Comments