mapreduce作业优化-MultithreadedMapRunner

  最近日志解析框架新接入一种日志, 这些原始日志是经过加密的, mr程序解析时需要先解密再解析,实际解析过程中发先原始日志量并不大(30W), 但解析花费时间较长, 经分析,是解密操作比较耗CPU时间, 想到的一种解决方案是在日志采集阶段将日志分散到多个小文件,这样可以充分利用多map并行的优势,但缺点也很明显, HDFS系统将存在很多小文件,对namenode造成负担,同时这个方案需要修改日志采集程序,不够优化.
   另一种方案是采用多线程并行解析方案,即在一个map任务中起多个线程进行解析,充分利用多核优势, 在之前设计日志解析框架时已经考虑到多线程功能,因此无需修改解析程序,只需增加配置.
   启用多线程设置如下:
 jobConf.setMapRunnerClass(MultithreadedMapRunner.class);
默认线程数是 10
可以用
-Dmapred.map.multithreadedrunner.threads=threadNum; 参数自定义设置
   接下来对比下多线程与非多线程之间的效率
解析同一份日志 记录数 372619
非多线程:

启用多线程:

非多线程需要18分52秒 采用多线程后只需要3分钟,效果还是很明显的。

本文出自 “yyj0531” 博客,请务必保留此出处http://yaoyinjie.blog.51cto.com/3189782/911770

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值