Tez 整合Hadoop CDH 5.3.0安装部署

    子曰君子食无求饱,居无求安,敏于事而慎于言,就有道而正焉,可谓好学也已。

    译文:君子吃不求太饱,住不求太舒适,做事勤快,说话谨慎,向道德高的人学习,并能改正自己的缺点,这样就可以称得上好学了。

  最近要把CDH的版本换成了5.3.0,hive的版本从0.12换成了0.13,升级完成后,简单测试发现版本的升级对性能的影响非常大。hive在0.13中开始支持tez做为执行引擎来提高执行速度。

  

  Tez 和 MR 的对比图:

  图中可以看出原始的 MR 程序是多job 的DAG,每个job都会进行写盘和读盘操作,浪费了磁盘IO和网络IO。 Tez则把多job的DAG改为单个job的DAG任务,减少的中间结果的操作。

 

Tez 的安装部署:

  hadoop版本:2.5.0

  hive版本:0.13

  tez版本:0.4.1

 

  1.)下载tez源码,地址:http://archive.apache.org/dist/incubator/tez/tez-0.4.1-incubating/

  2.)编译:

    1:依赖环境

      a、JDK 1.7 +

      b、maven 3.0 +

      c、ProtocolBuffer 2.5.0

    2:修改pom.xml中的hadoop版本为对应的版本号 2.5.0

    3:编译命令:mvn clean package -DskipTests=true -Dmaven.javadoc.skip=true  静静的等待吧..........

  3.)上传编译后的Tez的tarball到集群的各个机器中,并解压到自己想要安装的目录中。

  4.)上传tez解压后的文件到HDFS中

    。建立目录 hadoop fs -mkdir /apps

    。上传文件 hadoop fs -put {TEZ_HOME} /apps/

  5.)在hadoop的配置文件目录中新建 tez-site.xml 配置文件

    。添加配置 tez.lib.uris 

1 <property>
2   <name>tez.lib.uris</name>
3   <value>${fs.defaultFS}/apps/tez,${fs.defaultFS}/apps/tez/lib</value>
4 </property>

   6.)修改 mapred-site.xml

  7.)在hadoop-env.sh 把 tez 的jar添加到HADOOP_CLASSPATH中

# TEZ class path 
export TEZ_HOME=/usr/lib/tez

for jar in `ls $TEZ_HOME |grep jar`; do    
    export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$TEZ_HOME/$jar 
done for jar in `ls $TEZ_HOME/lib`; do export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$TEZ_HOME/lib/$jar
done

 

  8.)至此 Tez 的部署结束,运行Tez的测试程序:hadoop jar tez-tests.jar testorderedwordcount <input> <output>

    如果能正常运行,就说明部署成功了。

  9.)修改hive的执行引擎为 Tez

1 <property>
2   <name>hive.execution.engine</name>
3   <value>tez</value>
4 </property>

  

  到此 Tez 整合 CDH 5.3.0 已经大功告成了。开始进入稳定性测试和性能优化吧。

  

  温馨提示: Tez 是需要每台机器都需要部署的。

  Tez官网: http://tez.apache.org/index.html

 

posted on 2015-01-08 12:49  奏乐  阅读(4560)  评论(2编辑  收藏  举报

导航