Apache Tez 了解

article/2025/11/1 3:30:16

转发自这位大佬博客:https://www.cnblogs.com/rongfengliang/p/6991020.html

你可能听说过Apache Tez,它是一个针对Hadoop数据处理应用程序的新分布式执行框架。但是它到底是什么呢?它的工作原理是什么?哪些人应该使用它,为什么?如果你有这些疑问,那么可以看一下Bikas Saha和Arun Murthy提供的呈现“Apache Tez: 加速Hadoop查询处理”,在这个呈现中他们讨论了Tez的设计,它的一些突出亮点,同时还分享了通过让Hive使用Tez而不是MapReduce而获得的一些初始成果。

Tez是Apache最新的支持DAG作业的开源计算框架,它可以将多个有依赖的作业转换为一个作业从而大幅提升DAG作业的性能。Tez并不直接面向最终用户——事实上它允许开发者为最终用户构建性能更快、扩展性更好的应用程序。Hadoop传统上是一个大量数据批处理平台。但是,有很多用例需要近乎实时的查询处理性能。还有一些工作则不太适合MapReduce,例如机器学习。Tez的目的就是帮助Hadoop处理这些用例场景。

在这里插入图片描述

Tez项目的目标是支持高度定制化,这样它就能够满足各种用例的需要,让人们不必借助其他的外部方式就能完成自己的工作,如果 Hive和 Pig 这样的项目使用Tez而不是MapReduce作为其数据处理的骨干,那么将会显著提升它们的响应时间。Tez构建在YARN之上,后者是Hadoop所使用的新资源管理框架。

设计哲学
Tez产生的主要原因是绕开MapReduce所施加的限制。除了必须要编写Mapper和Reducer的限制之外,强制让所有类型的计算都满足这一范例还有效率低下的问题——例如使用HDFS存储多个MR作业之间的临时数据,这是一个负载。在Hive中,查询需要对不相关的key进行多次shuffle操作的场景非常普遍,例如join - grp by - window function - order by。

Tez设计哲学里面的关键元素包括:
允许开发人员(也包括最终用户)以最有效的方式做他们想做的事情
更好的执行性能

Tez之所以能够实现这些目标依赖于以下内容:
具有表现力的数据流API——Tez团队希望通过一套富有表现力的数据流定义API让用户能够描述他们所要运行计算的有向无环图 (DAG)。为了达到这个目的,Tez实现了一个结构化类型的API,你可以在其中添加所有的处理器和边,并可视化实际构建的图形。
灵活的输入—处理器—输出(Input-Processor-Output)运行时模型——可以通过连接不同的输入、处理器和输出动态地构建运行时执行器。
数据类型无关性——仅关心数据的移动,不关心数据格式(键值对、面向元组的格式等)。
动态图重新配置
简单地部署——Tez完全是一个客户端应用程序,它利用了YARN的本地资源和分布式缓存。就Tez的使用而言,你不需要在自己的集群上部署任何内容,仅需要将相关的Tez类库上传到HDFS上,然后使用Tez客户端提交这些类库即可。

你甚至可以在你的集群上放置两份类库。一份用于产品环境,它使用稳定版本供所有的生产任务使用;另一份使用最新版本,供用户体验。这两份类库相互独立,互不影响。
Tez能够运行任意MR任务,不需要做任何改动。这样能够让那些现在依赖于MR的工具实现分布迁移。
接下来让我们详细地探索一下这些表现力丰富的数据流API——看看我们可以使用它们做些什么?例如,你可以使用MRR模式而不是使用多个MapReduce任务,这样一个单独的map就可以有多个reduce阶段;并且这样做数据流可以在不同的处理器之间流转,不需要把任何内容写入HDFS(将会被写入磁盘,但这仅仅是为了设置检查点),与之前相比这种方式性能提升显著。下面的图表阐述了这个过程:
在这里插入图片描述
在这里插入图片描述

第一个图表展示的流程包含多个MR任务,每个任务都将中间结果存储到HDFS上——前一个步骤中的reducer为下一个步骤中的mapper提供数据。第二个图表展示了使用Tez时的流程,仅在一个任务中就能完成同样的处理过程,任务之间不需要访问HDFS。

