1.   
환경 설정

1.1     
시스템 환경설정

1.1.1 
대상 파일: /etc/profile 또는 ~/.bashrc

작업:

export JAVA_HOME=/usr/lib64/jvm/java-6-sun

export cassandra_home=/usr/share/Cassandra

export CASSANDRA_HOME=$cassandra_home

export CASSANDRA_LIB=/usr/share/Cassandra

export CASSANDRA_CLASSPATH=$cassandra_home

export HADOOP_HOME=/usr/lib64/hadoop

export HADOOPDIR=$HADOOP_HOME/conf

export HADOOP_CONF_DIR=$HADOOPDIR

export HADOOP_CONF=$HADOOPDIR

export
HADOOP_CLASSPATH=$HADOOP_CONF:$CASSANDRA_LIB

export PIG_HOME=/usr/lib64/pig

export PIG_CLASSPATH=$HADOOPDIR

export PIG_CONF=$HADOOPDIR

export PIG_CONF_DIR=$HADOOPDIR

export PATH=$PATH:$HADOOP_HOME/bin:$PIG_HOME/bin

 

1.2     
Hadoop 실행환경 설정

1.1.2 
대상파일: $HADOOP_HOME/conf/hadoop-env.sh

내용:

Cassandralibrary(*.jar)HadoopLIBRARY($HADOOP_HOME/lib/*.jar) HADOOP_CLASSPATH
추가합니다.

작업:

export HADOOP_CLASSPATH=/usr/share/cassandra/*:$HADOOP_CLASSPATH:/usr/lib64/hadoop:/usr/lib64/hadoop/lib:

1.3     
Hadoop 공통 환경 설정(namenode 및 참조 Library)

1.1.3 
대상파일: $HADOOP_HOME/conf/core-site.xml

내용:

 Hadoop job_tracker cassandra를 연결하기 위한 설정입니다. cassandra.thrift.port  cassandra와 통신을 위한 포트를 설정이며 기본 포트는 9160
입니다. cassandra.partitioner.class는 다음과 같이 소개가 되어 있습니다.

“the
partitioner uses the key distribution to send the data to the reducer in a
round robin fashion”

이를 위한 클래스는  CassandraLIBRARY
포함되어 있습니다.

작업

<configuration>

  <property>

   
<name>fs.default.name</name>

   
<value>hdfs://localhost:54310</value>

  </property>

  <property>

   
<name>hadoop.tmp.dir</name>

   
<value>/usr/lib64/hadoop/tmp</value>

  </property>

  <property>

     
<name>cassandra.thrift.address</name>

     
<value>localhost</value>

  </property>

  <property>

      <name>cassandra.thrift.port</name>

      <value>9160</value>

  </property>

  <property>

      <name>cassandra.partitioner.class</name>

      <value>org.apache.cassandra.dht.RandomPartitioner</value>

  </property>

</configuration>

2.     실행환경
설정

2.1     
PIG 스크립트 생성.

2.2.1 
CLASSPATH 설정

내용

pig에서 요구되는 cassandra library
CLASSPATH
에 추가 합니다.

작업

for jar in $cassandra_home/*.jar; do

   
CLASSPATH=$CLASSPATH:$jar

done

2.2.2 
 LOADFUNC_JAR설정

내용

PIG에서 CASSANDRA에 접근하기 위해 사용되는
UDF
를 추가 합니다. 이 패키지에 CassandraStorage 클래스
포함되어 있어야 합니다. 그러나, 현재 UBUNTU에서 패키지 인스톨러로 설치되는 CASSANDRA의 버전에는
해당 클래스가 없는 것으로 확인되어, 패키지 인스톨러로 설치된 버전과 같은 버전인 0.7.2 버전의 소스를 내려받아 ant로 빌드 후
$cassandra_home/contrib/pig/build/
에 생성된 jar파일을 추가

합니다. 해당 jar파일은 $cassandra_home/contrib/pig에서 ant빌드를 수행해야
jar가 생성됩니다.

작업

LOADFUNC_JAR=/home/jwkim/apache-cassandra-0.7.2-src/contrib/pig/build/cassandra_loadfunc.jar

2.2.3 
$LOADFUNC_JAR를 클래스패스에 추가

작업

CLASSPATH=$CLASSPATH:$LOADFUNC_JAR

2.2.4 
PIG_JAR파일 패스 설정

내용

PIG [pig.jar] PIG-CORE [pig-{version}-core.jar] PIG_JAR에 추가합니다.

작업

PIG_JAR=$PIG_HOME/pig.jar:$PIG_HOME/ pig-0.8.1-core.jar

2.2.5 
PIG_JAR를 클래스패스에 추가

작업

CLASSPATH=$CLASSPATH:$PIG_JAR

2.2.6 
PIG_CLASSPATH 생성

export PIG_CLASSPATH=$PIG_CLASSPATH:$CLASSPATH

2.2.7 
PIG_OPTS 생성

export PIG_OPTS=$PIG_OPTS”
-Dudf.import.list=org.apache.cassandra.hadoop.pig”

2.2.8 
명령실행 줄

cat “bootstrap.pig” – | $PIG_HOME/bin/pig $*

2.3     
bootstrap.pig 생성

내용

PIG에서 호출
UDF를 지정합니다. pig.jar,
pig-x.x-core.jar, libthrift-05.jar
LIABRARY포함되며
앞의 두 항목은 pig를 위한 라이브러리이고, 뒤의 것은  cassandra 에 연결하기 위한 thrift인터페이스와
그 라이브러리 입니다.

작업

register /usr/lib64/pig/pig-0.8.1-core.jar;
register /usr/lib64/pig/pig.jar; register
/home/jwkim/apache-cassandra-0.7.2-src/lib/libthrift-0.5.jar;

3.   
호환성

현재 Test 진행
되고 있는 버전은 각 Hadoop 20.2, PIG 0.8.1, Cassandra 0.7.2 입니다. Hadoop의 최신 버전은 20.203 입니다. PIG와 연결이 되지 않아 현재 Hadoop 20.2를 운영 합니다. Cassandra 0.7.5가 최신 버전이나, Hadoop과 정상적으로 연계 동작을 하지 않아 0.7.2 버전을
사용합니다.

Leave a Reply

Your email address will not be published. Required fields are marked *