奇怪的 Hadoop 行为,掌握所有工作?

Odd Hadoop behavior, master performing all work?

我已经使用本指南设置了一个集群:https://medium.com/@jootorres_11979/how-to-set-up-a-hadoop-3-2-1-multi-node-cluster-on-ubuntu-18-04-2-nodes-567ca44a3b12

目前我有一个datanode和一个master节点

当我 运行 Hadoop 作业时发生的事情是,datanode 的网络 activity 表明它正在发送大量数据并且 namenode 接收该数据。此外,namenode 的 CPU 被充分利用,而 datanode 的 CPU 根本没有被使用。见图:

节点是同一台机器上的虚拟机。几个不同的脚本都会出现这种情况,该图来自 运行ning WordCount 算法。

为什么没有在数据节点上执行工作?什么会导致这种行为? 感谢任何帮助。

根据指南,mapred-site.xml 未更改。这意味着使用默认值。 mapreduce.framework.name 的默认值是“local”。这意味着所有计算都将在本地执行。这必须更改为“yarn”。

我创建了以下 mapred-site.xml

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
   <name>mapreduce.framework.name</name>
   <value>yarn</value>
</property>
<property>
   <name>yarn.app.mapreduce.am.env</name>
   <value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
</property>
<property>
   <name>mapreduce.map.env</name>
   <value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
</property>
<property>
   <name>mapreduce.reduce.env</name>
   <value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
</property>
<property>
   <name>mapreduce.application.classpath</name> 
   <value> $HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*
        $HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*
    </value>
</property>
</configuration>

我还必须将 yarn-site.xml 更改为:

<?xml version="1.0"?>
<configuration>
<property>
   <name>yarn.resourcemanager.hostname</name>
   <value>hadoop-master</value>
</property>
<property>
   <name>yarn.nodemanager.aux-services</name>
   <value>mapreduce_shuffle</value>
</property>
<property>
   <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
   <value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
</configuration>

重启 yarn 和 Hadoop 后,一切正常。该工作在数据节点上执行。