일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 신의 한수
- 창조적 시선
- 종이의 TV
- #모두를위한DeepLearning
- 열아홉 편의 겨울 여행과 한 편의 봄 여행
- 빨치산
- 아우라가 있는 사람
- 제주
- #softmax
- 밥 짓기 방법
- 시작하세요! 하둡프로그래밍
- #라즈베리파이
- 진정한 노력
- 복지천국
- 마약
- 위안부
- 원죄형 인간
- 유해도서
- 이희인
- 안나 까레리나
- #모두를위한딥러닝
- 톨스토이가 답하다
- #DeepLearning
- hadoop
- 박진식
- #LinearRegression
- #워드프레스
- 초천재
- 시시콜콜 네덜란드 이야기
- Airline Delay Count
- Today
- Total
Thing's by Actruce
하둡 2.7.3 설치 본문
설치환경
- Windows10 에서 Oracle Virtual Box 가상머신으로 Ubuntu 16.04.1 x64 OS 로 설치
- Hadoop Release 2.7.3
- jdk 1.8.0_131
설치 가이드
- 이 포스팅에서 다루는 하둡 설치 가이드는 다음 링크 를 참조했다.
- WordCount 예제 실행은 위의 링크의 maven 및 IDEA IntelliJ 를 설치해서 수행한 것과 Hadoop Apache 공식 사이트의 jar 생성방식을 같이 다룬다.
하둡 아파치 2.7.3 WordCount 예제 Documentation
하둡 설치
1. Oracle Virtual Box 에서 Ubuntu 설치하기
- Virtual Box 를 설치하고 Ubuntu 설치하는 과정은 생활코딩 의 링크에서 확인가능하다.
2. Linux 에서 자바 설치
- 다음과 같이 sudo 권한으로 java application 을 설치한다. (각자 환경에 따라 다를 수도 있다.)
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer
sudo apt-get install oracle-java8-set-default
- 설치된 자바 버전을 확인한다.
java -version
- 내 머신상에는 다음과 같이 표시된다.
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-8u131-b11-0ubuntu1.16.04.2-b11)
OpenJDK 64-Bit Server VM (build 25.131-b11, mixed mode)
3. Hadoop 2.7.3 배포판 다운로드 및 압축 풀기 및 hduser 계정 생성
- 먼저, hadoop-2.7.3-tar 파일 다운로드 링크 에서 배포판을 다운로드 받는다.
- 압축을 해제하고 /usr/local 밑에 hadoop 폴더로 압축 해제한 파일을 옮긴다.
wget http://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gz
tar xzvf hadoop-2.7.3.tar.gz
mv hadoop-2.7.3 /usr/local
- hduser 계정을 생성한다. Group 은 hadoop 으로 생성한다.
sudo useradd hduser
sudo passwd hduser
sudo usermod -a -G sudo hduser
sudo groupadd hadoop
sudo usermod -a -G hadoop hduser
- /usr/local 에 저장된 hadoop 2.7.3 을 /home/hduser 밑으로 가져온다. 그리고 해당 폴더에 hduser 권한을 부여한다.
(간혹 /usr/local/ 밑에 놓고 그대로 쓰는데 문제 없다.)
mv /usr/local/hadoop-2.7.3 /home/hduser/hadoop
sudo chown -R hduser:hadoop /home/hduser/hadoop
4. Hadoop 환경설정 (Configuration)
- Hadoop 클러스터는 독립실행 모드(Standalone) / 가상분산 모드(Pseudo-distributed) /완전분산 모드(Fully distributed) 의 3가지 모드로
구분 되는데, 시작하는데 사용할 환경은 하나의 NameNode 와 DataNode, Secondary NameNode 를 갖는 가상분산 모드이다.
- 환경설정 작업은 ~/.bashrc 파일의 각종 PATH 설정과 SSH 키의 생성,
$HADOOP_HOME/etc/hadoop 아래의 core-site.xml , hdfs-site.xml, yar-site.xml, mapred-site.xml 을 수정하는 작업으로 이뤄진다.
4.1 ~/.bashrc 수정
- 먼저, hduser 로 사용자 변경한 뒤, ~/.bashrc 파일의 환경 설정을 변경한다.
$JAVA_HOME 및 $HADOOP_HOME 밑 Hadoop 수행에 필요한 Path 를 설정한다.
sudo su hduser
sudo vi ~/.bashrc
해당 파일의 제일 뒤에 다음 내용을 추가한다.
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-adms64/
export HADOOP_HOME=/home/hduser/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS=”-Djava.library.path=$HADOOP_HOME/lib”※ JAVA_HOME 은 개인 마다 자바 jdk 가 설치된 폴더를 확인해야 하는데, 구글링을 해 보면,
java -XshowSettings:properties -version 2>&1 > /dev/null | grep 'java.home'
해서 마지막의 jre 만 빼면 된다.
4.2 SSH 생성 및 확인
- 가상 분산 모드(Pseudo-distributed) 에서 NameNode 와 DataNode 간에 통신에 SSH 를 사용한다. master 노드의 역할을 하는 서버는 NameNode 와 JobTracker 데몬을 제공하게 된다. 또한 모든 slave 노드에 위치한 DataNode 와 TaskTacker 데몬을 실행시킨다. 따라서 master 노드는 클러스터에 위치한 다른 모든 노드들에 접근할 수 있어야 한다.
- 하둡은 이러한 접근을 위해서 SSH 를 사용한다. 공개 키는 클러스터에 있는 모든 노드에 저장되고 master 노드는 원격의 컴퓨터에 접근할 때 개인키를 보낸다. 우선 SSH 가 노드에 설치되어 있는지 확인해야 한다.
which ssh
which ssh-keygen
만약, ssh 가 없다는 메시지가 나오면 리눅스 패키지를 사용해 추가 설치를 해야 한다. 설치 되어있다고 가정하면, ssh 공개키를 생성한다.
이때, password 를 입력하지 않는다. (NameNode 에서 DataNode 에 접근 할 때마다 매우 번거롭다.)
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys
제대로 공개키가 설정되었는지 확인하려면,
ssh localhost
만약, 제대로 접속이 되지 않는다면, 설치된 ssh 패키지를 지우고 다시 설치하는 것을 권한다. (이후 하둡 시작시 NameNode 나 DataNode 가 제대로 구동이 안 될 수 있기 때문이다.)
4.3 hadoop $HADOOP_HOME/etc/hadoop 아래의 .xml 파일들 수정하기
- core-site.xml 파일 수정
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
- hdfs-site.xml 파일 수정
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/hduser/hadoop/hadoop_store/hdfs/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/hduser/hadoop/hadoop_store/hdfs/datanode</value>
</property>
</configuration>※ namenode foler 와 datanode folder 는 개인마다 다를 수 있다.
- yarn-site.xml 파일 수정
<configuration>
<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>
</configuration>
- mapred-site.xml 파일 수정 (mapred-site.xml.template 로 되어 있는데 이름을 변경하여 복사해 둔다.)
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
4.4 datenode, namenode 폴더 생성
- xml 설정에서 지정한 datanode, namenode 폴더를 생성한다.
mkdir -p/home/hduser/hadoop/hadoop_store/hdfs/namenode
mkdir -p /home/hduser/hadoop/hadoop_store/hdfs/datanode
5. namenode format 및 service 시작하기.
- 서비스 최초 실행시 namenode 를 포맷한다. (이후 실행 이후부터는 포맷할 필요없다.)
hdfs namenode -format
- 모든 준비가 끝났다! 이제 하둡 서비스를 실행하자. hadoop 2.x 버전부터 Yarn 기반의 MapReduce 작업이므로 1.x 의 start-all.sh 를 사용하지 않는다.
start-dfs.sh
start-yarn.sh
- 정상적으로 실행된다면, 처리단계의 로그가 terminal 에 표시될 것이다. 클러스터 구성요소들이 확인되는지 확인하기 위해
jps
수행해 본다. 정상적이라면, 다음과 같은 화면이 출력될 것이다.
9008 NodeManager
6242 SecondaryNameNode
9797 Jps
5865 NameNode
8619 ResourceManager
6028 DataNode
※ 만약, jps 수행시 DataNode 가 제대로 수행되지 않았다면 크게 2가지 이유중 하나일 것이다.
1. 설정 파일이 잘못 작성되었다. (오타, 잘못된 datanode 경로)
2. 아래와 같이 $HADOOP_HOME/logs 아래 datanode log 를 확인해 보면, 제대로 datanode 의 clusterID 를 가져오지 못한 것을 확인할 수 있는데, 이는 대부분 hadoop service 수행후, namenode reformat 을 한 경우에 namenode 가 보유한 metadata 가 초기화 되어서 생기는 오류이다. 이 경우 hadoop service 를 중지한 후 datanode 경로의 데이터 삭제 후 재 시작 한다. (해당 clusterID 만 namenode 에서 format 할 수도 있다.)
2017-06-10 22:33:00,453 WARN org.apache.hadoop.hdfs.server.common.Storage: Failed to add storage directory [DISK]file:/home/hduser/hadoop/hadoop_store/hdfs/datanode/
java.io.IOException: Incompatible clusterIDs in /home/hduser/hadoop/hadoop_store/hdfs/datanode: namenode clusterID = CID-11246ae9-eb5b-4a20-9f3e-9d38b9bce9c4; datanode clusterID = CID-210e64b3-ef61-45b7-9ff0-755ca1a4a58b
- hdfs 를 간단히 테스트 해보는 명령은 다음과 같다.
hadoop fs -ls
- 이제 하둡을 정상적으로 실행할 모든 준비가 끝났다. 설치나 설정 중간에 에러 상황이 생길 경우 구글링 등을 통해 적극적으로 해결하자. 앞 단계에서 잘못 설정이 되면 수행하려는 것들이 제대로 실행되지 않을 수 있기 때문이다.
'IT > Hadoop' 카테고리의 다른 글
하둡 소개글 (0) | 2017.12.03 |
---|---|
하둡 WordCount 예제 실행하기 (0) | 2017.12.03 |