Tez的灵活性意味着你需要付出比MapReduce更多的努力才能使用它,你需要学习更多的API,需要实现更多的处理逻辑。但是这还好,毕竟它和MapReduce一样并不是一个面向最终用户的应用程序,其目的是让开发人员基于它构建供最终用户使用的应用程序。

以上内容是对Tez的概述及其目标的描述,下面就让我们看看它实际的API。

Tez API
Tez API包括以下几个组件:
有向无环图(DAG)——定义整体任务。一个DAG对象对应一个任务。
节点(Vertex)——定义用户逻辑以及执行用户逻辑所需的资源和环境。一个节点对应任务中的一个步骤。
边(Edge)——定义生产者和消费者节点之间的连接。
边需要分配属性,对Tez而言这些属性是必须的,有了它们才能在运行时将逻辑图展开为能够在集群上并行执行的物理任务集合。
下面是一些这样的属性:
数据移动属性,定义了数据如何从一个生产者移动到一个消费者。
调度(Scheduling)属性(顺序或者并行),帮助我们定义生产者和消费者任务之间应该在什么时候进行调度。
数据源属性(持久的,可靠的或者暂时的),定义任务输出内容的生命周期或者持久性,让我们能够决定何时终止。
如果你想查看一个API的使用示例,对这些属性的详细介绍,以及运行时如何展开逻辑图,那么可以看看Hortonworks提供的这篇文章:http://hortonworks.com/blog/expressing-data-processing-in-apache-tez/。

运行时API基于输入—处理器—输出模型,借助于该模型所有的输入和输出都是可插拔的。为了方便,Tez使用了一个基于事件的模型,目的是为了让任务和系统之间、组件和组件之间能够通信。事件用于将信息(例如任务失败信息)传递给所需的组件,将输出的数据流(例如生成的数据位置信息)传送给输入,以及在运行时对DAG执行计划做出改变等。

Tez还提供了各种开箱即用的输入和输出处理器。

这些富有表现力的API能够让更高级语言(例如Hive)的编写者很优雅地将自己的查询转换成Tez任务。

Tez调度程序
在决定如何分配任务的时候,Tez调度程序考虑了很多方面,包括:任务位置需求、容器的兼容性、集群可利用资源的总量、等待任务请求的优先级、自动并行化、释放应用程序不再使用的资源(因为对它而言数据并不是本地的)等。它还维护着一个使用共享注册对象的预热JVM连接池。应用程序可以选择使用这些共享注册对象存储不同类型的预计算信息,这样之后再进行处理的时候就能重用它们而不需要重新计算了,同时这些共享的连接集合及容器池资源也能非常快地运行任务。

如果你想了解更多与容器重利用相关的信息,那么可以查看这里。

扩展性
总体来看,Tez为开发人员提供了丰富的扩展性以便于让他们能够应对复杂的处理逻辑。这可以通过示例“Hive是如何使用Tez的”来说明。
在这里插入图片描述

让我们看看这个经典的TPC-DS查询模式,在该模式中你需要将多个维度表与一个事实表连接到一起。大部分优化器和查询系统都能完成该图右上角部分所描述的场景:如果维度表较小,那么可以将所有的维度表与较大的事实表进行广播连接,这种情况下你可以在Tez上完成同样的事情。

但是如果这些广播包含用户自定义的、计算成本高昂的函数呢?此时,你不可能都用这种方式实现。这就需要你将自己的任务分割成不同的阶段,正如该图左边的拓扑图所展示的方法。第一个维度表与事实表进行广播连接,连接的结果再与第二个维度表进行广播连接。

第三个维度表不再进行广播连接,因为它太大了。你可以选择使用shuffle连接,Tez能够非常有效地导航拓扑。

使用Tez完成这种类型的Hive查询的好处包括:

它为你提供了全面的DAG支持,同时会自动地在集群上完成大量的工作,因而它能够充分利用集群的并行能力;正如上面所介绍的,这意味着在多个MR任务之间不需要从HDFS上读/写数据,通过一个单独的Tez任务就能完成所有的计算。
它提供了会话和可重用的容器,因此延迟低,能够尽可能地避免重组。
使用新的Tez引擎执行这个特殊的Hive查询性能提升将超过100%。

