奇怪的 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 后,一切正常。该工作在数据节点上执行。
我已经使用本指南设置了一个集群: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 后,一切正常。该工作在数据节点上执行。