在Apache Hadoop(多节点群集)中运行Map-Reduce作业

我们将在这里描述在多节点集群中的Apache Hadoop中运行MapReduce Job的过程。 要在多节点群集中设置Apache Hadoop ,可以阅读设置Apache Hadoop多节点群集

为了进行设置,我们必须在每台计算机上使用以下配置Hadoop:

  • 在所有节点的conf / mapred-site.xml中添加以下属性


<property>
<name>mapred.job.tracker</name>
<value>master:54311</value>

<description>The host and port that the MapReduce job tracker runs
at. If “local”, then jobs are run in-process as a single map
and reduce task.
</description>
</property>

<property>
<name>mapred.local.dir</name>
<value>${hadoop.tmp.dir}/mapred/local</value>
</property>

<property>
<name>mapred.map.tasks</name>
<value>20</value>
</property>

<property>
<name>mapred.reduce.tasks</name>
<value>2</value>
</property>

注意:最后三个是附加设置,因此我们可以忽略它们。

  • 古腾堡项目

为了演示MapReduce,我们将使用WordCount示例作业,该作业读取文本文件并计算单词出现的频率。 输入是文本文件,输出是文本文件,其每一行包含一个单词和出现频率的计数,以制表符分隔。

从以下站点下载示例输入,所有电子文本均应采用纯文本us-ascii编码。

  • 科学概要,卷。 1(共4个),作者:J。Arthur Thomson
  • 达芬奇的笔记本
  • 尤利西斯(James Joyce)
  • 《孙子兵法》提高了6美分。 卑诗省孙子
  • 亚瑟·柯南·道尔爵士的《福尔摩斯历险记》
  • 魔鬼字典,安布罗斯·比尔斯(Ambrose Bierce)
  • 大英百科全书,第11版,第4卷,第3部分

请谷歌搜索这些文本。 将每个电子书下载为纯文本UTF-8编码的文本文件,并将文件存储在所选的本地临时目录中,例如/ tmp / gutenberg。 使用以下命令检查文件:

$ ls -l /tmp/gutenberg/
  • 接下来,我们在集群中启动dfs和mapred层
$ start-dfs.sh

$ start-mapred.sh

通过发出以下命令jps进行检查,以检查数据节点,名称节点和任务跟踪器,作业跟踪器在所有节点中均正常运行。

  • 接下来,我们将本地文件(这里是文本文件)复制到Hadoop HDFS
$ hadoop dfs -copyFromLocal /tmp/gutenberg /Users/hduser/gutenberg

$ hadoop dfs -ls /Users/hduser

如果文件被成功复制,我们将看到类似以下内容–找到2个项目

drwxr-xr-x – hduser supergroup 0 2013-05-21 14:48 /Users/hduser/gutenberg

此外,我们检查文件系统在/ Users / hduser / gutenberg中的内容:

$ hadoop dfs -ls /Users/hduser/gutenberg
Found 7 items

-rw-r--r-- 2 hduser supergroup 336705 2013-05-21 14:48 /Users/hduser/gutenberg/pg132.txt
-rw-r--r-- 2 hduser supergroup 581877 2013-05-21 14:48 /Users/hduser/gutenberg/pg1661.txt
-rw-r--r-- 2 hduser supergroup 1916261 2013-05-21 14:48 /Users/hduser/gutenberg/pg19699.txt
-rw-r--r-- 2 hduser supergroup 674570 2013-05-21 14:48 /Users/hduser/gutenberg/pg20417.txt
-rw-r--r-- 2 hduser supergroup 1540091 2013-05-21 14:48 /Users/hduser/gutenberg/pg4300.txt
-rw-r--r-- 2 hduser supergroup 447582 2013-05-21 14:48 /Users/hduser/gutenberg/pg5000.txt
-rw-r--r-- 2 hduser supergroup 384408 2013-05-21 14:48 /Users/hduser/gutenberg/pg972.txt
  • 我们开始我们的MapReduce工作

让我们运行MapReduce WordCount示例:

$ hadoop jar hadoop-examples-1.0.4.jar wordcount /Users/hduser/gutenberg /Users/hduser/gutenberg-output

注意:假设您已经在HADOOP_HOME目录中。 如果没有,

$ hadoop jar ABSOLUTE/PATH/TO/HADOOP/DIR/hadoop-examples-1.0.4.jar wordcount /Users/hduser/gutenberg /Users/hduser/gutenberg-output

或者,如果您已经在/ usr / local / hadoop中安装了Hadoop,

hadoop jar /usr/local/hadoop/hadoop-examples-1.0.4.jar wordcount /Users/hduser/gutenberg /Users/hduser/gutenberg-output

输出如下:

