分享

Pig脚本执行后2个map但是一直很慢

唐运 发表于 2015-1-5 16:02:37 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 6 14512
Pig脚本执行后2个map但是一直很慢,大神帮忙解答下。
Hadoop job_201501050010_1228 on nn1User: root
Job Name: PigLatin:find_roleExp.pig
Job File: hdfs://mycluster/tmp/hadoop-mapred/mapred/staging/root/.staging/job_201501050010_1228/job.xml
Submit Host: dn7.9961.cn
Submit Host Address: 10.1.1.13
Job-ACLs: All users are allowed
Job Setup:Successful
Status: Running
Started at: Mon Jan 05 15:49:34 CST 2015
Running for: 10mins, 27sec
Job Cleanup: Pending


Kind% CompleteNum TasksPendingRunningComple
map
50.00%

2
0
reduce
0.00%
0
0
0
0


已有(6)人评论

跳转到指定楼层
muyannian 发表于 2015-1-5 20:49:10
可以对pig优化一下。措施比较多,例如:

Pig对于数据倾斜Join的优化原理

1、对数据抽样

2、根据样本数据,估计出某个key的所有的记录数以及所占的总内存,pig.skewedjoin.reduce.memusage 控制reduce消耗内存比例,再计算出某个key所需要的reduce个数,以及reduce的总数。

3、将结果存一个文件中,相当于索引文件,格式为:(swpv,0,3), (swps,4,5)(说明:<join key>,<min index of reducer>, <max index ofreducer>)

4、自定义Patitioner,读取索引,并将key平均分配到reduce上。比如:(swpv,0,3)将swpv平均分配到 编号为0-3的reduce中。




资源pdf:
pig性能优化

回复

使用道具 举报

muyannian 发表于 2015-1-5 20:49:49
例如还有小文件优化:

引用:
测试数据:20GB gz数据,文件数4.7万个,大小从上百MB到几MB
测试机器:Slave 2台。8core,32GB内存,5 map slot,3 reduce slot
Job逻辑:输出文件总行数

使用Pig耗时:12mins
java代码(FileInputFormat):>60 min (开启jvm重用,使用默认FileInputFormat)
java代码(CombineFileInputFormat):21 min
结论:Pig对于处理小文件做了优化,性能远远好于Java编写代码。


关于PigInputFormat
默认使用集群配置block size来合并小文件,并作为input split传给map方法
时间input split 167个,远远小于Java编写代码( FileInputFormat )的4.7个input splits



回复

使用道具 举报

唐运 发表于 2015-1-6 14:28:54
muyannian 发表于 2015-1-5 20:49
例如还有小文件优化:

引用:

从 HBase里面读取的数据,这个有什么优化的?

回复

使用道具 举报

nextuser 发表于 2015-1-6 15:25:22
唐运 发表于 2015-1-6 14:28
从 HBase里面读取的数据,这个有什么优化的?
pig可以在语句上优化
回复

使用道具 举报

唐运 发表于 2015-1-6 16:02:04
nextuser 发表于 2015-1-6 15:25
pig可以在语句上优化

有示例参考吗?

回复

使用道具 举报

nextuser 发表于 2015-1-6 16:15:49
唐运 发表于 2015-1-6 16:02
有示例参考吗?


参考这个试试
http://www.aboutyun.com/blog-1330-943.html
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条