Tez安装整体过程以及各节点的配置

在/etc/profile中修改环境变量如下
export JAVA_HOME=/usr/java/jdk1.7.0_55-cloudera
export MAVEN_HOME=/usr/local/apache-maven-3.0.3
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$MAVEN_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib:/opt/cloudera/impalaodbc/lib/64
说明:   java 1.7.0    protoco 2.5.0   maven 3.0.3   Tez 0.4.1
第一步  首先安装protoc
  在/opt/cloudera/parcels/CDH-5.3.3-1.cdh5.3.3.p0.5/lib目录下进行下载
  下载完毕后进行解压 tar zxvf protobuf-2.5.0.tar.gz 

  进入到解压目录 cd protobuf-2.5.0 

  进行执行./configure   

(如果提示C错误,则执行

    yum install glibc-headers

    yum install gcc-c++
 )

 make

 make check

 make install

 安装完成后lib文件会在/usr/local/lib目录下

  设置变量 vi  /etc/profile

 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

 生效 source /etc/profile

 查看 protoc --version


第二部 安装maven
        首先下载,下载地址 apache-maven-3.0.3-bin.tar.gz

        下载后放在/usr/local目录下

    解压tar -xvf apache-maven-3.0.3-bin.tar.gz

    设置环境变量,编辑/etc/profile,添加如下文件

    export MAVEN_HOME=/usr/local/apache-maven-3.0.3
    export PATH=$MAVEN_HOME/bin:$PATH
    使其生效   source /etc/profile
    验证   mvn -v

第三部 安装部署Tez
下载到/etc目录下  
解压  tar -xvf  tez-0.4.1-incubating-src.tar.gz 
进入目录     tez-0.4.1-incubating-src(以下没说明均在该目录下进行)

编译,编译之前注意修改pom.xml中的相关配置,主要是把hadoop.version和protobuf.version修改成你环境下的版本号。

<protobuf.version>2.5.0</protobuf.version>   

<hadoop.version>2.5.0</hadoop.version>

执行命令:       

mvn clean install -DskipTests=true -Dmaven.javadoc.skip=true
完成之后在hdfs上创建目录/user/apps
hadoop fs -mkdir /user/apps
上传部分tez jars和他们的依赖包到hdfs中
hadoop fs -put /etc/tez-0.4.1-incubating-src/tez-dist/target/tez-0.4.1-incubating-full /user/apps
在/etc/hadoop/conf目录下创建tez-site.xml

<configuration>

<property>

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

<value>${fs.default.name}/user/apps/tez-0.4.1-incubating-full,${fs.default.name}/user/apps/tez-0.4.1-incubating-full/lib</value>

</property>

</configuration>

修改mapred-site.xml文件,将mapreduce.framework.name的值由yarn修改成yarn-tez(值为yarn-tez时通过tez执行,但正常的hive查询不能执行,如果使hive可以执行,必须修改为yarn)

mapreduce.map.output.compress的值由true改为false(true为压缩输出,但是执行Tez的时候会出现错误——很有可能是没有安装hadoop-snappy,false为非压缩输出,可执行查询语句,但没输出结果——仅仅192.168.8.206出现此情况,其它三个可以正常输出结果)

修改两个: 

<property>

    <name>mapreduce.framework.name</name>

    <value>yarn-tez</value>

</property>

<property>

    <name>mapreduce.map.output.compress</name>

    <value>false</value>

</property>

在hive/conf/hive-site.xml添加一个:

<property>

    <name>hive.execution.engine</name>

    <value>tez</value>

</property>

以上三个参数可以再hive下修改,通过"set mapreduce.framework.name;"命令查看值,

通过"set mapreduce.framework.name=yarn;"命令修改值。

配置HADOOP_CLASS  hadoop-env.sh中添加

export TEZ_HOME=/etc/tez/tez-dist/target/tez-0.4.1-incubating-full/tez-0.4.1-incubating-full