13/05/22 13:12:13 INFO mapred.JobClient:  map 0% reduce 0%
13/05/22 13:12:59 INFO mapred.JobClient:  map 28% reduce 0%
13/05/22 13:13:05 INFO mapred.JobClient:  map 57% reduce 0%
13/05/22 13:13:11 INFO mapred.JobClient:  map 71% reduce 0%
13/05/22 13:13:20 INFO mapred.JobClient:  map 85% reduce 0%
13/05/22 13:13:26 INFO mapred.JobClient:  map 100% reduce 0%
13/05/22 13:13:43 INFO mapred.JobClient:  map 100% reduce 50%
13/05/22 13:13:55 INFO mapred.JobClient:  map 100% reduce 100%
13/05/22 13:13:59 INFO mapred.JobClient:  map 85% reduce 100%
13/05/22 13:14:02 INFO mapred.JobClient:  map 100% reduce 100%
13/05/22 13:14:07 INFO mapred.JobClient: Job complete: job_201305211616_0011
13/05/22 13:14:07 INFO mapred.JobClient: Counters: 26
13/05/22 13:14:07 INFO mapred.JobClient:   Job Counters 
13/05/22 13:14:07 INFO mapred.JobClient:     Launched reduce tasks=3
13/05/22 13:14:07 INFO mapred.JobClient:     SLOTS_MILLIS_MAPS=118920
13/05/22 13:14:07 INFO mapred.JobClient:     Total time spent by all reduces waiting after reserving slots (ms)=0
13/05/22 13:14:07 INFO mapred.JobClient:     Total time spent by all maps waiting after reserving slots (ms)=0
13/05/22 13:14:07 INFO mapred.JobClient:     Launched map tasks=10
13/05/22 13:14:07 INFO mapred.JobClient:     Data-local map tasks=10
13/05/22 13:14:07 INFO mapred.JobClient:     SLOTS_MILLIS_REDUCES=54620
13/05/22 13:14:07 INFO mapred.JobClient:   File Output Format Counters 
13/05/22 13:14:07 INFO mapred.JobClient:     Bytes Written=1267287
13/05/22 13:14:07 INFO mapred.JobClient:   FileSystemCounters
13/05/22 13:14:07 INFO mapred.JobClient:     FILE_BYTES_READ=4151123
13/05/22 13:14:07 INFO mapred.JobClient:     HDFS_BYTES_READ=5882320
13/05/22 13:14:07 INFO mapred.JobClient:     FILE_BYTES_WRITTEN=6937084
13/05/22 13:14:07 INFO mapred.JobClient:     HDFS_BYTES_WRITTEN=1267287
13/05/22 13:14:07 INFO mapred.JobClient:   File Input Format Counters 
13/05/22 13:14:07 INFO mapred.JobClient:     Bytes Read=5881494
13/05/22 13:14:07 INFO mapred.JobClient:   Map-Reduce Framework
13/05/22 13:14:07 INFO mapred.JobClient:     Reduce input groups=114901
13/05/22 13:14:07 INFO mapred.JobClient:     Map output materialized bytes=2597630
13/05/22 13:14:07 INFO mapred.JobClient:     Combine output records=178795
13/05/22 13:14:07 INFO mapred.JobClient:     Map input records=115251
13/05/22 13:14:07 INFO mapred.JobClient:     Reduce shuffle bytes=1857123
13/05/22 13:14:07 INFO mapred.JobClient:     Reduce output records=114901
13/05/22 13:14:07 INFO mapred.JobClient:     Spilled Records=463427
13/05/22 13:14:07 INFO mapred.JobClient:     Map output bytes=9821180
13/05/22 13:14:07 INFO mapred.JobClient:     Total committed heap usage (bytes)=1567514624
13/05/22 13:14:07 INFO mapred.JobClient:     Combine input records=1005554
13/05/22 13:14:07 INFO mapred.JobClient:     Map output records=1005554
13/05/22 13:14:07 INFO mapred.JobClient:     SPLIT_RAW_BYTES=826
13/05/22 13:14:07 INFO mapred.JobClient:     Reduce input records=178795
  • 检索作业结果

要直接从hadoop读取而不复制到本地文件系统,请执行以下操作:

$ hadoop dfs -cat /Users/hduser/gutenberg-output/part-r-00000

让我们将结果复制到本地文件系统中。

$ mkdir /tmp/gutenberg-output

$ bin/hadoop dfs -getmerge /Users/hduser/gutenberg-output /tmp/gutenberg-output

$ head /tmp/gutenberg-output/gutenberg-output

我们将得到如下输出:

"'Ample.' 1
"'Arthur!' 1
"'As 1
"'Because 1
"'But,' 1
"'Certainly,' 1
"'Come, 1
"'DEAR 1
"'Dear 2
"'Dearest 1
"'Don't 1
"'Fritz! 1
"'From 1
"'Have 1
"'Here 1
"'How 2

命令fs -getmerge将简单地串联在指定目录中找到的所有文件。 这意味着合并的文件可能(并且很可能不会)被排序。

资源:


翻译自: https://www.javacodegeeks.com/2013/06/running-map-reduce-job-in-apache-hadoop-multinode-cluster.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值