我有一个Hadoop(版本:2.5.0)集群,有3台机器。
拓扑结构:10.0.0.1名称节点,数据节点10.0.0.2数据节点10.0.0.3数据节点
配置如下:
核心站点
<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>
映射的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>
纱线站点.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
码字计数:相同的这个链接
使用相同的输入数据。
- 在Eclipse(主机)上:在9中进行处理
- 在Hadoop集群上:30秒内处理
我不知道Hadoop上的集群配置文件出了什么问题?Hadoop集群上处理数据的时间比eclipse慢!
谢谢。
Hadoop不善于缩小到小数据。由于该过程在9秒内完成,我认为您有少量输入。试着用一些GB的输入数据运行你的程序,你会发现一些很大的不同。
考虑初始化任务的成本和节点之间的通信成本(网络),这些在本地版本中是不存在的。
提示:您还可以将SumReducer用作Combiner,并在运行大数据时看到良好的速度提升。
UPDATE:如果您使用的正是作为链接提供的代码,那么问题是您使用的是单个reducer(默认情况下)。如果您使用更多的reduce任务(job.setNumReduceTasks(num);
),您将看到并行化的好处,其中num
可以根据此处提供的指示指定(这些只是说明,而不是规则)。