在文件存储HDFS版上使用 Apache Tez

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: 本文档主要介绍在挂载文件存储HDFS版的 Hadoop 集群上安装及使用 Tez。

一 目的

本文档主要介绍在挂载文件存储HDFS的 Hadoop 集群上安装及使用 Tez。


二 背景信息

Apache Tez 是构建在 Hadoop Yarn 之上支持分布式 DAG(Directed Acyclic Graph)的计算框架,支持通过复杂的DAG描述并处理大数据任务。Tez 主要使用在Apache Hive 中,作为 Hive 的一种执行引擎。与 Hive on MR(MapReduce)相比,Hive on Tez 具有更好的查询性能和稳定性。


三 准备工作

  1. 开通文件存储HDFS服务并创建文件系统实例和挂载点,详细文档请参见:快速入门
  2. 在Hadoop集群所有节点上安装JDK。版本不低于 1.8。
  3. 在Hadoop集群中配置文件存储HDFS实例,详细文档请参见:挂载文件系统
  4. 在本文档中使用的 Apache Hadoop 版本为 2.8.5。使用的 Tez 版本为 0.9.2。

说明:为避免兼容性问题,使用 Tez 时需要按照集群 Hadoop 版本重新编译。详细编译步骤参考 Tez 官网文档:Tez 安装


四 安装 Tez

在Tez 官网文档中共有三种安装方式,异同如下。本文档主要以方式一进行安装使用,详细的安装步骤参考 Tez 官网文档:Tez 安装

安装方式

描述

在文件存储HDFS上使用Tez

方式一
(官网推荐)

  1. Tez 安装在 Hadoop 集群时使用本身预打包的 Hadoop 依赖
  2. 支持Hadoop集群滚动升级

需要将文件存储HDFS Java SDK 放到 Tez 的依赖中

方式二

  1. Tez 安装在 Hadoop 集群时中时使用集群环境中的 Hadoop 依赖
  2. 不支持Hadoop集群滚动升级

如果Hadoop 环境中已配置文件存储HDFS则不需要额外配置

方式三

  1. Tez 安装在 Hadoop 集群时使用额外的 Hadoop 依赖
  2. 支持Hadoop集群滚动升级

需要将文件存储HDFS Java SDK 放到 Tez 的依赖中或者额外的 Hadoop 依赖中

4.1 方式一 (官网推荐方式)

第三章节准备工作中对 Tez 编译后有如下两个压缩包

tez-dist/target/tez-0.9.2-minimal.tar.gz // 最小压缩包,仅包含 Tez 依赖
tez-dist/target/tez-0.9.2.tar.gz // 完整压缩包,包含 Tez 和 Hadoop 依赖
  1. 将编译好的完整压缩包上传至文件存储HDFS版目录下
## 解压已经编译好的完整压缩包 tez-0.9.2.tar.gzmkdir tez-0.9.2
tar -zxvf tez-0.9.2.tar.gz -C tez-0.9.2/
## 将已下载的文件存储HDFS版 Java SDK 放到 tez-0.9.2/lib 目录下cp aliyun-sdk-dfs-x.y.z.jar tez-0.9.2/lib
## 重新压缩tar -zcvf tez-0.9.2.tar.gz -C tez-0.9.2/ .
## 查看压缩包中是否包含文件存储HDFS版 Java SDKtar -ztvf tez-0.9.2.tar.gz | grep aliyun-sdk-dfs-x.y.z.jar
## 将包含最新文件存储HDFS版 Java SDK 的完整压缩包放到文件存储HDFS版实例目录下hadoop fs -mkdir-p /apps/tez-0.9.2
hadoop fs -put tez-0.9.2.tar.gz /apps/tez-0.9.2
  1. ${HADOOP_HOME}/etc/hadoop 下新建文件  tez-site.xml并同步到集群所有节点
<?xml version="1.0"encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl"href="configuration.xsl"?>
<configuration>
    <property>
        <name>tez.lib.uris</name>
        <value>${fs.defaultFS}/apps/tez-0.9.2/tez-0.9.2.tar.gz</value>
    </property>
    <property>
        <name>tez.use.cluster.hadoop-libs</name>
        <value>false</value>
    </property>
</configuration>
  1. 客户端节点添加 Tez 依赖库,将编译好的最小压缩包解压到本地目录,并将该目录同步到集群所有节点
mkdir-p /opt/module/tez-0.9.2
tar -xvzf tez-0.9.2-minimal.tar.gz -C /opt/module/tez-0.9.2
  1. 在 Hadoop Classpath 中添加 tez-site.xml 配置及最小压缩包解压后的 Jar 文件,并同步修改到集群所有节点
