EXCELSIOR

하둡2 설치 및 실행 (가상 분산 모드) 본문

DataBase/Hadoop

하둡2 설치 및 실행 (가상 분산 모드)

Excelsior-JH 2016. 11. 8. 20:19

1. 프로토콜 버퍼 설치 (Protocol Buffer)

: 프로토콜 버퍼는 데이터를 연속된 비트로 만들고, 이렇게 만들어진 비트를 해석해 원래의 데이터를 만들 수도 있ㄷ. 현재 다양한 시스템이 이기종 혹은 내부 프로세스 간의 통신에 프로토콜 버퍼를 사용하고 있으며, 하둡2도 내부 데몬 간의 데이터 통신을 위해 프로토콜 버퍼를 적용했다.


하둡2에서 사용하는 프로토콜 버퍼 버전은 protobuf-2.5.0이다. 프로토콜 버퍼는 버전 간의 상호호환성을 지원하지 않으므로 다른 버전을 설치하지 않도록 주의해야 한다. 설치 파일을 내려받은 뒤 (/usr/local 디렉터리에 다운받았다고 가정)

 
cd /usr/local

tar xvfz protobuf-2.5.0.tar.gz
cd protobuf-2.5.0
./configure
make
make install

설치가 완료되면 다음과 같이 protoc 명령어를 실행해 정확한 버전이 출력되는지 확인한다.

 
protoc --version
libprotoc 2.5.0

만약 에러가 날 경우, ldconfig 후에 다시 입력 해본다.
 
ldconfig
protoc --version
libprotoc 2.5.0



2. 하둡2 다운로드 및 설치


1) 하둡2 다운로드 및 압축 파일 해제

 
wget "http://mirror.apache-kr.org/hadoop/common/stable2/hadoop-2.7.3.tar.gz"

cd /usr/local

tar xvfz hadoop-2.7.3.tar.gz

#압축풀고 난 뒤 hadoop-2.7.3 디렉터리에 대한 심볼릭 링크를 생성

ln -s hadoop-2.7.3 hadoop2


2) 하둡2 환경설정 파일 수정
: 한 대의 서버에서 모든 데몬을 실행하는 가상 분산 모드로 설치한다. 수정 파일은 etc/hadoop에 저장되어 있다.

① hadoop-env.sh 수정
 
# The java implementation to use.
export JAVA_HOME=/usr/lib/jvm/java-8-oracle


export HADOOP_PID_DIR=/usr/local/hadoop-2.7.3/pids
export HADOOP_SECURE_DN_PID_DIR=${HADOOP_PID_DIR}


② masters 수정 및 slaves 수정

: 가상 분산 모드로 설치할 경우 보조네임노드를 실행해야 한다. 네임노드HA를 구성할 경우 스탠바이 네임노드가 보조네임노드의 기능을 대체한다. 하지만 가상 분산 모드로는 네임노드 HA를 구성할 수 없기 때문에 보조네임노드를 반드시 실행해야 한다. 참가로 하둡과는 달리 하둡2의 환셩설정 디렉터리에는 masters 파일이 생성돼 있지 않다. 따라서 vi에디터로 masters 파일을 생성해야 한다.

slaves 파일에는 데이터노드 호스트 목록을 설정해야 한다. 가상 분산 모드에서는 다음과 같이 설정한다.


 
vi masters
localhost #혹은 hostname

vi slaves
localhost #혹은 hostname

③ core-site.xml 수정

: 하둡2에서는 fs.default.name 속성은 사용 중지(deprecated)됐기 때문에 fs.defaultFS를 사용한다.

 
<configuration>
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://localhost:9010</value>
        </property>
</configuration>

④ hdfs-site.xml 수정

<configuration>
        <property>
                <name>dfs.replication</name>
                <value>1</value>
        </property>
       <property>
                <name>dfs.namenode.name.dir</name>
                <value>/usr/local/hadoop-2.7.3/data/dfs/namenode</value>
        </property>
        <property>
                <name>dfs.namenode.checkpoint.dir</name>
                <value>/usr/local/hadoop-2.7.3/data/dfs/namesecondary</value>
        </property>
        <property>
                <name>dfs.dataode.data.dir</name>
                <value>/usr/local/hadoop-2.7.3/data/dfs/datanode</value>
        </property>
        <property>
                <name>dfs.http.address</name>
                <value>localhost:50070</value>
        </property>
        <property>
                <name>dfs.secondary.http.address</name>
                <value>localhost:50090</value>
        </property>
</configuration>


⑤ mapred-site.xml 수정
<configuration>
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>
</configuration>


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


3. 하둡2 실행

#네임노드 초기화
bin/hdfs namenode -format

#하둡2 실행
sbin/start-all.sh

#확인
jps
17974 NameNode
18118 DataNode
18461 ResourceManager
18301 SecondaryNameNode
18878 Jps
18767 NodeManager



하둡2는 얀을 위한 웹 인터페이스 외에도 맵리듀스 잡의 이력만 별도로 볼 수 있는 서버를 제공한다. 이 서버는 다음과 같이 mr-jobhistory-daemon.sh 스크립트를 이용해 실행한다.

 
sbin/mr-jobhistory-daemon.sh start historyserver
starting historyserver, logging to /usr/local/hadoop-2.7.3/logs/mapred-root-historyserver-cjh.out

마지막으로 웹 프록시 서버를 실행한다. 프록시 서버가 실행되고 있지 않으면 웹 인터페이스에서 애플리케이션마스터 관련 페이지에 접근할 수 없다.

sbin/yarn-daemon.sh start proxyserver
starting proxyserver, logging to /usr/local/hadoop-2.7.3/logs/yarn-root-proxyserver-cjh.out
jps
2754 DataNode
3684 WebAppProxyServer
3108 ResourceManager
3595 JobHistoryServer
2604 NameNode
3420 NodeManager
3725 Jps
2943 SecondaryNameNode



1) 하둡2 웹 인터페이스

: localhost:50070 을 입력하면 아래와 같은 창이 나타난다.



2) 얀(YARN) 인터페이스

: localhost:8088을 입력하면 아래와 같은 화면이 나타난다.


3) 히스토리 서버

: localhost:19888에 접속하면 아래와 같은 화면이 나타난다. 이 화면에서는 얀 클러스터에서 실행된 맵리듀스 잡의 이력만 제공한다.



'DataBase > Hadoop' 카테고리의 다른 글

하이브 (Apache Hive) 개념 및 설치 (아파치 더비 사용)  (0) 2016.11.14
하둡2 예제실행  (0) 2016.11.11
하둡2 - 네임노드 HA  (0) 2016.11.07
하둡2 - 얀(YARN)  (0) 2016.11.04
매퍼(Mapper) 와 리듀서(Reducer) 클래스  (0) 2016.10.14
Comments