boost 1.46 버젼, 쓰리프트 0.8.0 버젼을 기반으로 하여 스크라이브를 설치하는 방법입니다. 스크라이브는 현재 4년간 소스에 변동이 없습니다. 따라서 최신 라이브러리 기반으로 컴파일 할려고 하면 알려준 방법대로 되지 않습니다. 

1. 부스트 설치 

$ sudo apt-get install libboost-all-dev libevent-dev automake libtool flex bison pkg-config g++ libssl-dev 


언제나 우분투 (Debian) 계열 (민트도 우분투 계열이라고 볼 수 있으니..) 이라고 가정하고 이야기 할 것입니다. 

2. 쓰리프트 (Thrift) 설치 

$HOME/work 밑에 설치한다고 가정하고 

       $ cd ~/work 
       $ git clone git://git.apache.org/thrift.git
       $ cd thrift
       $ ./bootstraph.sh
       $ ./configure
       $ make
       $ sudo make install
       $ cd lib/py
       $ sudo python setup.py install


 fb303 부분을 컴파일 해줘서 설치합니다. 
       
 

       $ cd ../../contrib/fb303
       $ ./bootstraph.sh
       $ ./configure
       $ make
       $ sudo make install 


만약 이 방법으로 컴파일 안될 시에는 

$ ./configure CPPFLAGS="-DHAVE_INTTYPES_H -DHAVE_NETINET_IN_H  -DBOOST_FILESYSTEM_VERSION=2 -DHAVE_NETDB_H=1 -fpermissive"


해주고 make 와 make install 을 해주면 됩니다. 


3. 스크라이브 설치 

       $ cd ~/work
       $ git clone http://github.com/facebook/scribe.git
       $ cd scribe
       $ CPPFLAGS="-DBOOST_FILESYSTEM_VERSION=2" ./bootstrap.sh
       $ ./configure CPPFLAGS="-DHAVE_INTTYPES_H -DHAVE_NETINET_IN_H  -DBOOST_FILESYSTEM_VERSION=2 -DHAVE_NETDB_H=1 -fpermissive"
       $ make 

       

아마 에러가 발생할 것입니다. 

       undefined reference to boost::system::generic_category()'

위와 같은 에러인데 라이브러리 링크 순서를 바꾸어 주면 거짓말 처럼 해결이 되더군요. 

     

 $ cd src
 $ g++  -Wall -O3  -o scribed store.o store_queue.o conf.o file.o conn_pool.o  scribe_server.o network_dynamic_config.o dynamic_bucket_updater.o  env_default.o -L/usr/local/lib -L/usr/local/lib -L/usr/local/lib -lfb303 -lthrift -lthriftnb -levent -lpthread  libscribe.a libdynamicbucketupdater.a  -L/usr/lib
       -lboost_system-mt -lboost_filesystem-mt 


원래 붉은 색으로 표시 된 부분이 문장 앞 부분에 존재하는데 이를 뒷 부분으로 돌리면 됩니다. 

 
먼저 하둡(Hadoop) 이 필히 설치가 되어 있어야 합니다. 이번에 HBase 를 가-분산 방식 (Pseudo Distributed )으로 설치해 볼 예정이기 때문에 하둡 (Hadoop) 또한 가-분산 방식으로 설치가 되어 있는 것이 좋을 것입니다.

하둡이 먼저 설치되어야 하는 이유는 HBase 가 하둡 기반위에서 돌아가기 때문입니다. $HBASE_HOME/lib 밑의 추가되어 있는 hadoop-core-x.x.x.jar 는 스탠드얼론(Stand Alone) 버젼에서 쓰이는 것으로 나중에 분산적용할 때는 클러스터(Cluster)에 설치되어 있는 하둡과 버젼을 일치시켜줘야 한다. 따라서 HBase 0.92.0 버젼을 설치하기 위해서는 Hadoop-1.0.0 버젼이 설치되어야 합니다.

하둡 설치하는 방법은 저의 지난 아티클 을 참조합니다.


하둡이 설치되고 구동되는 것까지 확인해 보셨다면 설정 파일들을 몇개 수정해 줘야 합니다. 일단 디렉토리를 계속 왔다리 갔다리 하는게 귀찮으니 하둡쪽의 conf/hdfs-site.xml 을 HBase 쪽의 conf/hdfs-site.xml 로 링크를 걸어주는 작업부터 하기로 합니다.

