mapreduce任务在伪分布式hadoop中不并行运行

du7egjpx  于 2021-05-30  发布在  Hadoop
关注(0)|答案(2)|浏览(364)

我在伪分布式模式下的单节点集群上使用hadoop。我的系统有16个内核,但是hadoop一次只运行一个map或reduce任务,因此没有充分利用所有的内核。我将conf/mapred-site.xml更改为以下内容,但仍然无法工作。有谁能告诉我问题和解决办法是什么。

<configuration>

    <property>
        <name>mapred.job.tracker</name>
        <value>localhost:9001</value>
    </property>

    <property>
        <name>mapred.tasktracker.map.tasks.maximum</name>
        <value>4</value>
    </property>

    <property>
        <name>mapred.tasktracker.reduce.tasks.maximum</name>
        <value>4</value>
    </property>

    <property>
        <name>mapred.map.tasks</name>
        <value>4</value>
    </property>

    <property>
        <name>mapred.reduce.tasks</name>
        <value>4</value>
    </property>

</configuration>
4xy9mtcn

4xy9mtcn1#

可以肯定的是,hadoop为每个输入分割分派一个Map器。默认情况下,输入拆分大小等于dfs块大小,默认情况下为64mb。
我认为作业所采用的输入文件的大小应该小于等于输入拆分大小。这可能是您看到为作业准备了一个Map器的原因。
要让多个Map器处理文件,请在作业配置中为mapreduce.input.fileinputformat.split.minsize属性指定较小的值。
mapred.map.tasks属性只是输入格式的提示,不需要应用。mapred.tasktracker.map.tasks.maximum属性只是用来表示#mappers的上限。
决定减速器的数量需要大量的信息。下面的链接将帮助您http://wiki.apache.org/hadoop/howmanymapsandreduces

6ju8rftf

6ju8rftf2#

如果要分析的文件大小小于块大小( dfs.blocksize 在hdfs default.xml)中,则不拆分文件,只运行一个Map任务,不管配置了多少Map器。尝试分析更大的文件或减少块大小;将创建多个拆分,以及相同数量的Map器。

相关问题