Big Data/Apache Hama

빅탑(Bigtop)을 이용한 아파치 하마(Hama) 설치하기

Data Engineer 2015. 8. 24. 16:16

Hama on Bigtop


이번 포스팅에서는 Apache Bigtop를 이용하여 하마를 설치하는 방법에 관해 이야기해보겠다. 아파치 빅탑은 아파치 재단의 탑 레벨 프로젝트로 빅데이터 오픈 소스들(대표적인 것으로 hadoop, spark, hadoop ecosystem projects 등)을 패키징(rpm, deb 등), 테스트, 가상화를 지원해준다. 간단히 말해서, 빅데이터 오픈소스들의 설치와 같은 것을 사용자들이 편하게 할 수 있도록 도와주는 프로젝트이다.
여기서 제공하는 프로젝트 중에 빅탑을 이용하여 아파치 하마를 설치하는 방법을 살펴보겠다.
Apache Hama는 BSP(Bulk Synchronous Parallel) 모델을 기반으로 하여 데이터 분석(예를 들어, Machine learning, Graph processing 등)을 하는 범용 컴퓨팅 엔진이다. 하마와 관련된 포스팅은 추후에 자세히 하도록 하겠다.


1. 준비 사항

  1. 빅탑 설치
  2. gradle 설치(gradle의 경우 빅탑의 빌드를 하기 위해서 사용된다.

2. Hadoop 설치(rpm)

하마의 경우 하둡의 HDFS를 사용하기 때문에 먼저 하둡을 빌드하여 설치하여야 한다.

  • 운영체제 : CentOS 7
  • 필요패키지
    • openssl-devel
    • protobuf(protobuf-compiler)
    • cmake
    • rpm-build
    • gcc-c++

해당 OS에 위의 패키지들이 존재치치하지 않으면 yum을 이용해 먼저 설치를 해야 한다.

이제 빅탑을 이용하여 하둡을 빌드하는 방법은 아래와 같다.

gradle task hadoop-rpm

위의 명령어를 입력하면 정상적으로 hadoop이 빌드 되어 결과물이 rpm 파일로 나온다. 그리고 추출된 패키지 파일은 아래와 같은 명령어로 설치를 한다.


완료된 rpm 파일을 이용하여 하둡 설치하기

rpm -ivh hadoop-2.6.0-1.el7.centos.x86_64.rpm
rpm -ivh hadoop-hdfs-2.6.0-1.el7.centos.x86_64.rpm

하지만 설치하는 도중 의존성 문제가 발생한다. 해당 의존성 문제를 해결하기 위해서는 아래와 같이 수행하면 된다.


dependencies 문제 발생

  • psmisc, nc, /lib/lsb/init-functions

    • yum install redhat-lsb.x86_64
    • yum install nc
    • yum install psmisc
  • zookeeper

    • gradle task zookeeper-rpm
  • bigtop-utils
    • gradle task bigtop-utils-rpm
  • bigtop-groovy : gradle을 이용하여 빌드
    • gradle task bigtop-groovy-rpm
  • bigtop-jsvcbigtop srpm
    • gradle task bigtop-jsvc-rpm

위의 의존성 문제들을 해결하면, 하둡과 hdfs가 정상적으로 설치된다.

싱글 클러스터에서 hdfs를 실행하기 위하여 hadoop doc를 보고 설정 파일을 설정한다. bigtop을 이용해서 설치를 하면 /etc/hadoop/conf 안에 설정 파일들이 존재한다.


하둡 hdfs 설치

rpm -ivh hadoop-hdfs-namenode-2.6.0-1.el7.centos.x86_64.rpm
rpm -ivh hadoop-hdfs-secondarynamenode-2.6.0-1.el7.centos.x86_64.rpm
rpm -ivh hadoop-hdfs-datanode-2.6.0-1.el7.centos.x86_64.rpm

위의 명령어를 통해 hdfs를 설치한 후에 HDFS의 네임노드 초기화 및 데몬 실행하여 준다.

/etc/init.d/hadoop-hdfs-namenode init
for i in hadoop-hdfs-namenode hadoop-hdfs-datanode ; do sudo service $i start ; done
sudo -u hdfs hadoop fs -mkdir -p /user/$USER
sudo -u hdfs hadoop fs -chown $USER:$USER /user/$USER
sudo -u hdfs hadoop fs -chmod 770 /user/$USER

sudo -u hdfs hadoop fs -mkdir /tmp
sudo -u hdfs hadoop fs -chmod -R 1777 /tmp

sudo -u hdfs hadoop fs -mkdir -p /var/log/hadoop-yarn
sudo -u hdfs hadoop fs -chown yarn:mapred /var/log/hadoop-yarn

sudo -u hdfs hadoop fs -mkdir -p /user/history
sudo -u hdfs hadoop fs -chown mapred:mapred /user/history
sudo -u hdfs hadoop fs -chmod 770 /user/history

sudo -u hdfs hadoop fs -mkdir -p /tmp/hadoop-yarn/staging
sudo -u hdfs hadoop fs -chmod -R 1777 /tmp/hadoop-yarn/staging

sudo -u hdfs hadoop fs -mkdir -p /tmp/hadoop-yarn/staging/history/done_intermediate
sudo -u hdfs hadoop fs -chmod -R 1777 /tmp/hadoop-yarn/staging/history/done_intermediate
sudo -u hdfs hadoop fs -chown -R mapred:mapred /tmp/hadoop-yarn/staging

위의 과정을 수행하면 하둡 네임노드와 데이터 노드가 실행된다. 그러나 하마에서 다른 jar 파일을 사용하기 때문에 yarn과 맵리듀스도 위의 방법과 동일하게 설치를 해준다. 설정 또한 hadoop doc을 참고하여 설정한다.


3. Hama 설치

gradle task hama-rpm
rpm -ivh hama-0.7.0-1.el7.centos.noarch.rpm
rpm -ivh hama-bspmaster-0.7.0-1.el7.centos.noarch.rpm
rpm -ivh hama-groom-0.7.0-1.el7.centos.noarch.rpm

정상적으로 설치가 완료되면 하마 configuration 파일을 설정한다.
설정 파일을 하마의 정식 홈페이지을 참조하기 바란다.

먼저 하마 bspmaster와 groom 서버를 실행하기 전에 CLASSPATH를 설정해줘야 한다.

export HAMA_CLASSPATH=/usr/lib/hadoop/*:/usr/lib/hadoop/lib/*:/usr/lib/hadoop-hdfs/*:/usr/lib/hadoop-mapreduce/*

환경 변수를 설정해주고 bsp master와 groom server를 실행시킨다.

sudo service hama-bspmaster start
sudo service hama-groom start

해당 과정이 완료되면 정상적으로 하마가 동작 하는 것을 확인할 수 있다.


References

How to install Hadoop distribution from Bigtop
Hadoop: Setting up a Single Node Cluster
Apache Hama