在hadoop集群上比在eclipse上运行wordcount慢

mqkwyuun  于 2021-06-04  发布在  Hadoop
关注(0)|答案(1)|浏览(381)

我的hadoop(版本:2.5.0)集群有3台机器。
拓扑:10.0.0.1 namenode,datanode 10.0.0.2 datanode 10.0.0.3 datanode
配置如下:
核心站点

<configuration>
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://10.0.0.1/</value>
                <final>true</final>
        </property>
</configuration>

hdfs-site.xml文件

<configuration>
        <property>
                <name>dfs.replication</name>
                <value>2</value>
        </property>
        <property>
                <name>dfs.namenode.name.dir</name>
                <value>file:///home/tuannd/hdfs/namenode</value>
                <final>true</final>
        </property>
        <property>
                <name>dfs.datanode.data.dir</name>
                <value>file:///home/tuannd/hdfs/datanode</value>
                <final>true</final>
        </property>
        <property>
                <name>dfs.permissions</name>
                <value>false</value>
        </property>
</configuration>

mapred-site.xml文件

<configuration>
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>
        <property>
                <name>mapredure.jobtracker.address</name>
                <value>10.0.0.1:9001</value>
                <final>true</final>
        </property>
        <property>
                <name>mapredure.cluster.local.dir</name>
                <value>/tmp/hadoop/mapredure/system</value>
                <final>true</final>
        </property>
        <property>
                <name>mapreduce.tasktracker.map.tasks.maximum</name>
                <value>7</value>
                <final>true</final>
        </property>
        <property>
                <name>mapreduce.tasktracker.reduce.tasks.maximum</name>
                <value>7</value>
                <final>true</final>
        </property>
        <property>
                <name>mapredure.map.tasks</name>
                <value>100</value>
        </property>
        <property>
                <name>mapredure.task.timeout</name>
                <value>0</value>
        </property>
        <property>
                <name>mapreduce.map.java.opts</name>
                <value>-Xmx512M</value>
        </property>
        <property>
                <name>mapreduce.reduce.java.opts</name>
                <value>-Xmx1024M</value>
        </property>
</configuration>

yarn-site.xml文件

<configuration>
<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>
<property>
        <name>yarn.nodemanager.resource.memory-mb</name>
        <value>8192</value>
</property>
</configuration>

奴隶

10.0.0.1
10.0.0.2
10.0.0.3

全部启动.sh。在主机上:

19817 Jps
15240 ResourceManager
12521 SecondaryNameNode
12330 DataNode
12171 NameNode
15381 NodeManager

在从属服务器上:

24454 NodeManager
22828 DataNode
24584 Jps

代码wordcount:与此链接相同
使用相同的输入数据。
在eclipse(主机)上:9秒内处理。
在hadoop集群上:30秒内处理。
我不知道hadoop集群配置文件有什么问题?在hadoop集群上处理数据的时间比在eclipse上慢!
谢谢。

huus2vyu

huus2vyu1#

hadoop不擅长缩小到小数据。由于过程在9秒内完成,我假设您有一个小的输入。试着用一些gbs的输入数据运行你的程序,你会看到一些很大的不同。
考虑初始化任务的成本和节点之间的通信成本(网络),这些在本地版本中是不存在的。
小贴士:你也可以用sumreducer作为一个组合器,在运行大数据时可以看到很好的速度提升。
更新:如果您使用的正是作为链接提供的代码,那么问题是您使用的是单个缩减器(默认情况下)。如果您使用更多的reduce任务,您将看到并行化的好处( job.setNumReduceTasks(num); ),在哪里 num 可根据此处提供的说明指定(这些只是说明,不是规则)。

相关问题