생각하는 족족 고.따.구 냐..

Posted
Filed under About Knowledge/System_Apache_HADOOP

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 버전을 사용합니다.

2011/05/20 09:15 2011/05/20 09:15
Posted
Filed under About Knowledge/System_Apache_HADOOP
PIG를 통해 카산드라(Cassandra) 와 연결에 성공한 설정입니다.

==========================================================================================
core-site.xml on HADOOP
==========================================================================================
<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>
==========================================================================================


==========================================================================================
system environment(/etc/profile) for HADDOP, PIG and CASSANDRA
==========================================================================================
export JAVA_HOME=/usr/lib64/jvm/java-6-sun

export HADOOP_HOME=/usr/lib64/hadoop
export HADOOPDIR=$HADOOP_HOME/conf
export HADOOP_CONF_DIR=$HADOOPDIR
export HADOOP_CONF=$HADOOPDIR
export HADOOPDIR=$HADOOP_CONF
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 PIG_RPC_PORT=9160
export PIG_INITIAL_ADDRESS=localhost

export cassandra_home=/usr/share/cassandra
export CASSANDRA_HOME=$cassandra_home
export CASSANDRA_LIB=/usr/share/cassandra
export CASSANDRA_CLASSPATH=$cassandra_home

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

================================================================================================
HADOOP_CLASSPATH
================================================================================================

One configuration note on getting the task trackers to be able to perform queries over Cassandra: you'll want to update your HADOOP_CLASSPATH in your <hadoop>/conf/hadoop-env.sh to include the Cassandra lib libraries. For example you'll want to do something like this in the hadoop-env.sh on each of your task trackers:

export HADOOP_CLASSPATH=/opt/cassandra/lib/*:$HADOOP_CLASSPATH
================================================================================================

PIG를 사용하지 않고  HADOOP에서 CASSANDRA를 연결하기 위해서는 몇 가지 설정이 필요하지 안습니다.
PIG 에서 직접 Cassandra 에서 접근하지 않을 경우 Java에서 드라이버를 이용해서 직접 접근 할 수 있으리라 판단 됩니다.




2011/05/17 17:10 2011/05/17 17:10
Posted
Filed under About Knowledge/System_Apache_HADOOP
- 구성요소
 1. JobTracker
 2. TaskTracker
 3. NameNode
 4. Secondary NameNode
 5. Read-Time Backup of the NameNode data
 6. DataNode
 7. Balancer
    - execution command : $HADOOP_HOME/bin/hadooop balancer [-threshold <threshold>]

- 특징
 1. based on JAVA 1.6

- 파일 시스템에 있는 각 파일을 구성하는 블록을 나열
    hadoop fsck -fiels -blocks

- NameNode 장애복구 메카니즘
 1. 파일 시스템 메타데이터의 지속상태를 보완해주는 파일들을 백업
 2. 보조 네임노드 운영
   - 충분한 CPU-Power 가 필요하기 때문에 별도의 노드를 운영
   - 주 네임노드 장애 발생시 손실 감수



2011/04/20 08:58 2011/04/20 08:58