본문 바로가기

Tech/Hadoop

[Hadoop]Docker Base 하둡 설치기 (1)

하둡 완벽가이드를 읽다보니, 실제로 구축해보고 직접 보고 싶다는 마음이 생겼다.

로컬에서 간단하게 구성하고 어느 환경에서든 구동할 수 있도록 Docker를 기반으로 구축해보았다.

 

먼저 결론부터 말하자면, centos7 베이스의 HDFS를 구축했다.

 

코드는 Git에 커밋중이고, HDFS 구성은 Release v1.0 이다.(아래 링크)

(+추가: 가장 최신 master branch를 참고하면된다.)

 

GitHub - kangprog/hadoop_cluster_tutorial: 하둡클러스터 튜토리얼

하둡클러스터 튜토리얼. Contribute to kangprog/hadoop_cluster_tutorial development by creating an account on GitHub.

github.com

 

맨처음에는 무작정 docker hdfs 구축 같은 검색어로 찾던중 아래 블로그를 발견했다.

 

[Docker] Docker로 Hadoop 구성하기 #2 - Hadoop 설치 및 세팅

Docker  내가 원하는 환경의 서버를 container라는 개념으로 쉽게 생성 및 삭제할 수 있는 플랫폼. 관련 글 [Docker] Docker로 Hadoop 구성하기 #1 - MacOS에 Docker 설치 및 CentOS 실행 [Docker] Docker로 Hado..

taaewoo.tistory.com

 

[Docker] Docker로 Hadoop 구성하기 #3 - Hadoop 클러스터 구성 및 실행

Docker  내가 원하는 환경의 서버를 container라는 개념으로 쉽게 생성 및 삭제할 수 있는 플랫폼. 관련 글 [Docker] Docker로 Hadoop 구성하기 #1 - MacOS에 Docker 설치 및 CentOS 실행 [Docker] Docker로 Hado..

taaewoo.tistory.com

위 블로그에서는 centos7 베이스 컨테이너를 실행 시킨 후, 컨테이너 안에서 전부 세팅 후 이미지를 생성한다.

 

컨테이너 안에서 세팅하는 것 보다는 코드레벨에서 전부 관리하고 싶었고, 

처음엔는 위 블로그를 보면서 자체적으로 베이스 이미지, 각 노드 이미지를 분리하여 만들었었다.

 

GitHub - kangprog/hadoop_cluster_tutorial: 하둡클러스터 튜토리얼

하둡클러스터 튜토리얼. Contribute to kangprog/hadoop_cluster_tutorial development by creating an account on GitHub.

github.com

그렇게 다 만들고 난 후, 컨테이너를 실행하니 문제가 발생했다.

NameNode에서 start-all.sh를 실행 시키는 과정에서 Datanode와 ssh 연결을 수행하는데, host을 찾을 수 없다는 에러가 발생했다.

더 찾아보니 start-all.sh은 start-dfs.sh와 start-yarn.sh를 실행시켜주는 배치였고,

실제로는 start-dfs.sh에서 발생하는 문제였다.

(docker-compose에서 동일 네트워크로 묶어줬기 때문에 namenode에서 datanode로 ping은 잘갔다.)

(namenode에 접속 후, ssh datanode 또한 잘 됐다.)

 

에러에 대해서 여러 검색을 하고 조치를 취해봤지만 에러를 해결할 수 없었다.

  - ~/.bashrc에 환경변수 추가

  - /etc/hosts에 dns 수동으로 설정

 

결국 위 문제를 해결하지 못해서, 블로그를 보고 구성해보는 것은 포기했고...

그렇게 다른 사람은 또 어떻게 했을까 찾아봤다.

 

그렇게 찾은 블로그는 여기다.

 

Docker로 Hadoop 테스트 환경 구축하기 - HDFS

Docker와 테스트 환경 Docker는 애플리케이션을 컨테이너화해서 이미지로 만들어 배치하고 실행할 수 있는 환경을 제공하는 컨테이너 도구이다. 격리된 파일 시스템을 갖는 컨테이너 특성 덕분에,

blog.geunho.dev

우분투를 베이스로 hdfs를 구축하는 블로그인데, 이전의 블로그랑 비교해보니 다른점이 보였다.

- core-site.xml

- hdfs-site.xml

- start-all.sh를 실행하지 않고, /bin/hdfs를 통해 각 노드 실행

 

기본 베이스 이미지는 만들어 놓은게 있어서, 그 외 다른 코드는 위 블로그를 참고해서 만들었다.

결론적으로 이렇게 해서 구동하니 ssh문제는 발생하지 않았다.

정상적으로 구축, 동작하는 것을 확인했다.

 

start-all.sh /bin/hdfs 실행 차이 core-site.xmlhdfs-site.xml의 속성에 의해 뭔가 문제가 해결된거 같은데... 이부분에 대해서 좀더 찾아봐야겠다.

 

---

 

확인해보니, start-all.sh /bin/hdfs 실행 차이였다.

start-all.sh는 마스터노드(네임노드)에서 다른 원격지의 데이터노드를 실행시키기 위해 ssh를 사용하는거 같다.

/bin/hdfs 실행에 ssh가 필요없었던 이유는, 각 로컬에서 NN or DN을 실행 시켰기 때문이다.

 

 

반응형