딜미의 잡다한 IT 이야기...

HOW TO CONFIGURATION Hadoop ON Ubuntu 14.04 본문

Storage/공부자료

HOW TO CONFIGURATION Hadoop ON Ubuntu 14.04

딜미 2017. 3. 22. 15:44

 

 

예전에 Hadoop 공부 하면서 만들었던 자료 입니다. 

부족한 부분이 많지만 참조 용도로 보시면 좋을 것 같습니다. 

 

 

 

HOW TO CONFIGURATION Hadoop ON Ubuntu 14.04


 

OS : Ubuntu14.04로 진행 하였습니다.

 

NODE : 3개의 Node로 구성을 진행 하였습니다.

 

각각의 노드는 동일 유저명 으로 생성을 진행하였고, 노드별 분류 할 수있게 Hostname를 생성하였습니다.

 

구성은 아래와 같습니다.

 

역할

Hostname

ID

Master

Hadoop-m

user

Slave1

Hadoop-node1

user

Slave2

Hadoop-node2

user

 

기본 네트워크 설정 및 방화벽, SSH, Apache 설치 관련은 생략 하겠습니다.

 

. /etc/hosts 파일 작성 (모든 노드의 설정에 맞게 작성해야합니다.

 예시) 192.168.0.10 Hadoop-m

      192.168.0.11 Hadoop-node1

      192.168.0.12 Hadoop-node2


 

. SSH 설정 (꼭 필요합니다. .)

Ssh keygen을 이용하여 키 값을 생성 합니다.

 

마스터에서 노드로 접속을 진행해야 하기 때문에 마스터에서 키 값을 생성 후 노드에 저장하는 작업이 필요합니다.

 

Ssh-keygen –t rsa 후 생성이 될 때 까지 Enter 키로 진행합니다.

 


 

제대로 생성이 되었는지는 아래의 명령어로 확인 합니다.

 ls –al ~/.ssh/

 


위와 같이 나오면 정상적으로 생성 된 것입니다.

 

키 생성 후 Slave 노드에 .ssh 폳더 생성을 진행합니다.

 

Ex) user@Hadoop-m:~$ ssh user@Hadoop-node1 mkdir -p .ssh



 

생성된 키 값을 통신을 위해 Master 노드 및 나머지 노드에 전송을 진행합니다.

 

Ex) scp /home/user(ssh가 설치 되어 있는 경로)/.ssh/id_rsa.pub user@Hadoop-node1:id_rsa.pub

 

아래와 같은 메시지가 나오면 성공적으로 키 값이 이동된 것입니다.

id_rsa.pub                                                               100%  395     0.4KB/s   00:00 

 

이제 전송받은 파일을 authorized_keys 추가해 주면 된다.

 

cat /home/user/id_rsa.pub >> /home/user/.ssh/authorized_keys

 

ssh 로 패스워드 없이 정상 접속이 되는지 확인해 봅니다.

 

 

 

 add-apt-repository 를 사용하게 하기 위에 아래의 명령어를 모든 노드에 입력합니다.

 

sudo apt-get install software-properties-common

 

자바 설치를 진행합니다. ( 모든 노드에 진행해야 합니다.)

 

sudo add-apt-repository ppa:webupd8team/java

sudo apt-get update

sudo apt-get install oracle-java7-installer

 

모든 노드에 설치가 완료 되면 마스터 노드에 하둡을 다운로드 받는 작업을 진행합니다.

 

Wget https://archive.apache.org/dist/hadoop/core/hadoop-2.6.0/hadoop-2.6.0.tar.gz

 

다운로드가 끝나면 압출을 풀고 설치 진행을 할 디렉토리 를 생성해 줍니다.

 

Ex) sudo mkdir –p /data

   sudo chown –R user:user /data/

 

/data/ hadoop 압축파일을 풀어줍니다.

 

user@Hadoop-m:/data$ sudo tar xvzf hadoop-2.6.0.tar.gz

 

이제 실제로 저장될 디렉토리를 만들어 줍니다.(모든 노드에서 진행해야 합니다.)

 

 

sudo mkdir –p /data1/hadoop/tmp

sudo mkdir –p /data1/hadoop/dfs/name

sudo mkdir –p /data1/hadoop/dfs/data

 

권한 설정을 해줍니다.

sudo chown –R user:user /data1/hadoop

 

hadoop-2.6.0/etc/hadoop/core-site.xml 수정

 

<configuration>

<property>

    <name>fs.defaultFS</name>

    <value>hdfs://Hadoop-m:9000</value>

  </property>

  <property>

   <name>hadoop.tmp.dir</name>

   <value>/data1/hadoop/tmp</value>

  </property>

</configuration>

 

 

 

 

 

 

 

hadoop-2.6.0/etc/hadoop/hdfs-site.xml 수정

 

<configuration>

<property>

        <name>dfs.replication</name>

        <value>2</value>

    </property>

    <property>

        <name>dfs.namenode.name.dir</name>

        <value>file:/data1/hadoop/dfs/name</value>

        <final>true</final>

    </property>

    <property>

        <name>dfs.datanode.data.dir</name>

        <value>file:/data1/hadoop/dfs/data</value>

        <final>true</final>

    </property>

 

    <property>

        <name>dfs.permissions</name>

        <value>false</value>

    </property>

</configuration>

 

 

 

dfs.replication  HDFS 내에서 몇개의 블록을 복사해서 유지할 것인가 하는 것입니다. 숫자가 커질수록 안정도는 올라가지만 속도는 저하됩니다. 우리는 그냥 2로 정합니다. dfs.namenode.name.dir  dfs.datanode.data.dir 은 위에서 지정해 준 디렉토리를 지정해줍니다.

 

hadoop-2.6.0/etc/hadoop/mapred-site.xml 수정

 