## 在 hadoop-env.sh 文件末尾添加如下内容vim${HADOOP_HOME}/etc/hadoop/hadoop-env.sh
exportTEZ_CONF_DIR=${HADOOP_HOME}/etc/hadoop/tez-site.xml
exportTEZ_JARS=/opt/module/tez-0.9.2
exportHADOOP_CLASSPATH=${HADOOP_CLASSPATH}:${TEZ_CONF_DIR}:${TEZ_JARS}/*:${TEZ_JARS}/lib/*

4.2 方式二

与方式一章节中的 1 和 2 步骤不同,其他一致

  1. 将编译好的 Tez 最小压缩包上传至文件存储HDFS版目录下
hadoop fs -mkdir-p /apps/tez-0.9.2-minimal
hadoop fs -put tez-0.9.2-minimal.tar.gz /apps/tez-0.9.2-minimal
  1. 在 ${HADOOP_HOME}/etc/hadoop 下新建文件  tez-site.xml 并集群同步
<?xmlversion="1.0" encoding="UTF-8"?><?xml-stylesheettype="text/xsl" href="configuration.xsl"?><configuration><property><name>tez.lib.uris</name><value>${fs.defaultFS}/apps/tez-0.9.2-minimal/tez-0.9.2-minimal.tar.gz</value></property><property><name>tez.use.cluster.hadoop-libs</name><value>true</value></property></configuration>
  1. 剩余安装步骤参考方式一中的第 3 和第 4 步

4.3 方式三

与方式一章节中的 1 和 2 步骤不同,其他一致

使用该方式需要重新编译 Hadoop , 获取 hadoop-dist/target/hadoop-x.y.z.tar.gz 压缩包

  1. 将编译好的 Tez 最小压缩包 和 依赖的 Hadoop 压缩包上传至文件存储HDFS版目录下
## 解压已经编译好的最小安装包 tez-0.9.2-minimal.tar.gzmkdir tez-0.9.2-minimal-new tez-0.9.2-minimal
tar -zxvf tez-0.9.2-minimal.tar.gz -C tez-0.9.2-minimal/
## 将已下载的文件存储HDFS版 Java SDK 放到 tez-0.9.2-minimal/lib 目录下cp aliyun-sdk-dfs-x.y.z.jar tez-0.9.2-minimal/lib
## 重新压缩tar -zcvf tez-0.9.2-minimal-new/tez-0.9.2-minimal.tar.gz -C tez-0.9.2-minimal/ .
## 查看压缩包中是否包含文件存储HDFS版 Java SDKtar -ztvf tez-0.9.2-minimal-new/tez-0.9.2-minimal.tar.gz | grep aliyun-sdk-dfs-x.y.z.jar
## 将包含最新文件存储HDFS版 Java SDK 的压缩包放到文件存储HDFS版实例目录下hadoop fs -mkdir-p /apps/tez-0.9.2-minimal
hadoop fs -put tez-0.9.2-minimal-new/tez-0.9.2-minimal.tar.gz /apps/tez-0.9.2-minimal
## 将 Hadoop 编译后的 hadoop-dist/target/hadoop-x.y.z.tar.gz 压缩包放到文件存储HDFS版 目录下hadoop fs -mkdir-p /apps/hadoop-2.8.5
hadoop fs -put hadoop-dist/target/hadoop-2.8.5.tar.gz /apps/hadoop-2.8.5
  1. 在 ${HADOOP_HOME}/etc/hadoop 下新建文件  tez-site.xml 并集群同步
<?xmlversion="1.0" encoding="UTF-8"?><?xml-stylesheettype="text/xsl" href="configuration.xsl"?><configuration><property><name>tez.lib.uris</name><value>${fs.defaultFS}/apps/tez-0.9.2-minimal/tez-0.9.2-minimal.tar.gz#tez,${fs.defaultFS}/apps/hadoop-2.8.5/hadoop-2.8.5.tar.gz#hadoop-mapreduce</value></property><property><name>tez.use.cluster.hadoop-libs</name><value>false</value></property><property><name>tez.lib.uris.classpath</name><value>./tez/*:./tez/lib/*:./hadoop-mapreduce/hadoop-2.8.5/share/hadoop/common/*:./hadoop-mapreduce/hadoop-2.8.5/share/hadoop/common/lib/*:./hadoop-mapreduce/hadoop-2.8.5/share/hadoop/hdfs/*:./hadoop-mapreduce/hadoop-2.8.5/share/hadoop/hdfs/lib/*:./hadoop-mapreduce/hadoop-2.8.5/share/hadoop/yarn/*:./hadoop-mapreduce/hadoop-2.8.5/share/hadoop/yarn/lib/*:./hadoop-mapreduce/hadoop-2.8.5/share/hadoop/mapreduce/*:./hadoop-mapreduce/hadoop-2.8.5/share/hadoop/mapreduce/lib/*</value></property></configuration>
  1. 剩余安装步骤参考方式一中的第 3 和第 4 步

五 验证

  1. 测试集群 Tez 引擎上的任务是否可用
## 生成测试数据${HADOOP_HOME}/bin/hadoop jar  ${HADOOP_HOME}/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.5.jar \
randomtextwriter \
-D mapreduce.randomtextwriter.totalbytes=10240 \
-D mapreduce.randomtextwriter.bytespermap=1024 \
dfs://f-xxxxxxx.cn-zhangjiakou.dfs.aliyuncs.com:10290/input
## 在本地解压的 Tez 最小压缩包中包含 tez-examples-0.9.2.jar${HADOOP_HOME}/bin/hadoop jar /opt/module/tez-0.9.2/tez-examples-0.9.2.jar orderedwordcount   dfs://f-xxxxxxx.cn-zhangjiakou.dfs.aliyuncs.com:10290/input dfs://f-xxxxxxx.cn-zhangjiakou.dfs.aliyuncs.com:10290/output

查看作业执行引擎是否为 TEZ


  1. 测试集群 MapReduce 引擎上的任务是否可用
${HADOOP_HOME}/bin/hadoop jar ${HADOOP_HOME}/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-2.8.5-tests.jar sleep-mt1-rt1-m1-r1


  1. Hive 验证
## 使用 mapreduce 引擎进行测试hive> SET hive.execution.engine=mr;
hive> DROP TABLE IF EXISTS user_info_test;
hive> CREATE TABLE user_info_test(user_id BIGINT, firstname STRING, lastname STRING, country STRING);
hive> INSERT INTO user_info_test VALUES(1,'Dennis','Hu','CN'),(2,'Json','Lv','Jpn'),(3,'Mike','Lu','USA');
hive> SELECT country,count(*) FROM user_info_test GROUP BY country;

## 使用 tez 引擎进行测试hive> SET hive.execution.engine=tez;
hive> DROP TABLE IF EXISTS user_info_test;
hive> CREATE TABLE user_info_test(user_id BIGINT, firstname STRING, lastname STRING, country STRING);
hive> INSERT INTO user_info_test VALUES(1,'Dennis','Hu','CN'),(2,'Json','Lv','Jpn'),(3,'Mike','Lu','USA');
hive> SELECT country,count(*) FROM user_info_test GROUP BY country;


了解更多关于文件存储HDFS版的产品信息,欢迎访问https://www.aliyun.com/product/alidfs

如果您对文件存储HDFS版有任何问题,欢迎钉钉扫描以下二维码加入文件存储HDFS版技术交流群。

目录
相关文章
|
SQL 分布式计算 资源调度
apache tez 编译安装与验证
本文介绍apache tez 编译安装与验证
apache tez 编译安装与验证
|
分布式计算 Apache Hadoop
|
资源调度 API Apache
|
3月前
|
消息中间件 Kafka Apache
Apache Flink 是一个开源的分布式流处理框架
Apache Flink 是一个开源的分布式流处理框架
598 5
|
2月前
|
消息中间件 API Apache
官宣|阿里巴巴捐赠的 Flink CDC 项目正式加入 Apache 基金会
本文整理自阿里云开源大数据平台徐榜江 (雪尽),关于阿里巴巴捐赠的 Flink CDC 项目正式加入 Apache 基金会。
1631 2
官宣|阿里巴巴捐赠的 Flink CDC 项目正式加入 Apache 基金会
|
2月前
|
SQL Java API
官宣|Apache Flink 1.19 发布公告
Apache Flink PMC(项目管理委员)很高兴地宣布发布 Apache Flink 1.19.0。
1634 2
官宣|Apache Flink 1.19 发布公告
|
2月前
|
SQL Apache 流计算
Apache Flink官方网站提供了关于如何使用Docker进行Flink CDC测试的文档
【2月更文挑战第25天】Apache Flink官方网站提供了关于如何使用Docker进行Flink CDC测试的文档
294 3
|
2月前
|
Oracle 关系型数据库 流计算
flink cdc 同步问题之报错org.apache.flink.util.SerializedThrowable:如何解决
Flink CDC(Change Data Capture)是一个基于Apache Flink的实时数据变更捕获库,用于实现数据库的实时同步和变更流的处理;在本汇总中,我们组织了关于Flink CDC产品在实践中用户经常提出的问题及其解答,目的是辅助用户更好地理解和应用这一技术,优化实时数据处理流程。
352 0
|
2月前
|
XML Java Apache
Apache Flink自定义 logback xml配置
Apache Flink自定义 logback xml配置
170 0
|
2月前
|
消息中间件 Java Kafka
Apache Hudi + Flink作业运行指南
Apache Hudi + Flink作业运行指南
97 1

相关实验场景

更多

推荐镜像

更多