7

正如tez的 github 页面所说,tez 非常简单,其核心只有两个组件:

  1. 数据处理管道引擎,以及

  2. 数据处理应用程序的主机,可以将上述任意数据处理“任务”组合成一个任务-DAG

那么我的第一个问题是,tez-examples.jar 中存在的诸如 wordcount 之类的现有 mapreduce 作业如何转换为 task-DAG?在哪里?或者他们不……?

我的第二个也是更重要的问题是关于这部分:

tez 中的每个“任务”都有以下内容:

  1. 用于使用键/值对的输入。
  2. 处理器来处理它们。
  3. 输出以收集处理后的键/值对。

谁负责在 tez 任务之间拆分输入数据?是用户提供的代码还是 Yarn(资源管理器)甚至是 tez 本身?

输出阶段的问题是相同的。提前致谢

4

1 回答 1

3

要回答关于将 MapReduce 作业转换为 Tez DAG 的第一个问题:

任何 MapReduce 作业都可以被认为是具有 2 个顶点(阶段)的单个 DAG。第一个顶点是 Map 阶段,它通过 Shuffle 边连接到下游顶点 Reduce。

在 Tez 上运行 MR 作业有两种方式:

  1. 一种方法是直接使用 Tez API 编写本机 2 阶段 DAG。这是当前 tez-examples 中存在的内容。
  2. 第二种是使用 MapReduce API 本身并使用 yarn-tez 模式。在这种情况下,有一个层拦截 MR 作业提交,而不是使用 MR,它将 MR 作业转换为 2 阶段 Tez DAG 并在 Tez 运行时执行 DAG。

对于您遇到的数据处理相关问题:

用户提供理解要读取的数据以及如何拆分数据的逻辑。然后,Tez 接受每个数据拆分,并负责将拆分或一组拆分分配给给定任务。

然后,Tez 框架控制数据的生成和移动,即在中间步骤之间生成数据的位置以及如何在 2 个顶点/阶段之间移动数据。但是,它不控制用户插件提供的底层数据内容/结构、分区或序列化逻辑。

以上只是一个带有额外复杂性的高级视图。通过将特定问题发布到开发列表 ( http://tez.apache.org/mail-lists.html ) ,您将获得更详细的答案

于 2015-07-18T17:21:02.803 回答