路线图
更加丰富的DAG支持。例如,Samza是否能够使用Tez作为其底层支撑然后在这上面构建应用程序?为了让Tez能够处理Samza的核心调度和流式需求开发团队需要做一些支持。Tez团队将探索如何在我们的DAG中使用这些类型的连接模式。他们还想提供更好的容错支持,更加有效地数据传输,从而进一步优化性能,并且改善会话性能。
考虑到这些DAG的复杂度无法确定,需要提供很多自动化的工具来帮助用户理解他们的性能瓶颈。
总结
Tez是一个支持DAG作业的分布式执行框架。它能够轻而易举地映射到更高级的声明式语言,例如Hive、Pig、Cascading等。它拥有一个高度可定制的执行架构,因而我们能够在运行时根据与数据和资源相关的实时信息完成动态性能优化。框架本身会自动地决定很多棘手问题,让它能够顺利地正确运行。

使用Tez,你能够得到良好的性能和开箱即用的效率。Tez的目标是解决Hadoop数据处理领域所面对的一些问题,包括延迟以及执行的复杂性等。Tez是一个开源的项目,并且已经被Hive和Pig使用。


http://chatgpt.dhexx.cn/article/VDg8TSL9.shtml

相关文章

Tez - 安装

一、Tez 安装 1 下载地址 https://mirrors.tuna.tsinghua.edu.cn/apache/tez/0.9.0/ 2 二进制包安装 2.1 解压并重命名 [roothadoop01 ~]# tar -zxvf /home/apache-tez-0.9.0-bin.tar.gz -C /usr/local/ [roothadoop01 ~]# mv /usr/local/apache-tez-0.9.0-bin/ /usr/local/t…

tez详解

1 tez的概览 1.1 tez介绍 1.1.1 介绍 tez是一个apache的开源项目,意在构建一个应用框架,能通过复杂任务的DAG来处理数据。它是基于当前的hadoop yarn之上,换句话就是yarn为其提供资源。 tez主要的两个设计目标: 增强终端用户使用: 灵活…

TEZ深入理解

简介 Tez是Apache开源的支持DAG作业的计算框架,是支持HADOOP2.x的重要引擎。它源于MapReduce框架,核心思想是将Map和Reduce两个操作进一步拆分,分解后的元操作可以任意灵活组合,产生新的操作,这些操作经过一些控制程序…

Tez 简介

目录 一、Tez简介 二、Tez UI界面 三、Tez 日志 一、Tez简介 1.1 Tez 是支持 DAG 作业的开源计算框架,它可以将多个有依赖的作业转换为一个作业从而大幅提升 DAG 作业的性能。 从本质上讲,Tez 组成非常简单: 数据处理管道引擎&#xff…

TEZ介绍及使用

TEZ介绍及使用 TEZ是什么? Tez是支持DAG作业的开源计算框架,它可以将多个有依赖的作业转换为一个作业从而大幅提升DAG 作业的性能。 Tez源于MapReduce框架,核心思想是将Map和Reduce两个操作进一步拆分,即Map被拆分成Input、Proc…

BACnet安全连接(BACnet/SC) 介绍

BACnet安全连接(BACnet/SC)是ASHRAE BACnet委员会最近发布的BACnet协议的增编。是在增编135-2016bj中介绍的。它基于一个安全的、加密的数据链路层。 专门设计以满足不同IP基础结构。对BACnet通信使用标准化的、通常已经存在的IP网络基础设施的需求正在增加,BACnet/…

BACnet学习笔记

BACnet是一种用于自动化建筑和控制网络的数据通信协议。(Building Automation and Control Networks) 自控网络通信协议基本体系: CAN -- 只定义了通信标准 BACnet BAC Model and Message Network Layer LANs The protocol can be viewed as a matrix of layers. Propertie…

BACnet协议简要说明及组网简介

主题概要BACnet协议BACnet协议简要说明,组网简介编辑时间新建20160217序号参考资料1BACnet协议正文1995版2http://www.bacnet.org/Tutorial/BACnetIP/ 1 协议说明 BACnet协议(A Data Communication Protocol for Building Automation and Control Networks)&#…

BACnet协议详解——应用层说明一