export HADOOP_CLASSPATH=${HADOOP_CLASSPATH}:${TEZ_HOME}/*:${TEZ_HOME}/lib/*

export TEZ_CONF_DIR=/etc/tez/conf/tez-site.xml

export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$TEZ_CONF_DIR

配置完成,重新启动Hive


第四部分 安装过程中遇到的问题就解决方法

1.第一个问题就是在安装protoc的时候,执行./configure时提示找不到C

   解决方法:安装C以及C++

    yum install glibc-headers

    yum install gcc-c++

2.在下载完tez-0.4.1-incubating-src.tar.gz之后进行解压,但是没有找到.../tez-0.4.1-incubating-src/tez-dist

下没有发现target目录

   解决方法:缺少tez jars和依赖包,执行这条命令:

   mvn clean install -DskipTests=true -Dmaven.javadoc.skip=true

3.没有找到mvn

    解决方法:安装mvn

4.在配置好tez-site.xml参数之后,执行查询语句,出现tez.lib.uris路径错误

    解决方法:缺少${fs.default.name}。依赖包放在hdfs上,在hdfs的绝对路径前添加${fs.default.name}。

5.在修改完mapred-site.xml之后,hive不能正常执行

    解决方法:mapreduce.framework.name和hive.execution.engine的参数要保持一致,

             如果mapreduce.framework.name=yarn-tez,则hive.execution.engine=tez

             如果mapreduce.framework.name=yarn,则hive.execution.engine=mr

6.tez的时候查询语句出现错误vertex failed

    解决方法:将输出设置为非压缩形式,即mapreduce.map.output.compress=false

7.DEPRECATED: Configuration property hive.metastore.local no longer has any effect. Make sure to provide a valid value for hive.metastore.uris if you are connecting to a remote metastore.

环境变量配置出错,在hadoop-env.sh中添加相关配置。


第五部分 安装结果以及mr和tez的测试总结

四个节点已经全部安装了Tez,都可以通过tez正常执行,其中209,207可以正常输出结果,208,206没有输出结果.

测试结果如下:

1.通过查询插入10G的数据分别通过tez和mr

    tez:用时943s    

    mr:用时1122s    

2.对1G大小的数据进行倒序输出前10条记录

    tez:用时200s左右

    mr:用时 560s左右

3.对50G数据分组查询

    tez:用时 1428s

    mr:用时 2576s

4.对小表数据进行统计行数

   tez:Time taken: 1.269 seconds, Fetched: 1 row(s)

   mr:Time taken: 36.005 seconds, Fetched: 1 row(s)

5.对1G大小的数据进行统计

   mr:Time taken: 544.501 seconds, Fetched: 1 row(s)

   tez:Time taken: 25.666 seconds, Fetched: 1 row(s)


Tez纵向分析:

a 统计查询

统计几条记录:总记录数4:Time taken: 1.276 seconds, Fetched: 1 row(s)

统计10M数据:总记录数579631:Time taken: 1.277 seconds, Fetched: 1 row(s)

统计100M数据:总记录数5796310:Time taken: 2.915 seconds, Fetched: 1 row(s)

统计1G数据,总记录数57963100:Time taken: 25.666 seconds, Fetched: 1 row(s)

统计10G数据,总记录数579631000:Time taken: 176.39 seconds, Fetched: 1 row(s)

b 按条件统计查询:

select count(*) from t_test_1000 where age=34; 

统计10G数据,总记录数14489000:Time taken: 229.171 seconds, Fetched: 1 row(s)

c 分组排序统计查询(多个MapReduce)

select age,count(id) from t_test_1000 group by age order by age asc;

统计10G数据,总记录数579631000:Time taken: 352.427 seconds, Fetched: 33 row(s)

d 按条件分组排序统计查询

select age,count(id) from t_test_1000 group by age order by age desc having count(id)>14492000

统计10G数据,总记录数579631000:Time taken: 294.501 seconds, Fetched: 7 row(s)

e 联合查询 

大表(1G)与小表(10M)关联,Tez中已进行了优化,当大表与小表关联时,优先小表加入内存。

select a.id,a.name,b.id,b.name from t_test_1 a join t_test_100 b on a.id=b.id limit 20;

Time taken: 213.145 seconds, Fetched: 20 row(s)


mr纵向分析

a 统计查询

统计几条记录:总记录数4:mr:Time taken: 36.005 seconds, Fetched: 1 row(s)

统计10M数据:总记录数579631:Time taken: 36.708 seconds, Fetched: 1 row(s)

统计100M数据:总记录数5796310:Time taken: 39.837 seconds, Fetched: 1 row(s)

统计1G数据,总记录数57963100:Time taken: 63.206 seconds, Fetched: 1 row(s)

统计10G数据,总记录数579631000:Time taken: 373.66 seconds, Fetched: 1 row(s)

b 按条件统计查询:

select count(*) from t_test_1000 where age=34; 

统计10G数据,输出总记录数14489000:Time taken: 443.052 seconds, Fetched: 1 row(s)

c 分组排序统计查询(多个MapReduce)

select age,count(id) from t_test_1000 group by age order by age asc;

统计10G数据,总记录数579631000:Time taken: 607.55 seconds, Fetched: 33 row(s)

Stage-Stage-1: Map: 40  Reduce: 10   Cumulative CPU: 719.15 sec   HDFS Read: 10414134363 HDFS Write: 1693 SUCCESS

Stage-Stage-2: Map: 1  Reduce: 1   Cumulative CPU: 4.28 sec   HDFS Read: 4088 HDFS Write: 394 SUCCESS

d 按条件分组排序统计查询

select age,count(id) from t_test_1000 group by age having count(id)>14492000 order by age desc;

统计10G数据,总记录数579631000:
e 联合查询

大表与小表关联,小表(10M)在前大表(1G)在后

select a.id,a.name,b.id,b.name from t_test_1 a join t_test_100 b on a.id=b.id limit 20;

Time taken: 51.731 seconds, Fetched: 20 row(s)

大表与小表关联,小表(10M)在前大表(10G)在后

select a.id,a.name,b.id,b.name from t_test_1 a join t_test_1000 b on a.id=b.id limit 20;

Time taken: 233.442 seconds, Fetched: 20 row(s)

大表与小表关联,大表(10G)在前小表(10M)在后

Time taken: 235.153 seconds, Fetched: 20 row(s)


将统计结果以统计表形式呈现如下:

方式

数据大小

Tez方式

Mr方式

统计查询

统计几条记录

1.276s

36.005s

统计10M数据

1.277s

36.708s

统计100M数据

2.914s

39.837s

统计1G数据

25.666s

63.206s

统计10G数据

176.39s

373.66s

按条件统计查询

统计10G数据

229.171s

443.052s

分组排序统计查询

统计10G数据

352.427s

607.55s

按条件分组排序统计查询

统计10G数据

294.501s

/

联合查询

大表(1G)小表(10M

213.145s

51.73s


总结:

Tez更适合对大量数据进行排序

在有排序的情况下tez的效率是mr的2.5~3.5倍。

在没有排序的情况下,tez的效率是mr的1.5~2倍。

在执行join的时候Tez的效率明显低于mr的执行效率,

tez执行时间不稳定,第一次执行时间较长,以后再次执行时间减少。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值