====前提:
搭建好集群环境(zookeeper、hadoop、hbase)。
搭建方法这里就不进行介绍了,网上有很多博客在介绍这些。
====简单需求:
WordCount单词计数,号称Hadoop的HelloWorld。所以,我打算通过这个来初体验一下Hadoop。需求如下:
①、计算文件中出现每个单词的频数
②、输入结果按照字母顺序进行排序
====Map过程:
首先将文件进行切分成单词。将所有单词的项目都聚到一起。生成key-value的中间结果。
====Reduce过程
拿到之前Map的中间结果,进行合并(归约)。
====源代码
源代码来自慕课网,由于我自己学习需要,放到了我的Github空间上了。
====上传Jar包
首先需要确认Linux集群运转是否正常。使用jps命令查看。确保hadoop相关进程的存在。
需要注意一点,不同版本的Hadoop的jps结果可能不一样。我在看慕课网的视频的时候,
发现人家里面还有TaskTracker和JobTracker呢,但是新版本的Hadoop就已经没有。
并不是集群环境的问题。具体什么是正确的,可以去查看官网的帮助文档。
①、在Master端的jps结果
②、在Slave端的jps结果
然后,将写完的代码达成jar包。由于我使用的是Mave环境,所以在Maven环境下使用mvn package进行打包即可。
====上传文件至hdfs文件目录
①、将上述步骤中生成的jar包上传到Linux服务器上。
我在HDOOP_HOME的根目录下创建了一个专门用于存放jar包的文件夹package。将生成的jar包上传到这里
/home/qch/software/hadoop-2.7.1/package
②、使用hadoop fs -put命令将数据源文件到hdfs文件目录
注意,这里是hdfs文件目录,并非是Linux系统上的某个文件夹。如果目录不存在,需要通过hadoop fs -mkdir命令自己手动去逐层创建。
我这里将上述3个文件上传到了hdfs文件目录[/user/root/wc_input]上了。
====程序运行
①、通过【hadoop jar <jar> [mainClass] args…】命令来运行程序。
命令:hadoop jar ../package/WordCount-1.0-SNAPSHOT.jar test.WordCount wc_input/file wc_output
②、运行成功之后,可以通过命令来查看hdfs上的生成结果是否正确。
====总结:
我犯的最小白的错误就是,不知道需要将文件上传到hdfs文件目录下面。希望以后加深对hdfs的了解。
这也就是我今天(2016/4/22。)的第一个mapreduce成果。
下一步需要真正去进行我的MapReduce工作了,需要考虑按照什么规则进行Map和Reduce。这才是重中之重。
--END--