猪/ MapReduce工作分析概念需要理解

时间:2012-07-12 21:29:56

标签: hadoop mapreduce apache-pig

我正在一个大约1.22 GB的文件上运行Pig Script。默认块大小为64MB。我有4个数据节点。 Pig脚本作为输出产生19个文件 当我运行Pig脚本并看到Job Tracker时,我看到了6个Jobs。

       Jobid           Priority   User              Name          Map % Complete    Map Total   Maps Completed  Reduce % Complete   Reduce Total    Reduces Completed   Job Scheduling Information    Diagnostic Info

job_201207121202_0001   NORMAL    user     PigLatin:Analysis.pig    100.00%             20            20              100.00%              1               1                         NA                   NA
job_201207121202_0002   NORMAL    user     PigLatin:Analysis.pig    100.00%              5            5               100.00%              1               1                         NA                   NA
job_201207121202_0003   NORMAL    user     PigLatin:Analysis.pig    100.00%              2            2               100.00%              1               1                         NA                   NA
job_201207121202_0004   NORMAL    user     PigLatin:Analysis.pig    100.00%              2            2               100.00%              1               1                         NA                   NA
job_201207121202_0005   NORMAL    user     PigLatin:Analysis.pig    100.00%              5            5               100.00%              1               1                         NA                   NA
job_201207121202_0006   NORMAL    user     PigLatin:Analysis.pig    100.00%             5             5               100.00%              1               1                         NA                   NA    

根据我的理解,由于输入文件大小为1.22 GB,块大小为64 MB,因此将为该文件创建共20个块。我的复制因子为3.由于我将为每个拆分创建一个地图作业,我将有20个地图作业,而job_201207121202_0001作业在上面的列表中说明并且是完美的。但是,为什么我会看到其他5个工作岗位以及其他19个地图任务? 任何人都可以帮我理解这一点。我认为自1.22GB / 64MB~20以来它只有20个地图和1个减少工作。

我是Pig / Hadoop初学者。非常感谢帮助。

3 个答案:

答案 0 :(得分:1)

Pig将脚本编译为多个map-reduce作业,具体取决于脚本的语义。粗略地说,连接是一项MR工作。一个小组是一个MR工作。订单是2个MR工作(一个用于分配样品)。还有一些其他运营商会产生MR边界。

答案 1 :(得分:0)

你需要分享你的猪脚本,任何人都可以给出任何真正的信心答案,但很可能你的脚本足够复杂,执行所有阶段需要6个地图减少工作才能完成

你可以看到执行的第二个作业确实有20个映射器在运行(1.22GB / 64MB = 19.52,这将需要20个映射器):

  

普通用户PigLatin:Analysis.pig 100.00% 20 20 100.00%1 1 NA NA job_201207121202_0002

除了知道你还在做什么之外 - 你是否用不同的输入文件提交了相同的脚本多次?

答案 2 :(得分:0)

Pig是为连锁MR工作而构建的薄层。

对于MR作业"块大小"(技术上块大小)决定映射器的数量,但对于猪MR,基本单元不是块大小。

根据您使用数据进行的ETL类型,pig会将其映射到单个/链式多个MR作业。

例如: A = LOAD' / input'使用PigStorage(' |')作为(a:chararray) 将A存储到' /输出' ; 这个简单的产品简单地产生了地图只有工作,甚至没有使用减速器。

使用groupby,然后是JOIN的脚本将生成2个MR作业。

PIG支持的每个操作都可以映射到MR:

  1. 加入:1 MR
  2. GroupBy:1 MR
  3. 过滤器:可以在Mapper或reducer阶段
  4. 中完成
  5. 加载:Mapper
  6. 商店:Mapper或Reducer
  7. Foreach:Mapper或Reducer