관리 메뉴

꿈 많은 사람의 이야기

도커(docker) centos7 환경에 하둡(hadoop), spark 설치하기 - 1 본문

빅데이터

도커(docker) centos7 환경에 하둡(hadoop), spark 설치하기 - 1

이수진의 블로그 이수진의 블로그 2018.12.27 09:42

안녕하세요. 날씨가 많이 춥네요

벌써 연말입니다. 모두들 2018년 마지막 마무리 잘 하시길 바라구요. 행복한 2019년을 맞이하시길 바랍니다!


이번에는 도커( docker) 환경에다가 하둡2(hadoop)와 스파크(spark)를 설치하는 과정을 포스팅 하려고 합니다.

이번 포스팅은 하둡만 설치해보고 다음 포스팅에서 스파크를 설치해보려고 합니다.


도커라는 것이 정말 강력해서 이렇게 환경 설정 해놓으면 docker hub에 올려 언제든지 재사용할 수 있다는 것이 매우 좋은데요

하둡을 이렇게 설치해놓으면 매우 간편합니다.


시작해봅니다.


저는 윈도우 환경에서 도커를 설치해서 진행했습니다.

뭐 어느 환경이던 상관없습니다



먼저 centos 7버전을 pull합니다.

docker pull centos:7을 이용하면 됩니다.



아! 그리고 하둡은 standalone 환경으로 구성합니다.

원래 분산 환경으로 하려고 했는데..

도커가 계속 hostname이 변경되가지고.. 불편해서 그냥 standalone으로 했습니다.

어차피 개인 테스트 환경이라서 분산 환경이 굳이 필요없기도 하구요.


docker run --privileged -d --name namenode centos:7 init을 통해서 컨테이너를 실행시켜줍니다.

이름을 네임노드로 했죠.



자 이제 docker exec -it namenode bash를 통해서 배쉬에 접근합니다.



그리고 바로 위의 명령어로 yum에 해당하는 애들을 설치해주어야 합니다.

도커에 올라온 centos 7 환경은 경량화 되어 있기 때문에 설치되어 있지 않는 패키지들이 많습니다.

그래서 저것들을 미리 설치해줘야 나중에 불편함이 없습니다.



자! 이제 먼저 java부터 설치해줍니다.

open jdk도 상관없습니다.

저는 그냥 옛날 방식인 오라클 java를 받았습니다.



받아집니다



그리고 위 명령어를 통해 자바 압축을 풀어줍니다



그리고 ln -s jdk1.8.0_191 java를 통해 일종의 바로가기를 해줍니다.

그리고 vi /etc/profile에 들어가서 설정을 해줍니다



자바 path를 설정해줍니다



source /etc/profile을 해주면 자바가 딱! 나오네요.

자바 설치는 끝났습니다.



그 다음은 host 설정입니다.

아마 위에서 yum을 통해 다 설치하셨다면 ifconfig 명령어가 먹힐겁니다.



vi /etc/hosts와 vi /etc/hostname에서 hostname을 namenode로 바꿔줍니다.


자! 이제 기본적인 설정은 끝났습니다.

원래 여기서 hadoop 계정을 만들어서 진행해야하는데요.

저는 굳이 그러지 않았습니다.

어차피 개인 공부 환경이고, 짧은 시간에 빠르게 하고싶어서 그냥 root로 진행했습니다.

hadoop 계정으로 하셔도 상관없습니다. 진행 상황은 똑같습니다. 계정만 다를뿐!



먼저 local에 비밀번호 요구 없이 ssh 접근이 가능하도록 ssh-keygen -t rsa 키를 만듭니다.



그리고 위 명령어로 또 하나의 파일을 만들어주고

authorized_keys의 권한을 바꿔줍니다.



그리고 ssh localhost를 치면 처음에는 yes를 눌러야 합니다.



그리고 다시 하면! 잘 되네요



이제 하둡을 설치합니다.

저는 2.7.3 버전으로 진행했습니다.

단순히 wget 명령어 사용해서 다운 받았습니다.



압축 풀어주고 마찬가지로 ln -s를 통해서 바로가기를 만들어줍니다.



그리고 hadoop2/etc/hadoop에 들어가서

hadoop-env.sh를 설정해줍니다.

여기서 자바를 연결시켜줘야합니다.



연결해줍니다.



그리고 PID 설정 부분이 있는데요. 이것도 설정해줍니다.

굳이 안해줘도 상관은 없는 것 같았습니다.



