- 把握mapreduce的map阶段和reduce阶段的处理过程
- 把握基于mapreduce框架的单词数量统计程序开辟、测试
- 把握怎样将mapreduce程序提交到Hadoop集群运行
MapReduce是一种分布式计算模子,用于大规模数据集(如TB级)的并行运算。焦点头脑是分而治之,即先分后总。主要用来处理离线数据。
基于MapReduce框架开辟的程序称之为MapReduce程序。MapReduce程序由两个阶段组成: map和reduce,用户(即程序员)只需实现map()和reduce()两个函数,即可开辟出分布式并行计算程序。
以处理文本文件为例,map阶段主要处理接收到的key-value数据,key是每行首字符偏移量,value是被处理的文本文件的当前行内容,处理完后,会输出一对key-value到下一个阶段:shuffle阶段。
map方法说明见下图:
思索:假如map处理的数据只有两行数据(假设第一行是hello world,地二行是hahaha),那么map方法第一次被调用时,它的第二个参数value的值是什么?
map的输出和reduce的输入之间的数据处理过程即为shuffle过程。该过程涉及分区、排序、分组等使用。注:此过程不需要做相应的代码开辟,需要理解!
举个例子,先不考虑分区情况:
这个阶段主要是处理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集群任一虚拟机。
使用hadoop jar命令运行打包好的mapreduce程序,观察程序的运行结果。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |