我在一个大约1.22 GB的文件上运行一个Pig脚本。默认区块大小为64MB。我有4个数据节点。作为输出的Pig脚本生成19个文件。
当我运行Pig脚本并看到Job Tracker时,我看到了6个作业。
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,区块大小为64MB,因此将为该文件创建总共20个区块。我的复制因子是3。因为我的每个拆分都有一个映射作业,所以我将有20个映射作业,job_201207121202_0001作业在上面的列表中说明了这一点,这是完美的。然而,为什么我看到另外5个工作和另外19个地图任务?
有没有人能帮我理解一下。我认为自从1.22 It /64MB~ 20以来,它将只有20个map和1个reduce作业。
我是一个Pig/Hadoop初学者。真的很感谢你的帮助。
发布于 2012-07-24 11:52:39
Pig根据脚本的语义将一个脚本编译成多个map-reduce作业。粗略地说,join是MR作业。组是MR作业。订单为2个MR作业(一个用于采样分布)。还有一些其他运算符可以生成MR边界。
发布于 2012-07-13 05:47:10
您需要分享您的猪脚本,以便任何人都能有信心地给出答案,但很可能您的脚本足够复杂,执行所有阶段需要6个map reduce作业才能完成
您可以看到,执行的第二个作业确实运行了20个映射器(1.22 20 / 64MB = 19.52,这将需要20个映射器):
普通用户PigLatin:Analysis.pig 100.00% 20 20 100.00% 1 NA job_201207121202_0002
除此之外,谁知道你还在做什么--你是否用不同的输入文件多次提交相同的脚本?
发布于 2015-04-28 03:41:23
Pig是用来链接MR jobs的薄薄的一层。
对于MR作业,“块大小”(从技术上讲是块大小)决定了映射器的数量,但对于猪,MR是基本单位,而不是块大小。
根据您正在对数据执行的ETL类型,pig会将其映射到单个/链式多个MR作业。
例如: A= LOAD '/input‘using PigStorage('|') as (a:chararray) Store A into '/output’;这个小猪脚本只生成Map only job,甚至没有使用reducers。
一个使用groupby的脚本,然后是一个JOIN,将产生2个MR作业。
PIG支持的每个操作都可以映射到MR:
https://stackoverflow.com/questions/11460985
复制相似问题