<configuration>

<property>

      <name>mapreduce.framework.name</name>

      <value>yarn</value>

  </property>

  <property>

    <name>mapred.local.dir</name>

    <value>/data1/hadoop/hdfs/mapred</value>

  </property>

  <property>

    <name>mapred.system.dir</name>

    <value>/data1/hadoop/hdfs/mapred</value>

  </property>

</configuration>

 

hadoop-2.6.0/etc/hadoop/yarn-site.xml 수정

 

 

 

<configuration>

 

<!-- Site specific YARN configuration properties -->

<property>

    <name>yarn.nodemanager.aux-services</name>

    <value>mapreduce_shuffle</value>

  </property>

  <property>

    <name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>

    <value>org.apache.hadoop.mapred.ShuffleHandler</value>

  </property>

  <property>

    <name>yarn.resourcemanager.resource-tracker.address</name>

    <value>Hadoop-m:8025</value>

  </property>

  <property>

    <name>yarn.resourcemanager.scheduler.address</name>

    <value>Hadoop-m:8030</value>

  </property>

  <property>

    <name>yarn.resourcemanager.address</name>

    <value>Hadoop-m:8035</value>

  </property>

</configuration>

 

 

hadoop-2.6.0/etc/hadoop/masters 생성 후 파일에 마스터 서버 호스트네임을 입력합니다.

 

user@Hadoop-m:/data/hadoop-2.6.0/etc/hadoop$ sudo vi masters

 Hadoop-m

 

hadoop-2.6.0/etc/hadoop/slaves 파일에 datanode로 사용할 서버들을 적어줍니다.

user@Hadoop-m:/data/hadoop-2.6.0/etc/hadoop$ sudo vi slaves

 

Hadoop-node1

Hadoop-node2

 

hadoop-2.6.0/etc/hadoop/hadoop-env.sh 수정

 

위의 파일을 열어 export JAVA_HOME=/usr/lib/jvm/java-7-oracle 로 수정합니다.


 

Rsync를 이용하여 datanodehadoop설정을 뿌려줍니다.

 

rsync -avz /data/hadoop-2.6.0 user@Hadoop-node1:/data/

rsync -avz /data/hadoop-2.6.0 user@Hadoop-node2:/data/

 

마스터 노드에서 설정한 값을 나머지 datanode에 동일하게 설정 할 수 있습니다.

 

Hadoop 실행

 

Hadoop 를 실행 하기 전에 Hadoop 포맷이 필요합니다.

 

Hadoop가 설치 되어 있는 경로로 접근하여 명령어를 실행합니다.

 


 

user@Hadoop-m:/data/hadoop-2.6.0/bin$ ./hadoop namenode –format

 

 

 

포맷이 완료 된 후 분산파일 시스템 및 맵리듀스 시스템을 구동 합니다.



 

user@Hadoop-m:/data/hadoop-2.6.0/sbin$ ./start-dfs.sh



user@Hadoop-m:/data/hadoop-2.6.0/sbin$ ./start-yarn.sh



 

각 노드 별로 jps 명령어를 이용하여 프로세스가 정상적으로 올라왔는지 확인합니다.

 


 

웹브라우져 에서 마스터 서버의 ip:8088을 입력 하여 정상 작동 되는지 확인 합니다.

 


 

Hadoop Test 해보기.

 

user@Hadoop-m:/data/hadoop-2.6.0/bin$ ./hadoop fs -mkdir /hdinput  (태스트를 위해 /hdinput 디렉토리 를 생성해 줍니다.)

 

user@Hadoop-m:/data/hadoop-2.6.0/bin$ ./hdfs dfs -copyFromLocal /data/hadoop-2.6.0/etc/hadoop/*.xml /hdinput (생성한 hdinput 디렉토리에 테스트를 위한 파일들을 복사해 줍니다.)

 

user@Hadoop-m:/data/hadoop-2.6.0/bin$ ./hadoop jar /data/hadoop-2.6.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar grep /hdinput hdlatestoutput 'dfs[a-z.]+' (위의 경로에 있는 example 파일을 이용하여 job를 진행합니다.)

 

 


 

user@Hadoop-m:/data/hadoop-2.6.0/bin$ ./hdfs dfs –lsr (테스트를 진행한 job 결과 확인 방법)




 

웹브라우저에서도 확인이 가능합니다.




 

 

확인 후 user@Hadoop-m:/data/hadoop-2.6.0/bin$ ./hadoop dfs -rmr hdlatestoutput 명령어로 output 디렉토리를 지워줘야 다음번 Job 에서 already existed 오류가 안생긴다.

 


 

참고 사이트


https://opentutorials.org/module/432/3742  (SSH 설정)

 

http://crazia.tistory.com/entry/HADOOP-%ED%95%98%EB%91%A1-Hadoop-260-%EC%84%A4%EC%B9%98 (Hadoop 설치 가이드)

 

http://inthound.blogspot.kr/2015/04/how-to-install-hadoop-260-in-ubuntu.html (Hadoop Test관련)

 

https://gist.github.com/piyasde/680e2066fce63df2f102 (Hadoop Test관련)

 

http://stackoverflow.com/questions/16797358/deleting-file-folder-from-hadoop (Hadoop Test관련)



부족한 부분이 많습니다. 혹시라도 잘못된 내용이 있다면 답변 부탁드립니다.

'Storage > 공부자료' 카테고리의 다른 글

vSAN 소개  (0) 2019.09.24
Scale Up Vs Scale Out 방식 소개  (0) 2017.03.31
스냅 샷이란?  (0) 2017.03.31
HOW TO INSTALL CEPH(Release-HAMMER) ON CENTOS 6.7(FINAL)  (1) 2017.03.22
Storage란 무엇일까?  (0) 2017.03.20
Comments