린아저씨의 잡학사전

지난글에서 Apache Tez는 무엇이고 기존의 Hive 엔진인 MapReduce와는 어떻게 다른지에 대해 얘기했었습니다.

이번에는 실제로 Apache Tez를 다운받아서 구성하고 Yarn을 통해 Tez를 실행시켜 Word Count 예제까지 실행시켜 보려고 합니다.

 

Apache Tez를 이용하기 위해서는 먼저 소스파일을 다운받아서 빌드를 진행해야합니다.

소스파일 다운로드 아래 링크의 Git에서 최신 릴리즈를 다운받으면 됩니다.

github.com/apache/tez/releases

 

Releases · apache/tez

Apache Tez. Contribute to apache/tez development by creating an account on GitHub.

github.com

Apache Tez의 Apahce 홈페이지 보다는 Git에서 다운받는 것이 더 최신 버전을 다운 받을 수 있습니다.

 

다운로드가 완료되면 압축을 풀고 빌드하기 전 빌드에 필요한 라이브러리를 설치해 줍니다.

sudo apt install -y autoconf automake libtool curl make g++

 

그리고 protobuf 2.5.0 버전이 반드시 설치가 되어 있어야 합니다.

혹시 protobuf 2.5.0 버전이 설치되어 있지 않을 경우 다음과 같이 protobuf git에서 다운받아 설치를 해줍니다.

$ wget https://github.com/google/protobuf/releases/download/v2.5.0/protobuf-2.5.0.tar.gz
$ tar xvf protobuf-2.5.0.tar.gz
$ cd protobuf-2.5.0
$ ./autogen.sh
$ ./configure
$ make
$ sudo make install
$ sudo idconfig
$ protoc --version

이렇게 모든 라이브러리 설치가 완료되었으면, 압축을 풀고 빌드를 해줍니다.

$tar xvfz apache-tez-0.10.0-src.tar.gz
$cd apache-tez-0.10.0
$mvn clean package -DskipTests=true -Dmaven.javadoc.skip=true

저의 경우에는 빌드하는데 10여분의 시간이 걸렸습니다. 

 

빌드가 완료되면 apache-tez-0.10.0-src/tez-dist/target 디렉터리에 빌드가 완료된 라이브러리가 생성됩니다.

정상적으로 빌드가 완료되었으면 tez의 환경설정 파일을 생성해 줍니다.

 

$vi tez-site.xmp

<configuration>

    <property>
      <name>tez.lib.uris</name>
      <value>${fs.defaultFS}/apps/tez-0.8.5/tez-0.8.5.tar.gz</value>
    </property>
    
</configuration>

 

이제 HDFS 경로에 Tez Application Job이 실행되면서 사용할 라이브러리를 업로드해주면 됩니다.

$ hdfs dfs -mkdir /apps/tez-0.10.0
$ hdfs dfs -put tez-0.8.5-minimal.tar.gz /apps/tez-0.10.0

 

여기까지 완료가 되었으면 Tez 설치의 9할이 끝났습니다.

Tez를 실행시킬 Yarn 환경설정에 Tez에 대한 설정을 추가해줍니다.

 

Hadoop3 버전부터는 일반적으로 hadoop-env.sh 파일에 설정을 추가하지만, Yarn만 사용할 경우에는 yarn-env.sh 파일에 설정을 추가하여도 됩니다.

# Tez configurations
export TEZ_CONF_DIR=/data/lib/tez-0.10.0
export TEZ_JARS=/data/lib/tez-0.10.0
export HADOOP_CLASSPATH=${HADOOP_CLASSPATH}:${TEZ_CONF_DIR}:${TEZ_JARS}/*:${TEZ_JARS}/lib/*

 

이제 모든 설정은 완료되었습니다.

Yarn에서 해당 설정을 적용할 수 있도록 재시작을 진행해줍니다.

 

마지막으로 정상적으로 Tez로 작업을 실행되는지 확인해 봅시다.

$hadoop jar /data/lib/tez-0.10.0/tez-examples.jar orderedwordcount /user/testuser/tez_wordcount_input /user/testuser/tez_wordcount_output

 

정상적으로 wordcount가 잘 돌아서 output 경로에 결과값이 떨어지면 tez 설치가 끝난 것입니다.

 

저의 테스트 환경은 Ubuntu18.04 / OpenJDK1.8.0_252 버전으로 진행되었기 때문에 혹 환경이 다를 경우 에러가 날 수도 있습니다. 이 경우 댓글을 달아주시면 도와드릴 수 있는 부분까지 도움을 드리도록 하겠습니다.

 

공유하기

facebook twitter kakaoTalk kakaostory naver band