빅데이터/하둡 2

하둡 2.0 튜토리얼 - (3) 하둡 설치

Johnny Yoon 2019. 7. 21. 18:10
728x90
반응형

 

 

 

 

 

하둡 설치

아래 튜로리얼은 hadoop 1.x와 관련된 파일인 hadoop디렉토리와 hadoop-data디렉토리를 삭제한 뒤 진행됩니다.

 

 

하둡 2.7 다운로드

먼저 하둡2의 특정 버전을 다운로드 받겠습니다.

하둡은 이미 3.x이상의 버전이 출시되고 있기 때문에 특정 버전들만 공식적으로 나와있습니다.

우리가 다운로드할 2.7.2버전은 2.7.6버전으로 stable release되어있고 2.7.2버전은 아카이브 되어있습니다.

따라서 아래 링크를 통해 다운받아 주겠습니다.

https://archive.apache.org/dist/hadoop/common/hadoop-2.7.2/hadoop-2.7.2.tar.gz

 

직접 링크로 다운받으셔도 되고 wget명령어를 이용하셔도 됩니다.

> wget https://archive.apache.org/dist/hadoop/common/hadoop-2.7.2/hadoop-2.7.2.tar.gz

 

하둡 파일 전송

먼저 해당 파일을 doop01기기에 scp를 사용해 옮겨줍니다.

전송이 끝나면 해당 파일의 압축을 풀어줍니다.

> tar xvfz hadoop-2.7.2.tar.gz

 

압축을 풀고나면 hadoop-2.7.2 디렉터리가 생깁니다.

이 폴더를 hadoop으로 심볼릭 링크를 만들어 줍니다.

> ln -s hadoop-2.7.2 hadoop

 

하둡 설정

이제 하둡의 설정파일들을 수정해주겠습니다.

 

hadoop-env.sh

먼저 hadoop-env.sh 파일을 수정하겠습니다.

다은 두줄을 파일에 넣어줍니다.

export JAVA_HOME=/usr/local/java
export HADOOP_PID_DIR=/home/hadoop/hadoop-2.7.2/pids

하둡 1 튜토리얼을 보셨다면 아시겠지만, Java와 하둡의 pids디렉토리를 하둡의 환경변수로 설정해준것입니다.

 

masters

하둡 2.x버전대는 masters파일이 자동으로 생성되어있지 않습니다.

필요하다면 생성하면 되지만 우리는 secondaryNameNode가 없는 HA방식으로 설정할 것이기 때문에,

만들어주지 않겠습니다.

 

slaves

slaves파일에는 다음과같이 네개의 모든 기기를 작성해줍니다.

doop01
doop02
doop03
doop04

 

core-site.xml

core-site.xml파일에는 기본적인 하둡 설정을 작성해줍니다.

아래 설정에서 눈여겨 봐야할 것은 주키퍼 서버들의 설저을 ha.zookeeper.quorum에 설정해 주었다는 것입니다.

아래 내용을 사용해 configuration태그 안의 값들을 수정해줍니다.

<configuration>
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://doop-cluster</value>
  </property>
  <property>
    <name>ha.zookeeper.quorum</name>
    <value>doop01:2181,doop02:2181,doop03:2181</value>
  </property>
</configuration>

 

hdfs-site.xml

이 설정파일은 꽤 깁니다. 작성하실 때 주의하시기 바랍니다.

