繁体   English   中英

在hadoop 2.7.3中将映射器更改为每个工作程序上的核心数

[英]change mapper to number of cores on each worker in hadoop 2.7.3

默认情况下,hadoop 2.7.3中可以有两个映射器用于作业。 我有2个系统的集群,每个集群有4个核心。 一个是主人,一个是工人。 现在,我想运行3个地图任务工作程序节点。 我可以做吗? 我正在使用hadoop流来运行作业。 所以我应该为此设置什么参数。 我也想只将一个输入(行)设置为一个映射器。 参数的格式应该是什么。 我当前无法完成作业的命令是

hadoop jar $HADOOP_HOME/share/hadoop/tools/lib/hadoop-streaming-2.7.3.jar\
    -D mapred.output.compress=true \
    -D mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec \
    -files test.py   -mapper test.py    -reducer cat \
    -input /aws/input/sample.gz   -output /aws/output/test

输出显示只有一个maptask

并行运行的映射器的数量基于输入拆分和容器资源。

尝试使用NLineInputFormat以便输入文件的每一行都转到其自己的映射器:

-inputformat org.apache.hadoop.mapreduce.lib.input.NLineInputFormat

可以使用配置参数设置每个映射器的行数

-Dmapreduce.input.lineinputformat.linespermap=N

如果您希望作业只有3个映射器,则应设置N = file_lines / 3 + 1

如果还希望它们并行运行,请确保有足够的RAM和CPU资源来一次运行3个映射任务。 通常,它是在设置map container memory YARN xml文件中配置的。 记住,Hadoop运行着多个辅助生态系统流程,例如NameNode,DataNode,AppMaster,ResourceManager等,它们也会消耗资源。

另外我不确定将GZ文件用作输入源,也许您需要使用纯文本,以便NLineInputFormat可以工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM