CDH (클라우데라 하둡배포판) 설치 방법을 말하기에 앞서, 우선 간단히 설명을 하고 넘어가겠다.
cloudera는 hadoop만들던 애들이 나와서 차린 회사다.
어느 정도 적당히 무료배포하고 그 이상의 solution은 유료화하는 전략을 사용한다.
hadoop 관련해서는 업계 최고의 전문성을 갖고 있다고 본다.

이번에 알아볼 CDH란 녀석은 Cloudera's Distribution for Hadoop 의 약자다.
우리가 사용해야 할 CDH (hadoop이나 hbase, zookeeper등 기타 컴포넌트들) 를 자동 설치해주고, 아래 그림처럼 편리한 인터페이스로 관리하게 해주는 녀석이 cloudera manager 라고 이해하면 된다.
어쨌든, 이 cloudera manager 란 녀석이 해주는 일은 아래와 같다.
- SSH를 이용한다.
- 입력한 ip, 호스트명의 서버들을 찾아낸다.
- 설치할 CDH와 oracle JDK 패키지 레파지토리들을 설정한다.
- 각 호스트들에 CDH와 oracle JDK를 설치한다.
- 각 호스트에 매핑되는 서비스를 결정한다.
- hadoop 을 설정하고 시작할 수 있게 해준다.
우리가 사용하게 될 공짜버전(free edition)은 최대 50대의 서버까지만 지원되며, kerberos를 통한 hadoop security를 관리/설정 할 수 없다. (본인이 사용할 계정이 kerberos로 관리된다고 해서 CDH를 사용하지 못한다는 말이 아니다. kerberos를 통해 접근하더라도 root권한만 사용할 수 있다면 설치할 수 있으니 걱정하지 마시길 ^^)
설치 과정을 간단히 설명하면,
cloudera manager를 master 서버에 설치하고, 그 서버에 cloudera manager 웹 인터페이스를 통해 접근하여, 모든 hosts들에 CDH를 설치하면 끝이다. 그 이후에 필요하면 cloudera manager 통해 노드들을 관리해줄 수도 있다.
설치 전에 우선, 아래 페이지를 통해 requirements 확인 하자~
https://ccp.cloudera.com/display/FREE41DOC/Requirements+for+Cloudera+Manager
그럼 이제 설치해보자~
root 권한이 있는 계정으로 진행해야 한다.
글을 쓰는 현재 시점에 가장 최근 버전은 Cloudera Manager 4.1.3 Free Edition 이다.
1. 우선 master 가 될 서버를 정하고, 이 서버에서 나머지 slave서버들로 암호없는 ssh 로긴이 가능하도록 설정해둔다.
ssh를 이용하여 클러스터 관리하기~
2. master서버에 파일을 다운로드 하고 실행한다.
$ wget http://archive.cloudera.com/cm4/installer/latest/cloudera-manager-installer.bin
$ chmod u+x cloudera-manager-installer.bin
$ sudo ./cloudera-manager-installer.bin
3. 동의할 것 있으면 동의하고 next 하면 설치된다. 나중에 웹으로 접속할 cloudera manager (admin console) 기본 포트는 7180 인데, 이를 바꿀 수 있다. 설치 과정 중 문제가 생기면 깨끗이 지우고(uninstalling cloudera manager) 다시 시작하는 편이 좋다.
4. Cloudera Manager Admin Consol 시작
웹 브라우저에 방금 설치한 서버로 접속한다.
http://<Server host>:<port>
예를 들어, 내가 설치한 cloudera manager 서버가 test-gyrbsdl001.ncl라면, admin consloe은 http://test-gyrbsdl001.ncl:7180 로 접속할 수 있다.
아래 계정으로 로그인 가능하다.
Username: admin
Password: admin
5. 처음 접속하면 마법사가 뜬다. 계속, 혹은 다음버튼을 누르다보면 설치할 hosts 들을 입력하는 페이지가 나온다. 혹시 나중에 이 화면에 다시 오고 싶으면 (나중에 서버를 더 사서 호스트를 추가하거나..) 상단 메뉴중 '호스트' > '호스트추가' > '계속' 메뉴를 클릭하면 된다. ip나 호스트명 둘 모두로 검색 가능하며, 탭/콤마/줄바꿈 등으로 분리하여 한꺼번에 입력할 수 있다.
6. 호스트 검색이 완료되면, 설치할 cdh를 고르라고 나온다. 나중에 언제든 간단하게 제거 /중지 할 수 있으니, 일단 최신으로 모두 설치해보자.
7. 다음으로 자격증명 관련된 페이지가 나오는데, 당연히 root 계정이나 혹은 sudo 권한을 가진 계정을 적어주어야 한다. 비밀번호를 안다면 비밀번호를 적을 수 있겠으나, kerberos등을 통해 접근하는 계정이라면 (즉, 그 계정으로 직접로그인하는 암호를 모른다면) 반드시 공용키 (public-key authentication) 를 선택해야 한다. 그럼 key file을 선택하게 되어있는데, 이때 위 1번과정에서 SSH설정시 생성한 개인키 ~/.ssh/id_rsa 파일을 윈도우에 다운받아 이 파일을 사용한다.
8. 설치 시작(Start Installation) 버튼을 클릭한다.
각 호스트별 설치 과정을 살펴볼 수 있다. 혹시 실패한다면, cloudera manager가 설치된 서버에서 로그를 보고 원인을 알아낼 수 있다.
$ sudo vi /var/log/cloudera-scm-server/cloudera-scm-server.log
문제를 해결하고 될때까지 다시 시도 해보자!!
9. 설치가 정상적으로 완료되었다면 계속 (continue) 버튼이 생긴다. 똑같은 환경인데 전체중 일부만 실패하는 경우가 종종 생긴다. 로그를 확인해보면 이유를 알 수 있는데, 예를 들어 JDK 다운로드 미러 사이트가 동시에 너무 많이 접근해서 막혔기 때문에 실패할 수도 있다. 이런 경우 실패한 호스트만 재시도하면 문제없이 모두 설치가 된다.
10. 계속 진행하고 CDH버전을 결정하고 나면 어떤 서비스들을 시작할 지 선택하는 화면이 나온다.

