用c++开发的streaming mapper 和reducer,用于提取二进制日志文件中一些请求(用户)特征值,所以事先有实现解析二进制文件的自定义inputformat。处理结果输出到hdfs。单机状态下处理相同数量的文件耗时5,6s, 但是在集群模式下,耗时长达10分钟左右。其中一个节点cpu占用搭100多,且将mapper和reducer均屏蔽功能逻辑代码或者启用默认TextInputFormat选项情况下,也没有多少改善。hadoop版本为2.7.1。
run脚本:export HADOOP_INSTALL=/usr/local/hadoop
export PATH=$HADOOP_INSTALL/bin:$PATH
source /etc/profile
hadoop jar $HADOOP_INSTALL/share/hadoop/tools/lib/hadoop-streaming-2.7.1.jar
-input /hadoop/input2
-output /hadoop/output/out
-inputformat BinaryFileInputFormat
-mapper mapper
-reducer reducer
-file mapper
-file reducer
hadoop集群硬件配置:一共三个节点,其中两个单核1G内存processor: 0
vendor_id: GenuineIntel
cpu family: 6
model: 62
model name: Intel(R) Xeon(R) CPU E5-2430 v2 @ 2.50GHz
stepping: 4
microcode: 1063
cpu MHz: 2500.000
cache size: 15360 KB
另一个4核4G内存
model name: Intel(R) Xeon(R) CPU E5-2430 v2 @ 2.50GHz
stepping: 4
microcode: 1063
cpu MHz: 2500.000
cache size: 15360 KB
配置文件信息: yarn-site.xml
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.resourcemanager.hostname
srv-nm-test20
yarn.nodemanager.resource.memory-mb
2000
mapred-site.xml
mapred.job.tracker
192.168.8.180:9001
mapred.tasktracker.reduce.tasks.maximum
3
mapred.tasktracker.map.tasks.maximum
3
mapreduce.framework.name
yarn
请大家帮忙看看,先谢谢了