如何使用 apache tez 在 hadoop yarn 集群上进行 wordCount mapReduce 作业,运行?

How wordCount mapReduce jobs, run on hadoop yarn cluster with apache tez?

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

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

  2. 数据处理应用程序的大师,可以将上述任意数据处理'tasks'组合成一个任务-DAG

我的第一个问题是,tez-examples.jar 中现有的 mapreduce 作业(如 wordcount)如何转换为任务 DAG?在哪里?或者他们不...?

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

tez 中的每个 'task' 都有以下内容:

  1. 要消耗 key/value 对的输入。
  2. 处理它们的处理器。
  3. 输出以收集已处理的 key/value 对。

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

输出阶段的问题是一样的。 提前致谢

回答关于将 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 vertices/stages 之间移动数据。但是,它不控制用户插件提供的底层数据contents/structure、分区或序列化逻辑。

以上只是具有更多复杂性的高级视图。通过将具体问题发布到开发列表 ( http://tez.apache.org/mail-lists.html )

,您将获得更详细的答案