作为tez的github页面说,tez 非常简单,其核心只有两个组件:
数据处理管道引擎,以及
数据处理应用程序的主控程序,可以将上述任意数据处理“任务”放在一个任务 DAG 中
那么我的第一个问题是,现有的 mapreduce 作业(例如 tez-examples.jar 中存在的 wordcount)如何转换为任务 DAG?在哪里?或者他们不...?
我的第二个也是更重要的问题是关于这部分的:
tez 中的每个“任务”都有以下内容:
- 用于使用键/值对的输入。
- 处理它们的处理器。
- 输出以收集处理后的键/值对。
谁负责在 tez 任务之间拆分输入数据?它是用户提供的代码还是 Yarn(资源管理器)甚至是 tez 本身?
输出阶段的问题是一样的。 提前致谢
最佳答案
要回答有关将 MapReduce 作业转换为 Tez DAG 的第一个问题:
任何 MapReduce 作业都可以被认为是具有 2 个顶点(阶段)的单个 DAG。第一个顶点是 Map 阶段,它通过 Shuffle 边连接到下游顶点 Reduce。
有两种方法可以在 Tez 上运行 MR 作业:
- 一种方法是直接使用 Tez API 编写原生的 2 阶段 DAG。这就是目前在 tez-examples 中存在的内容。
- 第二种是自己使用MapReduce API,使用yarn-tez模式。在这种情况下,有一个层拦截 MR 作业提交,而不是使用 MR,它将 MR 作业转换为 2 阶段 Tez DAG,并在 Tez 运行时执行 DAG。
对于您的数据处理相关问题:
用户提供理解要读取的数据以及如何拆分数据的逻辑。然后,Tez 获取每个数据拆分并接管将一个拆分或一组拆分分配给给定任务的责任。
然后,Tez 框架控制数据的生成和移动,即在中间步骤之间生成数据的位置以及如何在 2 个顶点/阶段之间移动数据。但是,它不控制用户插件提供的底层数据内容/结构、分区或序列化逻辑。
以上只是具有更多复杂性的高级 View 。您将通过将具体问题发布到开发列表 (http://tez.apache.org/mail-lists.html) 来获得更详细的答案
关于hadoop - wordCount mapReduce 作业如何与 apache tez 在 hadoop yarn 集群上运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31466834/