Java 在hadoop 2.7.3中,将映射器更改为每个辅助进程上的核心数
默认情况下,hadoop 2.7.3中的一个作业可以有两个映射器。我有一个由2个系统组成的集群,每个集群上有4个内核。一个是主人,一个是工人。现在我想运行3个映射任务工作节点。我能做吗?我正在使用hadoop流来运行作业。那么,我应该为这个目的设置什么样的论据呢。此外,我想设置一个输入(行)到一个映射器只。参数的格式应该是什么。我当前未完成作业的命令是Java 在hadoop 2.7.3中,将映射器更改为每个辅助进程上的核心数,java,python,hadoop,mapreduce,Java,Python,Hadoop,Mapreduce,默认情况下,hadoop 2.7.3中的一个作业可以有两个映射器。我有一个由2个系统组成的集群,每个集群上有4个内核。一个是主人,一个是工人。现在我想运行3个映射任务工作节点。我能做吗?我正在使用hadoop流来运行作业。那么,我应该为这个目的设置什么样的论据呢。此外,我想设置一个输入(行)到一个映射器只。参数的格式应该是什么。我当前未完成作业的命令是 hadoop jar $HADOOP_HOME/share/hadoop/tools/lib/hadoop-streaming-2.7.3.ja
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
输出显示只有一个映射任务并行运行的映射程序的数量基于输入拆分和容器资源 请尝试
NLineInputFormat
,使输入文件的每一行都转到其自己的映射器:
-inputformat org.apache.hadoop.mapreduce.lib.input.NLineInputFormat
可以使用配置参数设置每个映射器的行数
-Dmapreduce.input.lineinputformat.linespermap=N
如果希望作业只有3个映射器,则应设置N=file\u line/3+1
如果您还希望它们并行运行,请确保有足够的RAM和CPU资源同时运行3个映射任务。通常它是在设置映射容器内存中的xml文件中配置的。请记住,Hadoop运行几个辅助生态系统进程,如NameNode、DataNode、AppMaster、ResourceManager等,这些进程也会消耗资源
另外,我不确定是否将GZ文件作为输入源,也许您需要使用纯文本,这样NLineInputFormat就可以工作。谢谢,我说过我希望每个工作人员有三个映射器,而不是全部。事实上,我想完全使用我的工人核心。@Shafiq这个想法无论如何都是一样的谢谢,我在另一点上卡住了。我已经发布了只有5个文件名(每行一个名称)。我只需测试每个映射程序是否成功处理一行。@Shafiq一个文本文件,包含5行,每行是一个文件名?