分享

使用mapReduce分析HDFS中大文件只起一个map的问题?

xiaoxiaopan118 发表于 2016-6-28 15:30:51 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 4 9103
近期要做日志分析使用,写好mapReduce程序后发现一个15G的文件只启动一个map,
整个任务分析完需要两个多小时。于是我将文件split成每100万行一个文件重新put到集群,这次启动了4百多个map,重新跑不到十分钟,各位大神这是怎么回事儿呢?
我不想split文件而是使用大文件直接分析而启动多个map , (修改mapred-site.xml文件会影响其他的pig统计分析和其他任务的运行,故无法修改),我还有其他的方法吗?

已有(4)人评论

跳转到指定楼层
einhep 发表于 2016-6-28 15:53:43
map个数的确定,并不是由单个配置确定,而是由多个配置确定。比如文件的大小,mapred.map.tasks的配置,等。楼主参考这个:
如何在hadoop中控制map的个数




回复

使用道具 举报

xiaoxiaopan118 发表于 2016-6-28 16:02:34
einhep 发表于 2016-6-28 15:53
map个数的确定,并不是由单个配置确定,而是由多个配置确定。比如文件的大小,mapred.map.tasks的配置,等 ...

嗯 我看了,根据我的文件15G的话应该是启动120左右个map,dfs.block.size默认128M,total_size 是 15360M ,input_file_num 就是整个文件(总共一个文件),这样的话算出来就是compute_map_num = min(split_num,  max(default_num, goal_num)) 也应该是120个左右啊,所以就很慢,
hadoop用的是CDH5.4 (没有使用页面管理工具)。
还望大神指教!
回复

使用道具 举报

einhep 发表于 2016-6-28 16:34:45
xiaoxiaopan118 发表于 2016-6-28 16:02
嗯 我看了,根据我的文件15G的话应该是启动120左右个map,dfs.block.size默认128M,total_size 是 15360M ...

楼主先看透上面文章设置mapred.map.tasks 为一个较大的值。再次试试。同时注意他们的规则
回复

使用道具 举报

xiaoxiaopan118 发表于 2016-6-28 16:51:33
本帖最后由 xiaoxiaopan118 于 2016-6-28 17:17 编辑
einhep 发表于 2016-6-28 16:34
楼主先看透上面文章设置mapred.map.tasks 为一个较大的值。再次试试。同时注意他们的规则

多谢您,我使用 hadoop jar ByteSentCount-1.0-SNAPSHOT.jar -D mapreduce.job.maps=120 /test/mgtv/0201/* /testbyte/testByteCount
和使用 hadoop jar ByteSentCount-1.0-SNAPSHOT.jar -D mapred.map.tasks=120 /test/mgtv/0201/* /testbyte/testByteCount
都不行,然后设置FileInputFormat.setMinInputSplitSize(job, 134217728 / 2); 还是不行!!!
回复

使用道具 举报

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

本版积分规则

关闭

推荐上一条 /2 下一条