奇怪的hadoop行为,master执行所有工作?

moiiocjp  于 2021-07-15  发布在  Hadoop
关注(0)|答案(1)|浏览(323)

我使用以下指南设置了一个群集: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的网络活动表示它正在发送大量数据,namenode接收这些数据。此外,namenode的cpu得到了充分利用,而datanode的cpu根本没有被使用。如图所示:

这些节点是同一台机器上的虚拟机。这种情况发生在几个不同的脚本中,图中是运行wordcount算法得到的。
为什么不在datanode上执行工作?是什么导致了这样的行为?感谢您的帮助。

pxy2qtax

pxy2qtax1#

根据指南,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之后,一切都按预期进行了。这项工作是在datanodes上执行的。

相关问题