20309 发表于 2015-11-11 10:42:40

apache tez on hadoop-2.7.1

  这几天要求应用tez在Hadoop和Hive上运行,参考了官网和网上的一些资料,今天终于能运行tez方式的Hadoop和Hive.
  软件版本:
  Hadoop:Hadoop-2.7.1
  Hive:apache-hive-1.2.1-bin
  Tez:apache-tez-0.5.4-src 最新的0.7的tez版本编译有些问题,这个版本的是可以通过的
  Tez 编译方法:(只需要在一个节点安装tez就好,配置也是只在一个节点配置就OK)
  1.cd apache-tez-0.5.4-src
  2.vim pom.xml在这里面找到Hadoop的版本,改成自己集群的Hadoop版本
  3.mvn compile
  4.mvnclean package -Dtar -DskipTests=true -Dmaven.javadoc.skip=true
  5.编译成功后将在/apache-tez-0.5.4-src/tez-dist/target 路径下发现tez-0.5.4.tar.gz
  6.解压tez-0.5.4.tar.gz 会发现如下文件


  7.在Hadoop_HOME的share文件下建立文件夹tez,将上图的tez的文件放进新建文件中
  mv tez-0.5.4.tar.gz   $Hadoop_HOME/share/tez之后tar -zxvf tez-0.5.4.tar.gz && rm -fr tez-0.5.4.tar.gz
  8.将解压的tez上传到HDFS hadoop dfs -mkdir /tez
  hadoop dfs -put tez/* /tez/
  9.修改相关配置:
  在$Hadoop_HOME/etc/hadoop 中增加tez-site.xml
  tez.lib.uris的两个路径分别是解压后tez的两个路径
  如果你的hadoop是2.2.0的增加如下:
  <configuration>
    <property>
      <name>tez.lib.uris</name>
       <value>/tez/lib,/tez/</value>
    </property>
</configuration>

  要是2.6.0以上的增加如下:
  <property>
    <name>tez.lib.uris</name>
    <value>${fs.default.name}/tez,${fs.default.name}/tez/lib/</value>
</property>
<property>
    <name>tez.am.resource.memory.mb</name>
    <value>1024</value>
</property>

  10.将mapre-site.xml中的
  mapreduce.framework.name的格式从yarn改为yarn-tez

  <property>
         <name>mapreduce.framework.name</name>
         <value>yarn-tez</value>
</property>

  11.将hadoop-env.sh 中添加如下:
  export TEZ_CONF_DIR=$HADOOP_HOME/etc/hadoop/tez-site.xml
  export TEZ_JARS=$HADOOP_HOME/share/tez
export HADOOP_CLASSPATH=${CLASSPATH}:$TEZ_CONF_DIR:$TEZ_JARS/*:$TEZ_JARS/lib/*

  12.之后重新启动Hadoop
  运行随便一个example例子则可,网页信息如下:
  

  已经不是mapreduce而是TEZ的形式了
  而Hive运行成功如下:
  首先要进入hive
  选择运行格式:
  set hive.execution.engine=tez;

之后运行sql语句就可以
  运行结果如下:


  

  之后提供下编译好的tez的包,免得编译不过的同学停在编译上
  
页: [1]
查看完整版本: apache tez on hadoop-2.7.1