Hadoop

打印 上一主题 下一主题

主题 878|帖子 878|积分 2634


  • 目的

  • 把握mapreduce的map阶段和reduce阶段的处理过程
  • 把握基于mapreduce框架的单词数量统计程序开辟、测试
  • 把握怎样将mapreduce程序提交到Hadoop集群运行

  • MapReduce框架
MapReduce是一种分布式计算模子,用于大规模数据集(如TB级)并行运算。焦点头脑是分而治之,即先分后总。主要用来处理离线数据
基于MapReduce框架开辟的程序称之为MapReduce程序。MapReduce程序由两个阶段组成: map和reduce,用户(即程序员)只需实现map()和reduce()两个函数,即可开辟出分布式并行计算程序。

  • map阶段
以处理文本文件为例,map阶段主要处理接收到的key-value数据,key是每行首字符偏移量,value是被处理的文本文件的当前行内容,处理完后,会输出一对key-value到下一个阶段:shuffle阶段。


map方法说明见下图:



思索:假如map处理的数据只有两行数据(假设第一行是hello world,地二行是hahaha),那么map方法第一次被调用时,它的第二个参数value的值是什么?

  • shuffle阶段
map的输出和reduce的输入之间的数据处理过程即为shuffle过程。该过程涉及分区、排序、分组等使用。注:此过程不需要做相应的代码开辟,需要理解!
举个例子,先不考虑分区情况:


  • reduce阶段
这个阶段主要是处理shuffle输入的key-value数据,有多少key-value,就调用多少次Reducer的reduce方法。


reduce方法说明如下:


  • 数据流转过程


  • 运行MapReduce提供的wordcount例子

  • worcount这个程序的作用:统计输入的文件中每个单词数量
  • 将一个hello.txt上传到hdfs: hdfs dfs -put hello.txt /hello.txt

  • cd $HADOOP_HOME/share/hadoop/mapreduce

  • 运行wordcount例子:hadoop jar hadoop-mapreduce-examples-3.1.3.jar wordcount /hello.txt /wc_out
  • 检察结果:hdfs dfs -ls /wc_out
  hdfs dfs -cat /wc_out/part-r-00000





  • 基于MapReduce框架开辟wordcount程序   

    • 代码开辟

结合前面map阶段、shuffle阶段、reduce阶段的先容来看代码。业务逻辑都在map方法和reduce方法里。代码写完后,要搭建当地调试环境(即当地部署Hadoop)才能运行,详见8.2
注:以下三张图片合并才是一个完成的程序,要把hdfs2.7.2-jars(见网盘)依赖包引入项目中。





    • 当地调试环境搭建

解压windows-hadoop-3.1.0.rar(网盘有)到windows某个路径,得到一个hadoop-3.1.0文件夹,该文件下有一个bin目次。
然后windows配置环境变量HADOOP_HOME,它的值为hadoop-3.1.0文件夹绝对路径,PATH添加一个路径:%HADOOP_HOME%\bin。
配置好环境变量后,重启idea。


  • 将项目打包
不懂的参考上一个课件。打包上传到hadoop集群任一虚拟机。

  • 运行mapreduce程序
使用hadoop jar命令运行打包好的mapreduce程序,观察程序的运行结果。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

南飓风

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表