当前位置: 首页 > article >正文

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

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

目前已经更新到了:

  • 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.gz
cd apache-tez-0.9.0-bin/share

将tez的压缩包放到HDFS上:

hdfs dfs -mkdir -p /user/tez
hdfs 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/profile

export TEZ_CONF_DIR=$HADOOP_CONF_DIR
export TEZ_JARS=/opt/apps/tez/*:/opt/apps/tez/lib/*
export
HADOOP_CLASSPATH=$TEZ_CONF_DIR:$TEZ_JARS:$HADOOP_CLASSPATH

单次配置

Hive这是Tez执行

xhive

set 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://www.kler.cn/a/372006.html

相关文章:

  • python|利用ffmpeg按顺序合并指定目录内的ts文件
  • 高斯核函数(深入浅出)
  • docker-compose怎么写注释
  • 洛谷 P1725:琪露诺 ← 单调队列+DP
  • 在Windows上读写Linux磁盘镜像的一种方法
  • 如何理解 CNN 中的 RGB 图像和通道?
  • 力扣91~95题
  • Android 获取OAID
  • [BUG]warn(f“Failed to load image Python extension: {e}“)的解决办法
  • linux服务器LAMP的搭建
  • 深入理解Linux内核网络(九):容器网络虚拟化
  • 国标GB28181摄像机接入EasyGBS国标GB28181视频平台的亮点深入分析
  • ubantu系统之实现Ubuntu与Windows之间的复制粘贴
  • 计算机低能儿从0刷leetcode | 31.下一个排列
  • 重学SpringBoot3-Spring WebFlux之HttpHandler和HttpServer
  • Flux-IP-Adapter-V2版本发布,效果实测!是惊喜还是意外?
  • 【PythonWeb开发】Flask-RESTful风格编程
  • itertools模块的combinations很牛
  • 基于Springboot的在线考试与学习交流平台的设计与实现
  • Spring Boot:打造智能植物健康监测平台
  • QT找不到ffmpeg链接库解决方法
  • 用Java查询比特币实时行情 - 附免费查询接口
  • 深入理解Allan方差:用体重数据分析误差的时间尺度与稳定性
  • 《C++音频频谱分析:开启声音世界的神秘之门》
  • tomcat Java项目cpu飙升
  • Mybatis 批量操作存在则更新或者忽略,不存在则插入