2019년 4월 6일 토요일

하둡 3.1.2 설치 1편 - 독립실행모드(Standalone), 가상분산모드(Pseudo-distributed), 완전분산모드(Fully distributed)

하둡설치 방식에는 3가지가 존재한다. 독립실행모드, 가상분산모드, 완전분산모드이다.

실제 운영환경에서는 성능을 위해 완전분산모드로 설치해야할 것이고 기본 실행모드는 독립실행모드이다. 각 모드를 모두 설치해볼 것이다.

독립실행모드는 하둡이 설치된 로컬에서만 실행되기 때문에 로컬모드라고도 부르는데 하둡에서 제공하는 데몬을 구동하지 않기 때문에 분산 환경에서 맵리듀스를 하지 않는다.

가상분산모드는 하나의 장비만 필요하긴 하지만 그 장비에 모든 하둡 환경설정을 한다. 모조분산모드(의사분산모드)라고도 불리는데 하나의 장비지만 완전분사모드 형태로 돌아간다.

마지막으로 완전분산모드는 여러 대의 장비에 하둡을 설치하고 각 장비가 맵리듀스를 수행하게 되는 경우이다. 실제 운영환경에서 성능을 내기 위해서 완전분산모드로 세팅을 해야한다.

포스팅을 총 3편으로 나눠서 독립실행모드, 가상분산모드, 완전분산모드를 모두 설치해볼 것이다.


2. 가상분산모드편
-> 하둡 3.1.2 설치 2편 - 독립실행모드(Standalone), 가상분산모드(Pseudo-distributed), 완전분산모드(Fully distributed)

3. 완전분산모드편
-> 하둡 3.1.2 설치 3편 - 독립실행모드(Standalone), 가상분산모드(Pseudo-distributed), 완전분산모드(Fully distributed)


먼저 독립실행모드 설치부터 하나씩 알아볼 것이다.
이후 가상분산모드, 완전분산모드로 설치하는 방법을 포스팅할 예정이다.

Centos 7으로 각 노드를 구성할 것이고 각 노드당 최소 용량은 25G는 확보하도록 하자.

Centos 7이 설치된 환경을 1개 준비한다.

먼저 자바를 설치하기 전에 java가 설치되어 있는지 확인한다.

현재 OpenJDK가 설치되어 있고 OpenJDK가 아닌 오라클 JDK를 설치할 것이다.
rpm -qa | grep jdk를 해보면 jdk 관련된 것이 몇 설치되어 있고 이를 다 삭제한다.

yum remove java*를 사용해서 모두 삭제한다.

다시 rpm -qa | grep jdk로 확인해보면 모두 제거되었다.


이제 자바를 다운받아서 설치한다.(링크)
현재 버전이 11까지 나왔는데 하둡3.1.2버전에서 11을 제대로 지원하는지 몰라서 일단 안전하게 8버전을 설치하려고 한다.

Linux x64 tar버전을 다운받고 압축을 풀었다.
현재는 /root/다운로드에 풀었다.


jdk1.8.0_201로 압축이 풀렸고 이걸 /usr/local/ 하위로 옮기면서 디렉토리 명을 jdk1.8로 수정했다.

이제 환경변수 설정을 해줘야한다.
리눅스는 자동으로 시작되는 스크립트 파일들이 있다.
(순서 : /etc/profile -> /etc/bashrc -> ~/.bashrc -> ~/.bash_profile)
뒤에 2개의 경우 ~/.은 로그인 사용자에게만 적용되는 스크립트 이므로 전체 사용자에게 적용을 시키려면 앞에 실행되는 두개 중에 하나에 스크립트를 추가해주면 된다.

따라서 /etc/profile을 편집해주자.
vi 편집기를 통해 /etc/profile 파일 맨 하위에 4줄을 추가해준다.

export JAVA_HOME=/usr/local/jdk1.8
export PATH=$JAVA_HOME/bin
export JAVA_OPTS="-Dfile.encoding=UTF-8"
export CLASSPATH="."







수정을 다 했으면 source /etc/profile을 통해 적용을 해주고 재부팅을 하자.

java -version을 통해 자바가 설치된 것을 확인할 수 있다.


이제 하둡을 설치해보자.
하둡은 현재 3.2.0까지 나왔다.
필자는 맨 위에(가장 최근에 나온) 하둡 3.1.2버전을 설치할 것이다.
hadoop.apache.org에 가서 binary 버전으로 다운로드를 하자.



처음에 리눅스를 설치할 때 centos계정을 만들어서 현재 /home/centos 디렉토리가 존재한다. 여기로 옮겨서 압축을 푼다.


이후 하둡 설정을 해줘야한다.
vi /etc/profile을 통해 자바 경로를 설정해준 것처럼 하둡도 똑같이 해준다.

최종 모양은 다음과 같다.

내용은 하둡 홈을 설정해주고 경로에 하둡홈/bin과 하둡홈/sbin을 설정했다.
그리고 각 노드의 유저를 기본값으로 root를 설정해줬다.

이후 source /etc/profile을 통해 변경내용을 시스템에 반영하고 재부팅을 한다.


하둡 버전을 확인해보면 3.1.2 버전이 나오는 것을 보아 제대로 설치되었다.

잘 돌아가는지 테스트를 해보자.
하둡에 내장된 예제jar 파일(hadoop-mapreduce-examples-3.1.2.jar)을 통해 hadoop_env.sh 파일 단어 갯수를 세본다. wordcount라는 클래스가 있어서 단어의 갯수를 셀 수 있다.

참고로 /home/centos/hadoop-3.1.2/etc/hadoop/hadoop-env.sh 파일의 내용은 다음과 같다.

이 문서를 분석해서 각 단어가 몇번 나오는지 세보고 wordcount_ouput에 출력한다.

hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.2.jar wordcount $HADOOP_HOME/etc/hadoop/hadoop-env.sh wordcount_output

그 결과 _SUCCESS와 part-r-00000 파일이 생성되었다.

_SUCCESS는 정상적으로 수행이 되어서 떨어진 파일이고 수행 part-r-00000에 수행 결과가 출력되어있다.

따라서 cat wordcount_output/part-r-00000를 통해 파일 내용을 보면 다음과 같다.

대략 setting이 4번나오고 some이 2번 등 단어 출현 횟수가 세어져있다.


위의 테스트 결과 파일을 지우고 다음 포스팅에서 가상분산모드 세팅을 해보도록 하자.



댓글 2개:

  1. 안녕하세요? 덕분에 복잡한 하둡 세팅을 쉽게 할 수 있엇습니다. 좋은 포스트 남겨주셔서 감사합니다!

    답글삭제
  2. 부족한 부분(하이브라던지.. 저널노드라던지.. 실제로 추가되야할 부분이)이 많은데 그래도 읽어주셔서 감사합니다. 이렇게 설치하는것보다 호튼웍스나 클라우데라 배포판으로 설치하는게 훨씬 쉽고 관리하기가 편할꺼에요. 이 부분도 나중에 포스팅 기회가 생기면 하도록 하겠습니다. 읽어주셔서 다시 한번 감사합니다.

    답글삭제

2022년 회고

 올해는 블로그 포스팅을 열심히 못했다. 개인적으로 지금까지 경험했던 내용들을 리마인드하자는 마인드로 한해를 보낸 것 같다.  대부분의 시간을 MLOps pipeline 구축하고 대부분을 최적화 하는데 시간을 많이 할애했다. 결국에는 MLops도 데이...