- 1、本文档共16页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
什么是Apache TezTez是Apache必威体育精装版的支持DAG作业的开源计算框架,它可以将多个有依赖的作业转换为一个作业从而大幅提升DAG作业的性能。Tez并不直接面向最终用户——它允许开发者为最终用户构建性能更快、扩展性更好的应用程序。Hadoop传统上是一个大量数据批处理平台。但是,有很多用例需要近乎实时的查询处理性能。还有一些工作则不太适合MapReduce,例如机器学习。Tez的目的就是帮助Hadoop处理这些用例场景。Tez项目的目标是支持高度定制化,这样它就能够满足各种用例的需要,让人们不必借助其他的外部方式就能完成自己的工作。它直接源于MapReduce框架,核心思想是将Map和Reduce两个操作进一步拆分,即Map被拆分成Input、Processor、Sort、Merge和Output, Reduce被拆分成Input、Shuffle、Sort、Merge、Processor和Output等,这样,这些分解后的元操作可以任意灵活组合,产生新的操作,这些操作经过一些控制程序组装后,可形成一个大的DAG作业。总结起来,Tez有以下特点:运行在yarn上;适用于DAG(有向图)应用(可与hive和pig结合);具有表现力的数据流API——Tez团队希望通过一套富有表现力的数据流定义API让用户能够描述他们所要运行计算的有向无环图 (DAG)。为了达到这个目的,Tez实现了一个结构化类型的API,你可以在其中添加所有的处理节点和边,并可视化实际构建的图形;下图是一个实现terasort(分布式排序)过程的流程图:灵活的输入—处理器—输出(Input-Processor-Output)运行时模型——可以通过连接不同的输入、处理器和输出动态地构建运行时执行器;Tez将用户数据流图的每个顶点看作是一个input-processor-output模型。Inputoutput决定了数据的格式和怎样的被读取和写入,processor是对数据的处理逻辑。将这些任务模型进行组装就可以形成不同功能的DAG图,连接不同processor的inputoutput需要互相兼容;数据类型无关性——仅关心数据的移动,不关心数据格式(键值对、面向元组的格式等,mr需要指定map和reduce的输入输出格式);简单地部署——Tez完全是一个客户端应用程序,它利用了YARN的本地资源和分布式缓存;DAG图在运行时的优化和重新配置——分布式数据处理是具有动态的特性,不能执行前提前预知并选出最有的优化策略。Tez可以在执行过程中通过收集tasks的信息更改数据流图。例如下图,运行时,当获知数据量有10GB的时候,自动将reducer的数量进行更改。Tez于2014-07-16成为apache顶级项目,目前必威体育精装版的稳定版本是0.7.0,必威体育精装版版本是0.8.1-beta版,目前我们平台HDP2.3采用的是0.7.0。Apache当前有顶级项目Oozie用于DAG作业设计,但Oozie是比较高层(作业层面)的,它只是提供了一种多类型作业(比如MR程序、Hive、Pig等)依赖关系表达方式,并按照这种依赖关系提交这些作业,而Tez则不同,它在更底层提供了DAG编程接口,用户编写程序时直接采用这些接口进行程序设计,这种更底层的编程方式会带来更高的效率,举例如下:传统的MR(包括Hive,Pig和MR程序)。假设有四个有依赖关系的MR作业(1个较为复杂的Hive SQL语句或者Pig脚本可能被翻译成4个有依赖关系的MR作业)或者用Oozie描述的4个有依赖关系的作业,运行过程如下图左边所示(其中,绿色是Reduce Task,需要写HDFS),采用tez的示意图如右边所示。通过上面的例子可以看出,Tez可以将多个有依赖的作业转换为一个作业(这样只需写一次HDFS,且中间节点较少),从而大大提升DAG作业的性能。原来的mapreduce作业需要执行多次的hdfs的读写。Tez的优化2.1. 当前YARN框架存在的问题(1)作业启用一个独立的ApplicationMasterMRv1中所有作业公用一个作业追踪器JobTracker,当JobTracker出现故障是 ,整个系统将不可用,且所有作业将运行失败。与MRv1不同,YARN中每个作业启用一个独立的作业追踪器ApplicationMaster,解决了MRv1中单点故障和扩展瓶颈问题。但这种方式引入一个新的问题:作业延迟较大,即每个作业首先要申请资源启动一个ApplicationMaster后,才可以正式启动作业,也就是说,较MRv1中的作业运行过程,YARN作业将耗费更多的计算资源和产生更长的运行延迟,这不利于运行小作业和DAG作业,尤其是DAG作业(如Hive SQL和Pig产生的DAG作业),将需要更多的计算资源
文档评论(0)