CDH버전에서 tez를 그대로 빌드하면 샘플 jar는 잘 되는데 hive에서는 오류가 나기때문에 빌드부터 주의하기 바란다.

여기 적는건 CDH버전이 Hadoop 2.6.0-cdh5.4.4 이다. 참고할것.


1. 빌드하기


우선 소스코드부터 받자.

wget http://www.eu.apache.org/dist/tez/0.7.0/apache-tez-0.7.0-src.tar.gz



이제 JobContextImpl.java와 pom.xml을 조금 수정해야한다. 

http://tonywutao.github.io/2015/05/21/Build-Tez-for-CDH5-4-0/ 에 가보면 잘 설명잘되어는데

편의상 pom.xml과 JobContextImpl.java 수정한 파일도 첨부하겠다.


tez-cdh5.5.5-patch.zip



이제 빌드해보자. 

mvn -Pcdh5.4.4 clean package -Dtar -DskipTests=true -Dmaven.javadoc.skip=true



오류가 난다면 protocol buffer 2.5가 안깔렸거나, nodejs/npm 등의 설치가 안된걸수 있다. 이건 알아서 해결해라.



2. 필요한 파일 hdfs상에 올리기


빌드한곳의 ./tez-dist/target/ 폴더에보면 tez-0.7.0-minimal.tar.gz, tez-0.7.0.tar.gz 파일이 존재할것이다.

어짜피 해당 파일은 각 노드에 복사해야하고, tez-site파일도 만들어야하는데 hdfs에 올리자.


* tez-site.xml을 만들자

<configuration>

  <property>

    <name>tez.lib.uris</name>

    <value>hdfs:///apps/tez-0.7.0/tez-0.7.0.tar.gz</value>

</property>

</configuration>


* hdfs상에 tar.gz 파일이랑 설정을  /apps/tez-0.7.0 에 올릴것이다.

hdfs dfs -mkdir -p /apps/tez-0.7.0/

hdfs put  ./tez-dist/target/*.gz   /apps/tez-0.7.0

hdfs put tez-site.xml   /apps/tez-0.7.0



3. 각노드에 복사하기

이제 hdfs올린걸 하둡 하위 노드에 설치하자

편의상 /home1/user/tez-jar/0.7.0 폴더에 설치할것이다. 잘기억해두자.


각 서버 돌면서 저거 실행하면 tar.gz 다운받고 압축풀어주는것뿐이다. 그리고 설정파일(tez-site.xml이랑)

mkdir -p /home1/user/tez-jars/0.7.0/

hdfs dfs -get /apps/tez-0.7.0/tez-0.7.0-minimal.tar.gz /home1/user/tez-jars/0.7.0

hdfs dfs -get /apps/tez-0.7.0/tez-site.xml /home1/user/tez-jars/0.7.0

tar xvzf /home1/user/tez-jars/0.7.0/tez-0.7.0-minimal.tar.gz -C /home1/user/tez-jars/0.7.0/



4. 환경변수 지정하기

여기서부터는 조금 삽질하다가 어느순간 돌아간거라 좀 애매한데 hadoop-env.sh 와 hive-env.sh 에 추가로 적어줬었다.


hadoop-env.sh 

...생략...

export HADOOP_CLIENT_OPTS="-Djava.net.preferIPv4Stack=true $HADOOP_CLIENT_OPTS"

export TEZ_JARS=/home1/user/tez-jars/0.7.0

export TEZ_CONF_DIR=/home1/user/tez-jars/0.7.0

export HADOOP_CLASSPATH=${HADOOP_CLASSPATH}:${TEZ_CONF_DIR}:${TEZ_JARS}/*:${TEZ_JARS}/lib/*

...생략...



hive-env.sh 

...생략...

TEZ_INSTALL_DIR=/home1/user/tez-jars/0.7.0

TEZ_JARS=$(echo "$TEZ_INSTALL_DIR"/*.jar | tr ' ' ':'):$(echo "$TEZ_INSTALL_DIR"/lib/*.jar | tr ' ' ':')

HIVE_AUX_JARS_PATH=$TEZ_JARS

...생략....







그리고 하둡 재기동후 hive커멘드에서 set hive.execution.engine = tez;  로 하면 tez엔진으로 돌아간다 (기본값은 mr)

가장 도움이 되었던 사이트 링크


* 빌드관련

http://tonywutao.github.io/2015/05/21/Build-Tez-for-CDH5-4-0/

http://tez.apache.org/install.html


* 환경세팅관련

http://qiita.com/ajis_ka/items/257dbb19d740e963830b



+ Recent posts