하둡 완벽가이드를 읽다보니, 실제로 구축해보고 직접 보고 싶다는 마음이 생겼다.
로컬에서 간단하게 구성하고 어느 환경에서든 구동할 수 있도록 Docker를 기반으로 구축해보았다.
먼저 결론부터 말하자면, centos7 베이스의 HDFS를 구축했다.
코드는 Git에 커밋중이고, HDFS 구성은 Release v1.0 이다.(아래 링크)
(+추가: 가장 최신 master branch를 참고하면된다.)
맨처음에는 무작정 docker hdfs 구축 같은 검색어로 찾던중 아래 블로그를 발견했다.
위 블로그에서는 centos7 베이스 컨테이너를 실행 시킨 후, 컨테이너 안에서 전부 세팅 후 이미지를 생성한다.
컨테이너 안에서 세팅하는 것 보다는 코드레벨에서 전부 관리하고 싶었고,
처음엔는 위 블로그를 보면서 자체적으로 베이스 이미지, 각 노드 이미지를 분리하여 만들었었다.
그렇게 다 만들고 난 후, 컨테이너를 실행하니 문제가 발생했다.
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 수동으로 설정
결국 위 문제를 해결하지 못해서, 블로그를 보고 구성해보는 것은 포기했고...
그렇게 다른 사람은 또 어떻게 했을까 찾아봤다.
그렇게 찾은 블로그는 여기다.
우분투를 베이스로 hdfs를 구축하는 블로그인데, 이전의 블로그랑 비교해보니 다른점이 보였다.
- core-site.xml
- hdfs-site.xml
- start-all.sh를 실행하지 않고, /bin/hdfs를 통해 각 노드 실행
기본 베이스 이미지는 만들어 놓은게 있어서, 그 외 다른 코드는 위 블로그를 참고해서 만들었다.
결론적으로 이렇게 해서 구동하니 ssh문제는 발생하지 않았다.
정상적으로 구축, 동작하는 것을 확인했다.
start-all.sh /bin/hdfs 실행 차이, core-site.xml과 hdfs-site.xml의 속성에 의해 뭔가 문제가 해결된거 같은데... 이부분에 대해서 좀더 찾아봐야겠다.
---
확인해보니, start-all.sh /bin/hdfs 실행 차이였다.
start-all.sh는 마스터노드(네임노드)에서 다른 원격지의 데이터노드를 실행시키기 위해 ssh를 사용하는거 같다.
/bin/hdfs 실행에 ssh가 필요없었던 이유는, 각 로컬에서 NN or DN을 실행 시켰기 때문이다.
'Tech > Hadoop' 카테고리의 다른 글
[Hadoop] Docker Data Node 추가, 삭제 (0) | 2022.03.11 |
---|---|
[Hadoop]core-site.xml, hdfs-site.xml (0) | 2022.03.11 |
[Hadoop]하둡 완벽가이드 요약 (7) (0) | 2022.03.07 |
[Hadoop]하둡 완벽가이드 요약 (4) (0) | 2022.03.06 |
[Hadoop]하둡 완벽가이드 요약 (3) (0) | 2022.03.05 |