TEZ深入理解

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

简介

在这里插入图片描述

Tez的实现

2)Output:对输出数据源的抽象,它将用户程序产生的Key/value写入文件系统

3)Paritioner:对数据进行分片,类似于MR中的Partitioner

4)Processor:对计算的抽象,它从一个Input中获取数据,经处理后,通过Output输出

5)Task:对任务的抽象,每个Task由一个Input、Ouput和Processor组成

6)Maser:管理各个Task的依赖关系,并按顺依赖关系执行他们

2)Output实现:InMemorySortedOutput(内存排序后输出),LocalOnFileSorterOutput(本地磁盘排序后输出),OnFileSortedOutput(磁盘排序后输出)

3)Task实现:RunTimeTask(非常简单的Task,基本没做什么事)

4)Sort实现:DefaultSorter(本地数据排序),InMemoryShuffleSorter(远程拷贝数据并排序)

为了展示Tez的使用方法和验证Tez框架的可用性,Apache在YARN MRAppMaster基础上使用Tez编程接口重新设计了MapReduce框架,使之可运行在YARN中。为此,Tez提供了以下几个组件:

1)Input:SimpleInput(直接使用MR InputFormat获取数据)

2)Output:SimpleOutput(直接使用MR OutputFormat获取数据)

3)Partition:MRPartitioner(直接使用MR Partitioner获取数据)

4)Processor:MapProcessor(执行Map Task),ReduceProcessor(执行Reduce Task)

5)Task:FinalTask,InitialTask,initialTaskWithInMemSort,InitialTaskWithLocalSort ,IntermediateTask,LocalFinalTask,MapOnlyTask。

对于MapReduce作业而言,如果只有Map Task,则使用MapOnlyTask,否则,Map Task使用InitialTaskWithInMemSort而Reduce Task用FinalTask。当然,如果你想编写其他类型的作业,可使用以上任何几种Task进行组合,比如”InitialTaskWithInMemSort –> FinalTask”是MapReduce作业。

为了减少Tez开发工作量,并让Tez能够运行在YARN之上,Tez重用了大部分YARN 中MRAppMater的代码,包括客户端、资源申请、任务推测执行、任务启动等。

Tez+Hive与Impala区别

Tez+Hive与Impala均可用于解决Hive/Pig延迟大、性能低效的问题,Impala的出发点是抛弃MapReduce计算框架,不再将SQL或者PIG语句翻译成MR程序,而是采用传统数据数据库的方式,直接从DataNode上存取数据,而Tez+Hive则不同,Tez+Hive仍采用MapReduce计算框架,但对DAG的作业依赖关系进行了裁剪,并将多个小作业合并成一个大作业,这样,不仅计算量减少,而且写HDFS次数也会大大减少。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/210649.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 上午7:11
下一篇 2026年3月19日 上午7:12


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号