2019년 4월 6일 토요일

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

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

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

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

저번에는 Hadoop을 Standalone Mode로 설치하였다.
이어서 Pseude-distributed Mode로 설치해보자. 
Single이지만 Cluster이기 때문에 Single Node Cluster라고도 부른다.

가상분산모드는 장비 1대를 가지고 흉내만 내는 것이지만 설치할 때는 분산처리를 할 수 있도록 해야하기 때문에 ssh도 설치해야한다.

저번 편에서 설치한 독립실행모드에 그대로 설치해도되고 아니면 리눅스를 새로 설치하고 jdk와 하둡만 설치해서 따로 설치해도된다. 설치내용은 100% 똑같기때문에 이어서 설치하도록 한다.

먼저 yum install openssh*를 설치한다.

공개키와 비밀키를 생성한다.
ssh-keygen -t rsa -P ""를 수행하여 디폴트로 생성을 한다.


수행하면 아래에 SHA256으로 암호화된 것이 fingerprint(지문)이다.

인증기로 등록한다.

ssh 접속이 되는지 확인을 한다.
최초에만 연결하겠냐고 물어보고 이후에는 물어보지 않는다.

이제 하둡 설정파일을 세팅해야한다.
먼저 hadoop-env.sh에 자바 홈을 알려준다.
vi로 편집하다가 gedit으로 열어서 line number 표시를 하니까 편하다.


3.1.2 버전기준으로 54번째 line에 위치한다.(위치는 버전마다 다르다.)

core-site.xml에 네임노드(마스터노드) 위치를 알려준다.

configuration이 비어있는데 여기에 네임노드 위치를 알려준다.

hdfs-site.xml에 각 파일을 몇 개로 복제할 것인지 설정한다.
기본 3개인줄 알았는데 1개로도 설정이 가능하다.


아래처럼 configuration을 수정해준다.


이제 네임노드를 포맷하고 하둡 클러스터를 시작해보자.
먼저 네임노드를 포맷한다. (hdfs namenode -format)

그리고 하둡 클러스터를 다시 수행해보면 노드들이 하나씩 올라온다.

jps명령어를 수행해보면 jvm위에 올라가있는 프로세스를 확인할 수 있다.

NameNode, SecondaryNameNode, DataNode가 올라와있는 것을 확인할 수 있다.

참고로 start-dfs.sh는 hdfs를 실행하는 명령어이고 끄는 것은 stop-dfs.sh이다.

HDFS만 실행 : start-dfs.sh
HDFS만 중단 : stop-dfs.sh
맵리듀스만 실행 : start-mapred.sh
맵리듀스만 중단 : stop-mapred.sh
HDFS와 맵리듀스 모두 실행 : start-all.sh
HDFS와 맵리듀스 모두 중단 : stop-all.sh


웹상에서 확인하는 방법은 http://localhost:9870에 들어가보면 확인할 수 있다.


2.9대 버전까지는 port가 50070이었으나 3.대 알파버전부터 바뀌었다.(링크)



다음으로 리소스매니저를 수행해본다.

jps로 확인해보면 NodeManger, ResourceManager가 구동된 것을 확인할 수 있다.

웹상에서 보려면 port 8088로 확인할 수 있다.

테스트 겸 독립실행모드에서 수행했던 wordcount를 수행해보자.

먼저 hdfs에 디렉토리를 생성한다.(centos7 로컬이 아니라 하둡에 만드는 것이다.)


localhost:9870에서 /user, /user/root, /user/root/conf, /input을 생성된 것을 확인할 수 있다.



테스트를 위해 로컬에 있는 파일을 hdfs로 올려보자.

localhost:9870에서 README.txt가 올라온 것을 확인할 수 있다.

또는 명령어로도 확인이 가능하다.


독립실행모드에서 수행했던 명령어의 인풋과 아웃풋을 바꿔서 수행해보자.

hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.2.jar wordcount /input/README.txt ~/wordcount-output

hdfs dfs -ls ~/wordcount-output로 _SUCCESS가 된 것을 확인할 수 있다.

아래 명령어를 통해 결과를 확인해보자.

단어의 갯수가 세어진 것을 확인할 수 있다.

또는 localhost:9870에 /root/wordcount-output에서 결과를 확인할 수 있다.



전편 포스팅에서 독립실행모드를 설치하였고 이번 포스팅에서 가상분산모드를 설치하였다.
다음 포스팅에서는 실제 운영할 수 있는 완전분산모드를 설치해보도록 하자.

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

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

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

댓글 2개:

  1. 1편은 잘 실행되었는데 2편에서 /usr/sbin/sshd 부터 막히네요..
    Could not load host key: /etc/ssh/ssh_host_rsa_key
    Could not load host key: /etc/ssh/ssh_host_ecdsa_key
    Could not load host key: /etc/ssh/ssh_host_ed25519_key
    이런 오류가 나는데 해결을 못하고 있어요.. 조언 부탁드립니다.

    답글삭제
    답글
    1. 제가 댓글을 방금 확인했습니다. rsa key 생성을 안해서 나는 에러입니다. /usr/sbin/sshd 부분 없어야합니다. 수정하도록 하겠습니다.

      삭제

2022년 회고

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