我在我的4核笔记本电脑上运行伪分布式模式的任务。如何确保所有的内核都被有效地使用?目前,我的作业跟踪器显示一次只有一个作业正在执行。这是否意味着只使用一个核心?
以下是我的配置文件。
配置/core-site.xml:<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
配置/hdfs-site.xml: <configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
配置/mapred-site.xml: <configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
</configuration>
编辑:根据答案,我需要在mapred-site.xml
中添加以下属性 <property>
<name>mapred.map.tasks</name>
<value>4</value>
</property>
<property>
<name>mapred.reduce.tasks</name>
<value>4</value>
</property>
mapreduce.tasktracker.map.tasks.maximum
和mapreduce.tasktracker.reduce.tasks.maximum
属性控制每个节点map和reduce任务的数量。对于4核处理器,从2/2开始,然后根据需要更改值。slot是一个map或reduce slot,将值设置为4/4将使Hadoop框架同时启动4个map和4个reduce任务。在一个节点上,一次总共运行8个map和reduce任务。
mapred.map.tasks
和mapred.reduce.tasks
属性控制作业的map/reduce任务总数,而不是每个节点的任务数。此外,mapred.map.tasks
是Hadoop框架的一个提示,并且该作业的map任务总数等于InputSplits的#。
mapred.map.tasks
和mapred.reduce.tasks
将控制这一点,并且(我相信)将在mapred-site.xml
中设置。然而,这将这些设置为集群范围的默认值;更常见的情况是,您将在每个作业的基础上配置它们。您可以在java命令行中使用-D