2015년 7월 27일 월요일

Hadoop 2.7.1 - Cluster Setup 설치 적용기.

최근들어 hadoop 2.X의 버전업이 매우 긴박하게 이루어지고 있는 느낌이다. 작년 말 2.6.0 이 정식 릴리즈 된 이후, 잠시 Spark 때문에 Hadoop 버전업을 따라가고 있지 못한 사이, 불과 3달 전(2015년 4월말) Hadoop 2.7.0 이 4~5개월여 만에 또 다시 정식 릴리지가 된 바 있었기 때문이다. (그리고, 다시 언급하겠지만, 몇주전 Hadoop 2.7.1 이 정식 릴리지 되었다.)

그러나, Hadoop 2.6.0 을 Skip 하고 Hadoop 2.7.0 을 staging 에서 production 화 테스트 시작했던 두어달 전, 나는 작업 하던 중간 아래와 같은 문구를 발견하고, 한참 세팅하던 과정을 접고 다시 Hadoop 2.6.0 으로 Down Grade 하였던 아픈 기억이 있다.


바로 위에서 파란색으로 Highlight 한, 2.7.0 은 몇가지 critical issue 때문에 production 에서는 아직 이용하지 않는게 좋다는 문구 때문이었다.

위 이미지 내에 언급된것 처럼 2.7.0 에는 몇가지 매력적인 업그레이드가 있었다. 그중 하나는 Azure Storage 를 쓸 수 있게 된점이고(회사에서 그룹사 계약으로 Azure Storage 를 Amazon 보다 유리한 조건으로 사용이 가능하다.), 또 다른 점들은 (좀더 실험을 해 보아야 하겠지만) variable length 나 file truncate 를 사용할 수 있게 된 점 등이었다.

여하튼 그런 일부 매력적인 기능을 포기하고, 다시 2.6.0 으로 Down Grade 하였다가, 막 테스트를 끝내고 Production 환경 Rolling Upgrade Script 에 반영 Freezing 하려던 찰나...난 몇주전 또 한번 좌절하고 말았다.

바로, 2.7.0의 Critical Issue 가 해결된 2.7.1 의 안정버전이 발표 되었기 때문이었다.(정확히는 2015년 7월 6일 정식 릴리즈 발표가 있었다.) 버전 바꾸는 삽질을 많이했지만, 기저에 해당하는 Hadoop 의 버전업은 매우 조심하고 신중하게 처리해야 하고, 자주 하기도 힘든 작업인 까닭에, 어찌 되었든 다시 2주 정도를 할애하여, 신규 구성중인 New 시스템의 호환성 테스트를 마치고, Production Rolling Upgrade 버전을 다시 2.7.1 로 수정 하였다. 2.7.0 대비 131개의 Bug 패치가 더해졌다고 하니, 이 버전으로 한동안 안정적인 운영을 했으면 하는 바램이다. (대부분 2.6.0 과 호환성이 맞춰진 Legacy 들은 2.7.1 과 특별한 호환성 이슈가 발견되지 않았다.)

아래는 기본적인 테스트를 마친 Hadoop 2.7.1 설치 스크립트의 기본 버전이다. (일부 특수한 Legacy 및 자체환경 특화 Custom 세팅 부분은 제외한 기본 세팅 버전....)
  1. 초기세팅 ( at .bashrc )
    1. 환경변수 $JAVA_HOME 세팅 되어 있는지 확인
    2. 환경변수 $HADOOP_HOME , $HADOOP_CONF_DIR 세팅
    3. 환경변수 $HADOOP_PREFIX 세팅
    4. 환경변수 $LD_LIBRARY_PATH 세팅
    5. source .bashrc
  2. 다운로드
    1. wget http://apache.mirror.cdnetworks.com/hadoop/common/hadoop-2.7.1/hadoop-2.7.1.tar.gz
  3. 설치
    1. tar xvzf hadoop-2.7.1.tar.gz
    2. cd hadoop-2.7.1
    3. mkdir /data02/log/hadoop
  4. 세팅
    1. etc/hadoop/hadoop-env.sh 세팅
      1. export HADOOP_NAMENODE_OPTS 에 -XX:+UseParallelGC 추가
      2. export HADOOP_LOG_DIR=/data02/log/hadoop
      3. export HADOOP_HEAPSIZE=4000
      4. export HADOOP_NAMENODE_INIT_HEAPSIZE="4000"
    2. etc/hadoop/core-site.xml 세팅
    3. etc/hadoop/hdfs-site.xml 세팅
      1. for NameNode
      2. for DataNode
    4. etc/hadoop/yarn-site.xml 세팅
      1. 우선 대부분 default 로...
      2. 위 Address 및 기본 옵션 추가
    5. etc/hadoop/mapred-site.xml 세팅
    6. etc/hadoop/slaves 세팅
      1. 모든 slave 노드의 hostname 혹은 ip를 등록
    7. Rack Awareness
      1. 현재 Staging 배포 버전에선 skip. Production 할때 하는 걸로...
  5. 전체 노드로 설정파일 overwrite 복사
    1. 위에서 수정한 설정 파일들에 대하여 전체 노드에 복사.(with scp)
    2. hdfs-site.xml 의 경우 NameNode 설정과 DataNode 설정값이 다소 다름.
  6. 전체 노드에 기본 디렉토리 생성
    1. 위 xml 파일에서 설정하였던 디렉토리들 mkdir
  7. 전체 노드에 기본 유저 생성
    1. Stage 모드에서는 moneymall로 통일
  8. password less 설정
    1. master node 루트 에서
      1. ssh-keygen -t rsa 하고 엔터 세번...
      2. scp ~/.ssh/id_rsa.pub moneymall@각노드Domain:~/.ssh/authorized_keys
    2. clinet node 에서
      1. mkdir ~/.ssh
      2. chmod 700 ~/.ssh
      3. chmod 600 ~/.ssh/authorized_keys
  9. 각 노드 구동
    1. master node 의 hadoop home 으로 이동
    2. bin/hdfs namenode -format moneymall(<-cluster 이름)
    3. sbin/hadoop-daemon.sh --config $HADOOP_CONF_DIR --script hdfs start namenode
    4. sbin/start-all.sh
    5. 리소스메니저가 안뜨면...
      ./yarn-daemon.sh start nodemanager
      ./yarn-daemon.sh start resourcemanager
      
      
  10. DataNode jps 확인
  11. NameNode jps 확인
  12. Web UI 띄움. (Classic 버전) <-- Classic UI 가 2.6.0 에서는 공존하였는데, 2.7.1 에서는 Default 로는 링크가 존재하지 않는다.
  13. [내부 정보 유출 방지를 위하여 이미지는 Dev-Zone 이미지 임.]
  14. Web UI 띄움. (New 버전) <-- New  UI가 2.6.0 에서는 하단 링크로 존재하였었는데, 현재 버전에서는 Default 로 존재한다.
  15. [내부 정보 유출 방지를 위하여 이미지는 Dev-Zone 이미지 임.]

댓글 없음:

댓글 쓰기