可以在 HDFS 的 web 界面进行查看。
使用自带的例子进行 WordCount 案例演示
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.1.jar wordcount /input /out可以看到本地集群的 1 号任务。
最后,查看计算结果
[root@iZ2zebkqy02hia7o7gj8paZ hadoop-2.6.1]# hadoop dfs -ls /out DEPRECATED: Use of this script to execute hdfs command is deprecated. Instead use the hdfs command for it. Found 2 items -rw-r--r-- 1 root supergroup 0 2021-12-06 18:28 /out/_SUCCESS -rw-r--r-- 1 root supergroup 48 2021-12-06 18:28 /out/part-r-00000 [root@iZ2zebkqy02hia7o7gj8paZ hadoop-2.6.1]# hadoop dfs -text /out/part-r-00000 DEPRECATED: Use of this script to execute hdfs command is deprecated. Instead use the hdfs command for it. flink 4 hadoop 6 hbase 4 hive 2 kafka 2 spark 8同样也可以在 web 页面进行查看。
ok!至此,在伪分布式环境计算了第一个 MapReduce 任务。
系统案例感受完了,下面看看自己写一个 MapReduce 任务。
第一个 MR 程序通常开发一个 MR(MapReduce)程序,是用 Java 来进行开发的,本身 hadoop 生态也是用 Java实现。
所以,使用 Java 开发 MR 是最好的选择。
但今天选取 Python 作为 MR 开发语言。
原因有二:其一、很多算法同学对于 Python 的友好是不言而喻的。其二、MR 程序本身担任的是离线任务,对实时性要求不高,但是对于开发效率的要求却不低,Python 开发的MR程序,开箱即用。但用 Java 的话,需要配置一些jar环境,然后打包,上传。。。
下面就用 Python 作为开发语言进行一个 WordCount 的实现。
官网这么说:
Hadoop streaming是Hadoop的一个工具, 它帮助用户创建和运行一类特殊的map/reduce作业, 这些特殊的map/reduce作业是由一些可执行文件或脚本文件充当mapper或者reducer。
例如:
$HADOOP_HOME/bin/hadoop jar $HADOOP_HOME/hadoop-streaming.jar \ -input myInputDirs \ -output myOutputDir \ -mapper /bin/cat \ -reducer /bin/wc是的,看文档,咱们需要一个输入文件地址,一个输出文件地址。
另外,需要一个 mapper 程序以及一个 reducer 程序。
下面就开始搞吧!
首先,咱们需要一个 mapper 程序来进行将文件从标准输入进行读取
编写 mapper.py:
#!/usr/bin/python import sys import re for line in sys.stdin: words = re.split(" +", line.strip()) for word in words: print("%s\t%s" % (word, "1"))其中使用正则 re 是防止单词之间出现多个空格。
下面编写 reducer.py:
#!/usr/bin/python import sys sum = 0 last_word = None for line in sys.stdin: word = line.strip().split("\t") if len(word) != 2: continue word = word[0] if last_word is None: last_word = word if last_word != word: print('\t'.join([last_word, str(sum)])) last_word = word sum = 0 sum += 1 print('\t'.join([last_word, str(sum)]))下面可以先进性一番测试,通过一个shell命令即可:
cat input_file | python mapper.py | sort -k1 | python reducer.py最后,就可以编写文档中提供的 Hadoop streaming 工具了。