$ cd ~/work/hbase-0.92.0/conf
$ ln -s ~/work/hadoop-1.0.0/conf/hdfs-site.xml hdfs-site.xml

링크가 걸렸다면 다음 파일을 열어서

conf/hbase-site.xml, conf/hdfs-site.xml

 
<property>
    <name>dfs.support.append</name>
    <value>true</value>
 </property>

위의 내용을 추가해 줍니다.

그리고

conf/hdfs-site.xml 파일 아래쪽에 동시에 제공될 수 있는 파일들 갯수의 상한선을 지정해줘야 합니다.

      <property>
        <name>dfs.datanode.max.xcievers</name>
        <value>4096</value>
      </property>


에 추가 , 이것을 지정 안해 줄시에는 이상한 에러가 발생한다고 하니 유념하시기 바랍니다.

그리고 다음 파일을 열어서

conf/hbase-env.sh

export HADOOP_HOME = /home/crazia/work/hadoop-1.0.0
export HBASE_CLASSPATH=${HBASE_CLASSPATH}:$HADOOP_HOME/conf


이 내용을 추가해 주고

export JAVA_HOME=/usr/java/jdk1.6.0_31/


위의 내용을 추가해서 어떤 자바를 쓸 것인지 지정해줘야 합니다.

여기까지는 공통된 부분이고 이제부터 분산방식을 지정해야 합니다.  분산 방식은 보통 가-분산 (Pseudo-Distributed) 방식이랑 완전-분산(Fully-Distributed) 방식으로 나뉩니다. 컴퓨터 한대에 설치해서 테스트 해 볼것이기 때문에 가-분산 방식으로 설치해보기로 합니다.

하둡은 이미 설치되서 가-분산 방식으로 설정이 되어 있다고 했었기 때문에

hbase-site.xml 의 최종 모습입니다.

<configuration>

  <property>
    <name>hbase.rootdir</name>
    <value>hdfs://localhost:9000/hbase</value>
  </property>

  <property>
    <name>dfs.support.append</name>
    <value>true</value>
  </property>

  <property>
    <name>dfs.replication</name>
    <value>1</value>
  </property>

</configuration>


hbase.rootdir 은 $HADOOP_HOME/conf/core-site.xml 에 있는 fs.default.name 을 참조합니다. 제 것은 포트 번호가 9000으로 되어 있군요. 그래서 9000 으로 지정해주고 /hbase 라고 추가해 줬습니다.

hdfs-site.xml 의 최종모습입니다.

<configuration>
  <property>
    <name>dfs.replication</name>
    <value>1</value>
  </property>

  <property>
    <name>dfs.name.dir</name>
    <value>/home/crazia/work/hadoop-1.0.0/name</value>
  </property>

  <property>
    <name>dfs.data.dir</name>
    <value>/home/crazia/work/hadoop-1.0.0/data</value>
  </property>

  <property>
    <name>dfs.support.append</name>
    <value>true</value>
  </property>

  <property>
    <name>dfs.datanode.max.xcievers</name>
    <value>4096</value>
  </property>

</configuration>


설정이 다 되었습니다. 이제 하둡부터 구동시킵니다.

$ cd $HADOOP_HOME


  하둡이 설치된 곳으로 이동하라는 명령입니다. 참고로 저는 /home/crazia/work/hadoop-1.0.0 에 설치가 되어 있습니다.

$ ./bin/start-all.sh


하둡을 구동시킵니다. 사실 하둡 파일 시스템만 구동시키면 되지만 그냥 전부 다 구동시켜줍니다. (파일 시스템만 구동시킬 경우에는 start-dfs.sh 를 사용합니다) 하둡이 완벽하게 구동 되었으면 이제 HBase 를 구동시킬 차례입니다.

$ cd $HBASE_HOME


  HBASE 가 설치된 곳으로 이동하라는 명령입니다. 참고로 저는 /home/crazia/work/hbase-0.92.0 에 설치가 되어 있습니다.

$ ./bin/start-hbase.sh


구동이 완료 되었습니다. 저번 아티클 에서 언급됐던 shell 을 띄워서 제대로 구동이 됐는지 테스트를 해봅니다.

이상입니다.


+ Recent posts