如何使用apache tez在hadoop纱线集群上运行mapCreduce作业?

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

  • 数据处理管道引擎和

  • 数据处理应用程序的主人,可以将上述任意数据处理“任务”放到任务DAG中

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

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

    tez中的每个'任务'具有以下内容:

  • 输入消耗来自键/键值对。
  • 处理器来处理它们。
  • 输出以收集已处理的键/值对。
  • 谁负责在tez-tasks之间分割输入数据? 它是用户提供的代码还是Yarn(资源管理器)甚至tez本身?

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


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

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

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

  • 一种方法是直接使用Tez API编写本地2阶段DAG。 这就是目前在tez例子中出现的东西。
  • 第二种是使用MapReduce API,并使用yarn-tez模式。 在这种情况下,有一个层拦截MR作业提交,而不是使用MR,它将MR作业转换为2阶段Tez DAG,并在Tez运行时执行DAG。
  • 对于您具有的数据处理相关问题:

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

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

    以上只是一个高层次的视角,还有更多的错综复杂。 您将通过在开发列表(http://tez.apache.org/mail-lists.html)中发布特定问题来获得更详细的答案。

    链接地址: http://www.djcxy.com/p/27467.html

    上一篇: How wordCount mapReduce jobs, run on hadoop yarn cluster with apache tez?

    下一篇: How to format a float in javascript?