保证当前shell的用户为hadoop(如果当前用户已经是hadoop,此步可忽略)
参考第一章相关节。
MR基本用例
下载程序
1、切换到/tmp目录下,并创建mr文件。(注:如果有,这个mr是之前在做Java例子时创建的,现在可以删除掉。) 命令:
mkdir mr
然后通过GitHub下载Spark-stack。 命令:git clone https://github.com/haiye1018/Spark-stack
注:对于高校版的学生请仔细阅读第一章第一节中"She平台高校版的资源"中的内容,git地址不上上面的;通常高校版服务端没有外网,访问不了上面地址。
2、进入Spark-stack/Hadoop/目录下。 命令:
cd Spark-stack/Hadoop/
3、将WordCount-python拷贝到/tmp/mr/目录下。 命令:
cp -r WordCount/* /tmp/mr/
4、打开org/apache/hadoop/examples目录下的WordCount.java文件。 命令:
5、因为现在是hadoop的集群环境中编译程序,而不是在idea中导出jar包,需要把包的信息注释。
代码解释
解析输入函数的输入参数、输入的路径、输出的路径。 创建Job,代表MapReduce的整个过程。
将多个输入文件或者路径加到job中
Key为行号、value为给map的每一行的字符串、context定义整个上下文环境。首先现将value变成string,再通过StringTokenizer方法变成一个个的单词存放在word中,再将word中出现的单词和频次存放到context中。
已经将map中的相同的key的内容集合到一起。将同一个key的多个做map的结果进行一个求和。
编译
1、设置环境变量HADOOP_CLASSPATH。
命令:
export HADOOP_CLASSPATH=${JAVA_HOME}/lib/tools.jar
2、因为Java文件存放在WordCount/org/apache/hadoop/examples/目录下,所以进入该目录下。
命令:
3、进行编译。
命令:
hadoop com.sun.tools.javac.Main WordCount.java
注:会出现很多class文件。
4、将class文件打包,打包成一个可以执行的jar包。
命令:
jar cf WordCount.jar WordCount*.class
运行MapReduce
1、查看目录。
命令:
hdfs dfs -ls /
注:有一个安装路径installTest。
2、查看installTest目录。
命令:
hdfs dfs -ls /installTest
3、查看hadoop目录。
命令:
hdfs dfs -ls /installTest/Hadoop
注:data目录就是在安装时的目录,output是之前在做hadoop安装测试时的mapreduce任务。
4、查看data目录。
命令:
hdfs dfs -ls /installTest/hadoop/data
5、提交MapReduce程序。
命令:
hadoop jar WordCount.jar WordCount /installTest/hadoop/data /installTest/hadoop/output3
注:输入是/installTest/hadoop/data,输出是/installTest/hadoop/output3,确保输出是不存在的。map需要缓步启动,reduce需要map启动完才运行。
6、查看结果。
命令:
hdfs dfs -ls /installTest/hadoop/output3
7、结果在part-r-00000文件里。查看该文件。
命令:
hdfs dfs -cat /installTest/hadoop/output3/part-r-00000
前面的字符串是输入数据也就是data里出现过的字符串,数字是出现的次数。
友情提示:详细学习内容可观看Spark快速大数据处理——余海峰https://edu.csdn.net/course/detail/24205