当前位置:首页 » 《关注互联网》 » 正文

大数据-193 Apache Tez - DAG 作业计算框架 核心解释 工作原理 配置集成

14 人参与  2024年10月31日 12:07  分类 : 《关注互联网》  评论

点击全文阅读


点一下关注吧!!!非常感谢!!持续更新!!!

目前已经更新到了:

Hadoop(已更完)HDFS(已更完)MapReduce(已更完)Hive(已更完)Flume(已更完)Sqoop(已更完)Zookeeper(已更完)HBase(已更完)Redis (已更完)Kafka(已更完)Spark(已更完)Flink(已更完)ClickHouse(已更完)Kudu(已更完)Druid(已更完)Kylin(已更完)Elasticsearch(已更完)DataX(已更完)Tez

章节内容

上节我们完成了如下的内容:

DataX 异构数据源DataX 使用指南 上手测试

在这里插入图片描述

基本介绍

Tez 是一个运行在 Hadoop 生态系统中的高效数据处理框架,旨在优化批处理和交互式查询。它是 Apache 基金会下的一个开源项目,作为替代 MapReduce 的执行引擎使用。Tez 被设计为高度可扩展和灵活的平台,可以处理复杂的数据处理任务,而不仅限于传统的 MapReduce 计算模型。

Tez 的背景

MapReduce 的局限性: Hadoop 最初是基于 MapReduce 编程模型,这种模型虽然简单,但在处理复杂数据处理任务时效率较低。MapReduce 的每一个任务阶段(map 或 reduce)都需要写入磁盘,这会增加 IO 开销和延迟。Tez 的引入: 为了解决这个问题,Tez 允许开发者灵活地构建数据处理 DAG(有向无环图),从而减少中间的磁盘 IO 和不必要的数据处理步骤,提高执行效率。

核心解释

Tez将MapTask和ReduceTask进一步拆分为如下所示的内容:
在这里插入图片描述
Tez的Task由Input、Processor、Output阶段组成,可以表达所有复杂的Map、Reduce操作,如下图所示:

在这里插入图片描述
Tez可以将多个有依赖的作业转换为一个作业(只需要写一次HDFS,中间环节较少),从而大大提升DAG作业的性能,Tez已经被Hortonworks用于Hive引擎优化,经过测试一般小任务比HiveMR的2-3倍速度左右,大任务7-10倍左右,根据情况不同可能不一样。

在这里插入图片描述

Tez+Hive仍然采用MapReduce计算框架,但对DAG的作业依赖关系进行了裁剪,并将多个小作业合并成一个大作业,不仅减少了计算量,而且写HDFS次数也大大减少。

Tez 的工作原理

DAG 结构: 在 Tez 中,数据处理任务被表示为一个 DAG(Directed Acyclic Graph,有向无环图),其中每个节点代表一个处理任务,边表示数据的流动方向。不同于 MapReduce 固定的 map 和 reduce 阶段,Tez 可以定义任意数量的任务节点和数据流,从而更加灵活高效。按需计算模型: Tez 支持按需加载数据,避免了不必要的中间结果存储。数据可以直接在内存中传递,减少磁盘操作,从而加速计算。

Tez 的特点

高效资源管理: Tez 与 YARN(Yet Another Resource Negotiator)无缝集成,能够更高效地分配和使用集群资源。它可以根据工作负载的需求动态调整资源使用,避免了资源的浪费。可重用的容器: Tez 可以在多个任务之间重用容器(容器是 YARN 分配的执行环境),减少了每次任务启动的开销。延迟优化: Tez 可以通过减少中间数据的存储和优化数据流来降低任务执行的延迟,这使得它比传统的 MapReduce 更适合实时或近实时的数据处理。容错性: Tez 支持任务重试和部分失败重算,这意味着在某些任务失败时,不需要重新计算整个作业,能够提高整体的容错性和稳定性。

安装部署

下载软件包: apache-tez-0.9.2-bin.tar.gz
解压缩:

tar -zxvf apache-tez-0.9.0-bin.tar.gzcd apache-tez-0.9.0-bin/share

将tez的压缩包放到HDFS上:

hdfs dfs -mkdir -p /user/tezhdfs dfs -put tez.tar.gz /user/tez

$HADOOP_HOME/etc/hadoop/ 下创建 tez-site.xml 文件,做如下配置:

<?xml version="1.0" encoding="UTF-8"?><configuration>  <!-- 指定在hdfs上的tez包文件 -->  <property>    <name>tez.lib.uris</name>    <value>hdfs://hadoop1:9000/user/tez/tez.tar.gz</value>  </property></configuration>

保存后将文件复制到集群所有节点

环境变量

增加客户端节点的配置:

vim /etc/profileexport TEZ_CONF_DIR=$HADOOP_CONF_DIRexport TEZ_JARS=/opt/apps/tez/*:/opt/apps/tez/lib/*exportHADOOP_CLASSPATH=$TEZ_CONF_DIR:$TEZ_JARS:$HADOOP_CLASSPATH

单次配置

Hive这是Tez执行

xhiveset hive.execution.engine=tez;

永久配置

如果是想默认使用Tez,则需要在配置文件中进行修改:

vim $HIVE_HOME/conf/hive-site.xml<property><name>hive.execution.engine</name><value>tez</value></property>

Tez 与 Hive、Pig 的集成

Hive on Tez: Hive 是一种基于 SQL 的数据仓库工具,最初使用 MapReduce 作为底层引擎。自从引入 Tez 后,Hive on Tez 大幅提升了查询性能,尤其是在复杂查询场景中。相比于传统的 MapReduce,Tez 的 DAG 模型使得 Hive 可以以更加并行化的方式执行查询。Pig on Tez: Pig 是一种面向数据流的编程语言,通常用于分析和处理大规模数据。Tez 也作为 Pig 的底层引擎使用,极大地提升了 Pig 脚本的执行效率。

Tez 的优势

高性能: 通过减少磁盘 IO、优化任务并行化和重用资源,Tez 显著提升了数据处理的性能,尤其是在复杂查询和数据流处理中。灵活性: Tez 允许用户根据具体的数据处理需求,构建任意复杂的 DAG,从而打破了 MapReduce 固定阶段的限制。可扩展性: Tez 在大规模数据处理环境中表现出色,适合在大数据集群中处理大规模、复杂的批处理和流式处理任务。

使用场景

数据仓库查询加速: 许多使用 Hive 的企业已经转向 Tez 来加速 SQL 查询,尤其是涉及到大数据集和复杂操作的场景。批处理任务优化: Tez 的 DAG 模型使其非常适合执行复杂的批处理任务,如多阶段数据清洗、转换和加载(ETL)工作流。实时或近实时处理: Tez 可以用于需要低延迟的场景,如实时数据分析和在线报告。

Tez 的局限性

学习曲线: 虽然 Tez 比 MapReduce 灵活高效,但它也更加复杂,要求开发者了解 DAG 模型及其配置。任务复杂度: 对于非常简单的任务,Tez 的性能提升可能不明显,因此 Tez 更适用于复杂的、多阶段的任务场景。

点击全文阅读


本文链接:http://zhangshiyu.com/post/180407.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1