猪将如何产生DAG的工作

时间:2014-09-17 06:42:54

标签: hadoop apache-pig hdfs directed-acyclic-graphs

我正在使用PIG处理数百万条记录的Feed。在阅读了HDFS的提要后,我需要执行三个不同的小组'操作然后结合所有这些的结果。让我们说无论关系联盟的架构如何运作良好。现在我的问题是PIG如何生成执行DAG,并且所有这三个按操作分组都将并行执行。

1 个答案:

答案 0 :(得分:6)

Pig的处理步骤如下:

  1. 脚本解析
    • 检查语法以及引用的变量是否有效
    • 类型检查
    • 架构推断
    • 检查自定义类(UDF)(instantiation..etc)
  2. 输出:一个规范的逻辑计划,它是猪拉丁语句和逻辑运算符之间的一对一映射,以DAG的形式排列。

    1. 逻辑优化器
      • 逻辑计划通过逻辑优化器传递(例如:投影下推是 执行)

    2. 实际计划
      • 优化后的逻辑计划将转换为实际计划。 (每个逻辑运算符都有相应的物理等价)

    3. MapReduce计划及其优化
      • 每个物理操作员都将被分配到MapReduce阶段(Map任务或Reduce任务)。
      • 创建MR计划后,将根据操作的性质执行进一步的优化。目标:尽量减少减少阶段的数量
    4. 您可以使用EXPLAIN

      检查为您生成的PIG脚本计划

      对于你的第二个问题:
      group by operation强制执行reduce阶段,您可以为其定义并行级别。默认情况下,如果未指定并行度,则减少器的数量为 按此公式计算:

      min(maxReducersNumber, reducers)
      

      其中:
      - maxReducersNumber可以通过属性pig.exec.reducers.max(默认为999)设置 - reducers =(totalInputFileSize / bytesPerReducer)
      - bytesPerReducer可以通过属性pig.exec.reducers.bytes.per.reducer设置(默认值:1GB)I.e:对于每1GB的输入数据,Pig将分配一个新的reducer

      有关平行线的更多信息,请点击此处:
        - how to use the parallel feature
      - select the right level of parallelism
      - source code of the reducer estimator