Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在hadoop 2.7.3中,将映射器更改为每个辅助进程上的核心数_Java_Python_Hadoop_Mapreduce - Fatal编程技术网

Java 在hadoop 2.7.3中,将映射器更改为每个辅助进程上的核心数

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 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

输出显示只有一个映射任务

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

请尝试
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行,每行是一个文件名?