다음은 masters와 slaves를 설정해줍니다.




또 data, temp, name에 관한 디렉토리를 만들어줍니다.

이제 본격적인 설정에 들어갑니다.



경로는 위와 같습니다.



먼저 hdfs-site.xml을 설정해줍니다.


<configuration>

        <property>

                <name>dfs.replication</name>

                <value>1</value>

        </property>

<property>

                <name>dfs.namenode.name.dir</name>

                <value>/root/hadoop-2.7.3/dfs/name</value>

        </property>

        <property>

                <name>dfs.datanode.data.dir</name>

                <value>/root/hadoop-2.7.3/dfs/data</value>

        </property>

        <property>

                <name>dfs.namenode.http.address</name>

                   <value>namenode:50070</value>

        </property>

        <property>

                <name>dfs.secondary.http.address</name>

                   <value>namenode:50090</value>

        </property>

</configuration>


분산 환경은 지금 단일 노드이니까 1로 해줍니다.

그리고 name디렉토리는 아까 만든 name 디렉토리 경로입니다. 

그 외에 http.address를 설정해줍니다.




다음은 core-site.xml입니다.

<configuration>

        <property>

                <name>fs.defaultFS</name>

                <value>hdfs://namenode:9000</value>

        </property>

        <property>

                <name>hadoop.tmp.dir</name>

                <value>/root/hadoop-2.7.3/dfs/temp</value>

        </property>

</configuration>


defalutFS를 설정해줍니다.

그리고 tmp 디렉토리도 설정해주고요.




다음은 mapred-site.xml을 설정합니다.

<configuration>

        <property>

                <name>mapreduce.framework.name</name>

                <value>yarn</value>

        </property>

</configuration>


하둡 2버전이기 때문에 yarn(얀)을 설정합니다.




그리고 yarn-env.sh을 설정하는데요

아마 이건 디폴트로 설정이 되어 있을탠데 안되어 있으면 위와 같이 바꿔줍니다.



다음은 vi 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>

        <property>

                <name>yarn.nodemanager.local-dirs</name>

                <value>/root/data/yarn/nm-local-dir</value>

        </property>

        <property>

                <name>yarn.resourcemanager.fs.state-store.uri</name>

                <value>/root/data/yarn/system/rmstore</value>

        </property>

        <property>

                <name>yarn.resourcemanager.hostname</name>

                <value>namenode</value>

        </property>

        <property>

                <name>yarn.web-proxy.address</name>

                <value>0.0.0.0:8089</value>

        </property>

</configuration>



자 이제 하둡 설정은 끝났습니다.

이제 하둡 경로를 설정해주죠



/etc/profile로 갑니다.



위와 같이 hadoop_home 등을 설정해줍니다.



.bashrc에서는 위와 같이 설정해주느데요



그리고 나서 source를 통해 업데이트를 해주고

hadoop namenode -format을 통해 포맷을 해줍니다.



그리고  start-all.sh을 해주는데



음... 뭔가 설정이 꼬였나보내요

아마 /etc/profiel이나 .bashrc 부분에서 꼬인 것입니다.



그래서 .bashrc에 그냥 모든 hadoop 설정을 때려박습니다.(무식하게...)

실전에선 이러시면 안됩니다...



그리고 이렇게 합니다.


만약 이렇게 하고서도 안되시면!

/etc/profile에 모든 hadoop 경로를 때려박으세요!(이것도 무식..)



그러고 나서 start-all.sh을 하니까 여전히 설정이 좀 꼬여서 경고는 드지만

jps치면 잘 나오고



hdfs dfsadmin -report 치면 잘 나옵니다.



진짜 잘 되는지 봅시다.

hdfs dfs -mkdir /user


hdfs dfs -ls /

를 치시면

실제로 /user 디렉토리가 만들어진 것이 보입니다.


하둡은 잘 실행됩니다.

이제 현재 도커 컨테이너를 이미지로 저장을 해둡니다.

다음날에 해야하니까!



환경에서 빠져나옵니다.

그리고 다시 들어가서

hdfs 명령어를 치니까 여전히 잘 되고 있는 것을 확인합니다.

그리고 다시 환경을 빠져나와서



docker commit 명령어를 통해 image를 만들어줍니다.


자! 여기 까지 도커(docker) centos 7 환경에서 hadoop을 설치해보았습니다.


다음 포스팅에서는 같은 컨테이너에 스파크(spark)와 제플린(zeppelin)을 설치해보겠습니다.


0 Comments
댓글쓰기 폼