주의할 점은, mapreduce와 yarn을 동시에 작동시키면 안된다는 점~ 어떤 에러가 나는 지 겪어 보지는 못했지만, 경고 사항을 잘 읽어보면 나온다. 개인적으로 아직 까지는 안정적인 mapredue를 추천한다~
원하는 서비스들 (hadoop, hbase, 등등) 을 선택하면 각 host들의 역할(role)을 정의하는 화면이 나오온다. cloudera 가이드에 따르면, 권장설정을 하면 자동으로 최적의 서버에 master를 지정한다고 하는데.. 본인이 해본 결과, 모든 노드가 동일한 환경이면 그냥 모두 0번 서버에 master가 몰리게 된다.
이렇게 설치할 경우 0번서버가 너무 힘들어지는 걸 발견했다. 따라서 가급적 각 서비스별로 master를 분산하고 role을 분산시키자.
예를 들어, hdfs namenode가 0번이라면 mapreduce master는 1번에, hbase master는 2번으로 지정한다. hbase region 서버들과 data node들, mapreduce tasktracker들은 1번~9번까지 공용으로 사용하여 로드를 분산시키는 것이 좋다고 본다. 물론 설치후 운영하다가 나중에 변경할 수도 있다. ( CDH 설정 하기 )
11. 계속 진행하다보면 system path를 지정하는 부분이 나온다. 예를들어 hdfs의 NameNode나 datanode의 Data directory 설정인데, 이부분은 각자 자신의 서버 마운트를 확인하여 적잘한 디스크 path로 지정해주어야 한다. 그렇지 않을경우 default 인 루트 /dfs 에 지정되버리기 때문이다. 물론 나중에 변경할 수 있다. ( CDH 설정 하기 )
12. 이제 계속을 눌러 서비스를 시작한다.
13. 메인 메뉴의 서비스 이름(예를 들어, hdfs)을 클릭하면, 각 서비스의 상태가 양호한지 확인해볼 수 있다.
https://ccp.cloudera.com/display/FREE41DOC/Testing+the+Installation
14. 마지막으로, 보안을 위해 cloudera manager 패스워드를 변경하자.
main 메뉴바의 맨 오른쪽위에 admin 이라고 적힌 부분을 클릭하면 '암호변경' 을 할 수 있다.