hive, hadoop, hbase, sqoop 등을 사용하는 경우 

CDH-5.1.2 --> CDH-5.5.1 로의 업그레이드를 할 때, 사용할 수 있는 팁

hadoop-2.6.0+cdh5.5.1+924-1.cdh5.5.1.p0.15.el6.x86_64

hive-1.1.0+cdh5.5.1+327-1.cdh5.5.1.p0.15.el6.noarch



1. 단순 패치 (CDH-5.5.1 설치)

yum 으로 설치한 CDH-5.1.2 위에 단순히 CDH-5.5.1 설치를 진행했다. hadoop, hive 에러 발생했다.



2. yum 기존 패키지 (CDH-5.1.2) 삭제후 CDH-5.5.1 설치

hadoop, hive는 잘 되는데, sqoop 실행시 에러 발생


확인해보니 CDH5-1.2의 하위 avro lib (serialization lib이다.)때문에 dependency lib가 꼬인 문제였다.



3. yum 기존 패키지,CDH-5.5.1 설치 삭제, avro 관련 jar 관련 모든 파일을 삭제하고, 신규 CDH-5.5.1 재설치 


어떤 lib인지 몰라도. hbase도 설치해야 hive/hadoop/sqoop이 잘 동작했다.

sqoop은 mysql DB 연결하려면, mysql jdbc driver(mysql-connector-java-5.1.38.jar)를 다운받아 /usr/lib/sqoop/lib에 복사한다.


connection time out 나고 그러면 network acl 에 문제있는지 확인한다. hive 를 실행하는 서버가 아닌 data node쪽에서 telnet으로 db를 붙는지 확인한다.


그러나 과거에 잘 동작하던 hive에서 java.lang.OutOfMemoryError: Java heap space 가 발생했다.


(소스를 분석하면서 진행하는 것이 좋음)

/usr/lib/hive/conf/hive-env.sh 에서 메모리를 수정한다. (hive-env.sh.template를 참조한다.)


<원본>

# if [ "$SERVICE" = "cli" ]; then

#   if [ -z "$DEBUG" ]; then

#     export HADOOP_OPTS="$HADOOP_OPTS -XX:NewRatio=12 -Xmx1g -Xms1g -XX:MaxHeapFreeRatio=40 -XX:MinHeapFreeRatio=15 -XX:+UseParNewGC -XX:-UseGCOverheadLimit"

#   else

#     export HADOOP_OPTS="$HADOOP_OPTS -XX:NewRatio=12 -Xms10m -XX:MaxHeapFreeRatio=40 -XX:MinHeapFreeRatio=15 -XX:-UseGCOverheadLimit"

#   fi

# fi


# The heap size of the jvm stared by hive shell script can be controlled via:

#

# export HADOOP_HEAPSIZE=1024

 

 

<수정>

# if [ "$SERVICE" = "cli" ]; then

#   if [ -z "$DEBUG" ]; then

     export HADOOP_OPTS="$HADOOP_OPTS -XX:NewRatio=12 -Xmx1g -Xms1g -XX:MaxHeapFreeRatio=40 -XX:MinHeapFreeRatio=15 -XX:+UseParNewGC -XX:-UseGCOverheadLimit"

#   else

#     export HADOOP_OPTS="$HADOOP_OPTS -XX:NewRatio=12 -Xms10m -XX:MaxHeapFreeRatio=40 -XX:MinHeapFreeRatio=15 -XX:-UseGCOverheadLimit"

#   fi

# fi


# The heap size of the jvm stared by hive shell script can be controlled via:

#

 export HADOOP_HEAPSIZE=1024

 


참고로, CDH5 lib를 yum으로 설치하면, 디렉토리는 다음과 같다.


/usr/lib/hive/

/usr/lib/hadoop

/usr/lib/hbase/

/usr/lib/avro/

/usr/bin/sqoop/
/usr/lib/hadoop-mapreduce/




4. hadoop streaming


hadoop streaming을 쓰려면, 아래 lib을 참조한다.

/usr/lib/hadoop-mapreduce/hadoop-streaming-2.6.0-cdh5.5.1.jar


$ hadoop jar /usr/lib/hadoop-mapreduce/hadoop-streaming-2.6.0-cdh5.5.1.jar -D mapred.job.priority=LOW -D mapred.job.name="test" -D mapred.output.compress=false  -output=하둡디렉토리위치 -mapper=map.py -file=map.py -numReduceTasks 0

Posted by '김용환'
,