관리 메뉴

꿈 많은 사람의 이야기

도커(docker)에 하둡(hadoop) 스파크(spark) 설치 및 도커 허브 배포하기-2 본문

빅데이터

도커(docker)에 하둡(hadoop) 스파크(spark) 설치 및 도커 허브 배포하기-2

이수진의 블로그 이수진의 블로그 2019. 1. 2. 09:43

지난 포스팅에서 도커(docker)환경 centos7에서 하둡(hadoop)을 설치했습니다.


https://lsjsj92.tistory.com/418


이번 포스팅에서는 하둡을 설치한 해당 도커 컨테이너에 아파치 스파크(apache spark)를 2버전으로 설치하려고 합니다.


아파치 스파크는 하둡의 맵리듀스 단점을 보완해줍니다.

실시간 데이터 처리 기능(spark streaming)도 되고, 맵 리듀스, 나아가서 머신러닝 알고리즘(spark MLlib)도 지원해줍니다.


그렇기에 하둡과 연동해서 자주 사용하죠!

이번 포스팅은 이 스파크를 설치해봅니다. 그리고 현재 도커 centos7에 하둡과 스파크까지 다 설치하고 docker hub(도커 허브)에 배포해봅니다.


도커 허브에 배포하면 해당 이미지를 가지고 다른 환경에서 도커만 설치해서 pull이나 run으로 다운을 받고 바로 실행만 하면 됩니다.

매우 좋은 기능이죠!


시작해봅니다



먼저 wget으로 아파치 스파크를 설치합니다. 본 포스팅에서는 스파크 2.1.2 버전을 설치합니다.

최신 버전도 나와 있지만 후에 설치할 제플린(zeppelin)과 버전 호환이 맞는지 확인이 안되어서

일단 2.1.2버전으로 진행해봅니다.



다운을 받았으면 tar zxvf spark-2.1.2-bin-hadoop2.7.tgz를 통해서 압축을 해제합니다.



그리고 들어가기 쉽게 spark 라고 명명하죠



압출을 해제 했으면 bin/spark-shell을 통해 실행이 되는지 확인합니다.

잘 되셨으면 위와 같이 화면이 나올 것입니다.

scala> 로 시작하는 화면이 나옵니다.

근데 저는 pyspark를 자주 이용합니다.

그래서 apache spark에 pyspark를 연동합니다.



기본적으로 pyspark shell을 지원해줍니다.

근데 파이썬 버전이 2.7.5 버전이죠.

그래서 python3 버전을 설치해줘야합니다!



위 명령어를 통해 파이썬3를 centos7에 설치해줍니다.



다 설치가 되셨다면 /usr/bin/python을 보시면 python3.6이 있으실 겁니다.

최근 3.7이 나와서 3.7이 설치 되실 수도 있습니다.



이제 /etc/profile에서 환경설정을 해줍니다.

export PYSPARK_PYTHON=/usr/bin/python3.6을 통해 파이썬 3버전을 pyspark가 가르키도록 합니다.



이후 .bashrc에 spark/bin을 설정합니다



이제 이렇게 하셨으면

pyspark를 다시 치시면 python3.6 버전으로 실행되는 것을 볼 수 있습니다!

그리고 print("a") 하니까 잘 나오네요~


자 여기까지 아파치 하둡과 아파치 스파크를 설치했습니다.

현재 이 도커는 컨테이너 형태로 되어 있습니다.

이제 이 도커(docker)를 이미지(image)로 만들겠습니다.



docker commit namenode soojin_hadoop_spark를 통해 도커 컨테이너를 이미지로 만들어줍니다!



그리고 docker hub로 가셔서 회원가입을 합니다.

그리고 마치 깃허브(github)처럼 repository를 만들어줍니다.

저 같은 경우는 hadoop_spark_basic으로 만들었습니다.

lsjsj92는 제 계정 이름을 따라 만든 것 같군요



그리고 docker hub(도커 허브)에 올릴려면 tag를 달아주어야 합니다.

일종의 버전? 식으로 달면 되는 것 같습니다.

docker tag soojin_hadoop_spark lsjsj92/hadoop_spark_basic:1 이런 식으로 태그를 달아줍니다.



자! 이제 docker push lsjsj92/hadoop_spark_basic:1을 통해서 push를 해줍니다!

저는 이것을 다른 pc에서 진행했습니다.

docker push가 완료되고 나서 다른 pc에서 pull을 해봅니다!



자 여기가 제 다른 pc입니다~

docker pull lsjsj92/hadoop_spark_basic:1을 통해 pull 합니다.

마치 처음에 저희가 docker pull centos:7 하는것처럼요!



다운이 다 되었으면 docker images를 쳐봅니다.

저기 있네요!



이제 docker를 run 해봅니다.

잘 실행이 되네요 ㅎㅎ



도커 단점이 처음에 실행하면 hostname이 계속 변경됩니다.

이게 아마 고정시키는게 있는 것으로 알고 있는데 추후에 해보죠

또한 source도 적용이 안되어 있습니다.

java -version을 쳐도 안나오죠



그래서 source /etc/profile을 통해서 /etc/profile을 다시 실행시켜주고

hostname, hosts에서 호스트 이름을 다시 설저해줍니다.



하둡을 start-all.sh을 하면 바로 잘 됩니다!


자 이제 추가적으로 docker 외부에서 ssh 접속을 하는 방법을 알아봅니다

아까 도커를 실행시킬 때 포트를 설정했습니다. -p 옵션으로 22222:22 이렇게 설정했죠.

처음 22222는 외부 포트이고 그 다음 22는 도커 내부 포트입니다.

즉 외부 22222포트와 내부 22포트가 연결되어 있는 것이죠!

이제 docker를 외부에서 도커 22번 포트로 ssh 접속을 해봅니다



vi /etc/ssh/sshd_config로 가셔서 PermitRootLogin을 yes 해줍니다.



그리고 systemctl restart sshd를 통해 sshd를 다시 실행 시켜줍니다



저는 putty에서 진행했습니다.

localhost 22222로 접속해봅니다.



크흐 잘 접속이 되는군요!


근데 만약 아래와 같은 에러가 나오면



putty fatal error 

network error: connection refused

에러가 나온다면 ip 문제일 확률이 높습니다.



도커를 실행시킬 때 위와 같이 ip가 나오기도 하는데요

이 ip를 이용하면됩니다



이렇게요!



잘 되죠??

이거 때문에 얼마나 고생을 했는지..



자 이제 spark를 외부에서 확인해봐야겠죠?

아파치 스파크는 웹 페이지가 나옵니다. 8080 포트로요!



아파치 스파크를 실행시켜 주시고

방화벽(firewalld)를 stop 해줍니다.



잘 보이네요!


자 여기까지가 도커(docker) 환경 centos7에서 아파치 하둡과 아파치 스파크를 설치하는 과정이었습니다.

다음에는 제플린(zeppelin)을 설치해봅니다



0 Comments
댓글쓰기 폼