zoukankan      html  css  js  c++  java
  • MapReduce的初次尝试

    ====前提:

    搭建好集群环境(zookeeper、hadoop、hbase)。

    搭建方法这里就不进行介绍了,网上有很多博客在介绍这些。

      

    ====简单需求:

    WordCount单词计数,号称Hadoop的HelloWorld。所以,我打算通过这个来初体验一下Hadoop。需求如下:

    ①、计算文件中出现每个单词的频数

    ②、输入结果按照字母顺序进行排序

    ====Map过程:

    首先将文件进行切分成单词。将所有单词的项目都聚到一起。生成key-value的中间结果。

    ====Reduce过程

    拿到之前Map的中间结果,进行合并(归约)。

    ====源代码

    源代码来自慕课网,由于我自己学习需要,放到了我的Github空间上了。

    https://github.com/quchunhui/WordCount

    ====上传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--

  • 相关阅读:
    log4j 使用笔记整理中
    执行bat文件
    excel让每个单元格的宽度随着字体自动变动的两种方式(有更好方法的大神,请忽略,求评论下)
    XML中CDATA及其字符实体的使用
    Java文件读写操作指定编码方式。。。。。
    尾数为0零BigDecimal不能装成正常数
    jquery 自动补全控件(支持IE6)待整理
    $.ajax提交,后台接受到的值总是乱码?明天再总结
    js定义变量需赋予初始值
    存储过程的优缺点
  • 原文地址:https://www.cnblogs.com/quchunhui/p/5421727.html
Copyright © 2011-2022 走看看