文章目录 写在前面1. 应用层模型1.1 需确认的应用层服务1.2 无需确认的应用层服务2 BACnet报文的分段2.1 报文分段规则2.1.1 APDU数据流的分段规则2.1.2 APDU最大长度的确定2.1.3 可接受的最大分段数2.2 分段协议控制信息(PCI)写在前面 年关将至,事情有点多,耽误了原本定好…

BACnet协议读取与发送

BACnet协议读取与发送 注意我的提问:更新开发环境BACnet相关基础知识BACnet格式BACnet代码BACnet设备查找BACnet设备读取BACnet写入操作AND其他...**BACpypes库中没有提供非标准数据类型接口!!!!!** 结束 因…

Bacnet协议报文格式详解(一)

系统实现基于BACnet/IP(又称B/IP)网络进行通讯。BACnet虚拟链路层(BVLL)提供了BACnet网络层和某指定的通讯子系统的接口,本文指定了BACnet虚拟链路控制(BVLC)要求支持的定向和广播信息。本实现关…

bacnet (收集)

嵌入式系统中BACnet-MS/TP协议栈的实现 一个BACnet设备由一个网络号码和一个MAC地址唯一确定 bacnet MS/TP 走的是485网络 https://www.eefocus.com/mcu-dsp/226727 1 引言 20世纪90年代,Internet经历了爆炸性发展,成为垄断全球的计算机网络。以Cisc…

BACnet

BACnet通讯协议(一) BACnet协议(A Data Communication Protocol for Building Automation and Control Networks),是由美国采暖、制冷和空调工程师协会(ASHRAE)制定的一个楼宇自动控制技术标准文件,BACnet协议最根本的目的是提供…

BACnet协议

BACnet协议 BACnet协议层包括物理层,链路层,网络层,应用层和BACnet安全层。 我们知道BACnet是用于楼宇自动化和控制网络的简短形式的数据通信协议。BACnet是主要行业供应商产品中常用的自动化和控制协议之一,如江森自控&#xff…

BACnet协议详解——初识BACnet架构

文章目录 BACnet协议架构BACnet简化的架构简化的四层BACnet体系结构选取BACnet 网络的拓扑结构安全最后声明BACnet协议架构 国际标准化组织在制定计算机网络通讯协议标准时定义了一个模型,称为开放系统互联参考模型(OSI(ISO 7498)。模型的目的是解决计算机与计算机之间普遍…

BACnet基础入门

BACnet入门:一、简单了解 前言协议栈层级与拓扑结构1.层级体系2.拓扑结构 协议栈的相关内容1.应用层a.设备b.对象c.属性e.服务f.扩展g.安全h.互操作基本模块(BIBBs)i.一致性声明(PICS)j.其他 2.网络层3.数据链路与物理层 工具源码参考 前言 …

BACnet协议介绍

BACnet为BuildingAutomation andControlnetworks的简称,台湾通常翻译为“建筑自动化控制网路通讯协定”,而中国大陆则译为“楼宇自动化与控制网络”。 前言 BACnet是用于智能建筑的通信协议,是国际标准化组织(ISO)、美…

认识BACnet协议

一、什么是BACnet? BACnet,Building Automation and Control networks的简称,即楼宇自动化与控制网络。是用于智能建筑的通信协议。 一般楼宇自控设备从功能上讲分为两部分:一部分专门处理设备的控制功能;另一部分专…

【块存储block源码分析】 linux内核模块ceph nbd源码分析

jewel 版本支持 rbd-nbd 的特性,需要 map 支持较多特性的 rbd image 时,可以使用该 nbd driver NBD(Network Block Device) 可以将一个远程主机的磁盘空间,当作一个块设备来使用,就像一块硬盘一样。NBD是一个内核模块,…

用户增长 - BG/NBD概率模型预测用户生命周期LTV(二)

文章目录 1 理论1.1 BG / NBD概率模型介绍1.2 Gamma-Gamma模型2 实践案例2.1 lifetimes实践案例一:在线零售业务的交易2.1.1 数据解读2.1.2 BG / NBD - 预期交易的frequency /recency 热力图2.1.3 顾客留存概率热力图2.1.4 评估模型效果方式一:模型验证重…