<configuration>
  <property>
    <name>dfs.namenode.name.dir</name>
    <value>/home/doop/data/dfs/namenode</value>
  </property>
  <property>
    <name>dfs.datanode.data.dir</name>
    <value>/home/doop/data/dfs/datanode</value>
  </property>
  <property>
    <name>dfs.journalnode.edits.dir</name>
    <value>/home/doop/data/dfs/journalnode</value>
  </property>
  <property>
    <name>dfs.nameservice</name>
    <value>doop-cluster</value>
  </property>
  <property>
    <name>dfs.ha.namenodes.doop-cluster</name>
    <value>nn1,nn2</value>
  </property>
  <property>
    <name>dfs.namenode.rpc-address.doop-cluster.nn1</name>
    <value>doop01:8020</value>
  </property>
  <property>
    <name>dfs.namenode.rpc-address.doop-cluster.nn2</name>
    <value>doop02:8020</value>
  </property>
  <property>
    <name>dfs.namenode.http-address.doop-cluster.nn1</name>
    <value>doop01:50070</value>
  </property>
  <property>
    <name>dfs.namenode.http-address.doop-cluster.nn2</name>
    <value>doop02:50070</value>
  </property>
  <property>
    <name>dfs.namenode.shared.edits.dir</name>
    <value>qjournal://doop01:8485;doop02:8485;doop03:8485/doop-cluster</value>
  </property>
  <property>
    <name>dfs.client.failover.proxy.provider.doop-cluster</name>
    <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfigureFailoverProxyProvider</value>
  </property>
  <property>
    <name>dfs.ha.fencing.methods</name>
    <value>ssfence</value>
  </property>
  <property>
    <name>dfs.ha.fencing.ssh.private-key-files</name>
    <value>/home/doop/.ssh/id_rsa</value>
  </property>
  <property>
    <name>dfs.ha.automatic-failover.enabled</name>
    <value>true</value>
  </property>
</configuration>

파일을 잘 살펴보시면 HA의 네임노드들에 대한 설정들이 많이 있습니다.

doop-cluster라는 것은 여기서 새로 정의해 주는 것으로, 네임노드들의 클러스터를 의미합니다.

 

저널노드

파일을 조금 살펴보면, journalnode라는 단어가 눈에 띌 것입니다.

이 저널노드라는것은 네임노드들이 에디트로그, 즉 하둡의 상태나 파일 수정 기록등을 기록하는 파일입니다.

이 저널노드는 기본적으로 총 3대가 필요합니다.

 

mapred-site.xml

맵리듀스에 관한 설정을 해줍니다.

mapred-site.xml파일은 기본 제공되지 않습니다.

다라서 mapred-site.xml.template를 복사하셔서 수정하시기 바랍니다.

아래는 하둡2의 맵리듀스 프레임워크인 Yarn을 맵리듀스로 사용하겠다는 의미입니다.

<configuration>
  <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>
</configuration>

 

yarn-env.sh

yarn-env.sh는 이전 버전의 hadoop-env.sh와 비슷하게 yarn에 관련된 환경변수 설정을 해주는 파일입니다.

여기서 우리는 Heap 사이즈만 수정해줍니다.

아래는 Heap사이즈의 최대값을 1기가로 설정하겠다는 의미입니다.

JAVA_HEAP_MAX=Xmx1000m

 

yarn-site.xml

yarn-site.xml파일을 이용해 yarn관련 설정을 해줍니다.

<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.nodemanager.local-dirs</name>
        <value>/home/doop/data/yarn/nm-local-dir</value>
  </property>
  <property>
        <name>yarn.resourcemanager.fs.state-store.uri</name>
        <value>/home/doop/data/yarn/system/rmstore</value>
  </property>
  <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>doop01</value>
  </property>
  <property>
        <name>yarn.web-proxy.address</name>
        <value>0.0.0.0:8089</value>
  </property>
</configuration>

 

하둡 설정 전송

설정이 끝났으면 이제 이 모든 설정들을 한번에 다른 doop서버들로 전송해주겠습니다.

scp의 -rp옵션을 사용하면 모든 하위 디렉토리를 포함해 전송할 수 있습니다.

> scp -rp hadoop-2.7.2/ doop@doop02:~/
> scp -rp hadoop-2.7.2/ doop@doop03:~/
> scp -rp hadoop-2.7.2/ doop@doop04:~/

 

파일이 많아 시간이 조금 걸리기 때문에 압축한 뒤 보내줘도 됩니다.

다음 포스팅에서는 하둡을 구동시겨보도록 하겠습니다.

 

 

참고자료

이 포스팅은 "시작하세요! 하둡 프로그래밍" 책의 예제를 무작정 따라해본 포스팅입니다.

https://wikibook.co.kr/beginning-hadoop-programming-2rev/

728x90
반응형