Docker
내가 원하는 환경의 서버를 container라는 개념으로 쉽게 생성 및 삭제할 수 있는 플랫폼.
CDH ( Cloudera’s Distribution including Apache Hadoop )
Cloudera에서 hadoop eco system의 다양한 component들을 묶은 플랫폼 배포판
관련 글
[Docker] Docker로 CDH 배포판 설치하기 #2 - Cloudera Manager로 클러스터 구성하기
[Docker] Docker로 CDH 배포판 설치하기 #3 - Namenode와 Datanode 이미지 만들기 및 클러스터 재생성하기
지난번에 작성한 docker 로 hadoop 클러스터 구성하기에 이어 이번에는 docker 를 이용하여 CDH 배포판을 설치하도록 하겠습니다. hadoop Ecosystem에서 component가 상당히 많고 각 버전에 따른 dependency도 존재합니다. 그래서 최소 3대, 많게는 수십대의 서버로 구성되는 클러스터에서 component들을 개인이 각각 설치하는데에는 무리가 있습니다. 이를 하나의 플랫폼으로 묶어주고 추가적으로 클러스터를 관리해주는 서비스까지 제공하는 것이 빅데이터 플랫폼 배포판입니다. 플랫폼 배포판을 다루는 기업으로써 대표적으로 Cloudera와 Hortonworks가 있었지만, 현재는 Cloudera와 Hortonworks가 합병이 되었습니다. 그리고 이전에는 이러한 배포판을 오픈소스로 제공을 해줬지만 안타깝게도 지금은 모두 유료화가 되었습니다.....
이번글에서는 CDH 배포판을 docker 로 구성된 클러스터에 설치하는 작업을 진행하겠습니다. 위에서 말했듯이 유료화가 되었기 때문에 기존에 배포판을 설치하기 위한 Cloudera Archive 주소는 모두 접근이 불가하거나 필요한 파일들이 삭제된 상태입니다. 그래서 사실 이번 CDH 배포판을 설치하는데 있어 필요한 파일들이 존재하는 공식 URL 찾는 것이 가장 힘들었습니다. 며칠동안 찾던 중 다행히 이유는 모르겠지만 7.1.4버전은 저장소가 열려있었고 해당 버전을 이용할 수 있었습니다. 하지만 아쉽게도 이것마저도 license가 없는 한 무료 trial 버전( 만료기간 60일 )을 이용해야 한다는 점 참고바랍니다.
- URL : https://archive.cloudera.com/cm7/7.1.4/
진행을 하면서 docker image를 다양하게 만들 계획입니다. centos:7에서 기본적인 패키지와 파일들을 설치한 뒤 centos:base라는 이름으로 이미지를 만들겠습니다. 그리고 centos:base 이미지에서 Cloudera Manager 를 설치한 뒤 centos:CM 이라는 이미지를 다시 만들겠습니다.
그리고 이번에 클러스터를 구성할 노드는 총 4개입니다. NameNode 1개, DataNode 3개로 이루어지고 해당 노드를 docker container로 만들기 위한 image들은 아래 그림과 같습니다.
CentOS base 이미지 만들기
이전글에서 hadoop base 이미지를 만드는 과정이 있었습니다. 이와 비슷하게 CentOS 7에서 우리에게 필요한 것들을 설치한 후 이미지화 시키겠습니다.
/* Local PC Terminal */
$ docker run -it --name centos-base centos:7
/* Docker Terminal */
$ yum update
$ yum install wget -y
$ yum install vim -y
$ yum install openssh-server openssh-clients openssh-askpass -y
$ yum install initscripts -y
$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_dsa
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
$ ssh-keygen -f /etc/ssh/ssh_host_rsa_key -t rsa -N ""
$ ssh-keygen -f /etc/ssh/ssh_host_ecdsa_key -t ecdsa -N ""
$ ssh-keygen -f /etc/ssh/ssh_host_ed25519_key -t ed25519 -N ""
$ vim ~/.bashrc
bashrc 파일에는 아래 sshd를 실행하는 명령어만 추가해주고 bashrc를 적용시켜줍니다. 그리고 Cloudera Manager installer 파일을 다운받아 권한 설정을 해준 뒤 종료해줍니다.
.
.
/usr/sbin/sshd
.
.
$ source ~/.bashrc
$ cd
$ wget https://archive.cloudera.com/cm7/7.1.4/cloudera-manager-installer.bin
$ chmod u+x cloudera-manager-installer.bin
$ exit
위에서 만든 centos-base라는 이름의 container는 이제 필요한 파일과 패키지들을 모두 설치해줬으니 지금 상태를 이미지화 시켜줍니다.
/* Local PC Terminal */
$ docker commit centos-base centos:base
Cloudera Manager 설치하기
Cloudera Manager 를 설치해 여러 서버들을 하나의 클러스터로 구성하기 전에 아래의 그림처럼 진행할 것을 참고해주시기 바랍니다.
Cloudera Manager 는 위의 그림과 같이 Server와 Agent로 이루어집니다. Server의 경우 클러스터를 관리하고 설정할 수 있도록 7180 port에서 웹페이지 형태로 서비스를 제공하고 있습니다. Agent의 경우에는 각 노드들마다 설치되어 Server에게 지속적인 heartbeat 통신을 보내며 현재 노드의 상태를 전달해줍니다.
그러면 위에서 만든 centos:base 이미지로 hadoop01 이라는 container를 생성 후, 미리 다운받은 installer를 실행해 Cloudera Manager Server를 설치해보겠습니다.
/* Local PC Terminal */
$ docker run --privileged --name hadoop01 -p 7180:7180 -itd -h hadoop01.hadoop.com -e container=docker -v /sys/fs/cgroup:/sys/fs/cgroup:ro centos:base /usr/sbin/init
$ docker exec -it hadoop01 /bin/bash
여기서 docker run의 여러가지 옵션들이 쓰이게 되는데 주요하게 봐야할 점은 -p 옵션으로 localhost의 7180 port를 docker container의 7180 port로 port forwarding 해줍니다. 그리고 -v 옵션은 내가 현재 사용중인 PC의 경로를 docker container 경로에 mount 시켜줍니다. 즉 PC와 container의 특정 경로를 공유하게 됩니다.
위의 /sys/fs/cgroup 경로를 서로 공유하며 read only 접근을 하도록 설정한 이유 다음과 같습니다. docker 의 경우 보안을 위해 권한이 없는 container가 cgroup에 접근하지 못하도록 합니다. 그래서 경로 공유와 함께 read only 권한을 준 것이고, --privileged 옵션을 주어 해당 container에게 권한을 주도록 했습니다. 이 옵션 값을 주지 않고 docker run을 실행할 경우 뒤에 Cloudera Manager 를 설치하는 과정에서 "Failed to get D-Bus connection: Operation not permitted" 에러가 나타나게 됩니다.
docker exec을 통해 hadoop01에 접속했다면 cloudera-manager-installer 파일을 실행해줍니다.
$ cd
$ ./cloudera-manager-installer.bin
파일이 실행되면 설치 화면이 나오는데 Next를 계속 눌러주시면 설치가 진행되어 아래의 그림과 같이 설치 완료 화면이 나오게 됩니다.
설치가 완료되었다면 내 PC 웹에서 localhost:7180을 입력해 Cloudera Manager 웹 페이지에 접속해봅니다. 이 때 계정 아이디와 패스워드는 모두 admin 입니다. 참고로 Cloudera Manager Server 서비스가 실행되려면 길게는 15분까지의 시간이 걸리니 즉시 접속이 안된다면 잠시 후에 다시 시도해주세요. (사진 속 계정 ID는 무시하세요)
다음 글에서는 Cloudera Manager 웹페이지에서 클러스터 구성 및 설치하는 과정에 대해 다루겠습니다.
'BigData Engineering > CDH' 카테고리의 다른 글
[Docker] Docker로 CDH 배포판 설치하기 #3 - Namenode와 Datanode 이미지 만들기 및 클러스터 재생성하기 (0) | 2021.07.14 |
---|---|
[Docker] Docker로 CDH 배포판 설치하기 #2 - Cloudera Manager로 클러스터 구성하기 (2) | 2021.07.10 |