指导手册05:MapReduce编程入门.md
指导手册05:MapReduce编程入门
Part 1:使用Eclipse创建MapReduce工程
情景描述:
因为Hadoop本身就是由Java开发的,所以通常也选用Eclipse作为MapReduce的编程工具,本小节将完成Eclipse安装,MapReduce集成环境配置。
1.下载与安装Eclipse
(1)在官网下载Eclipse安装包“Eclipse IDE for Java EE
Developers”官网:https://www.eclipse.org/downloads/packages/
(2)将Eclipse安装包解压到本地的安装目录
(3)将插件hadoop-eclipse-plugin-2.6.0jar拷贝到Eclipse安装目录下的dropins目录
(4)双击解压文件下Eclipse文件夹中的图标,打开Eclipse
2.配置MapReduce环境
(1)增加Map/Reduce功能区。
打开Eclipse主界面,在菜单中选择“Window”->”Perspective”->”Open
Perspective”->”Other”命令,在弹出的菜单中选择”Map/Reduce”选择,然后单击“OK”按钮确定。
(2)增加Hadoop集群的连接。
在Eclipse主界面下方的控制台界面中,选中选项卡“Map/Reduce Locations”,如下图所示:
单击上图所示右下方的蓝色小象图标(其右上方有+号),就会弹出连接Hadoop集群的配置对话框。
相关的Hadoop 集群的连接信息有以下各项。
Location name:命名新建的Hadoop连接,如Hadoop Cluster.
Map/Reduce(v2)Master:填写Hadoop集群的ResourceManager的IP地址和端口。(查看yarn-site.xml配置文件)。
DFS
Master:填写Hadoop集群的NameNode的IP地址和连接端口。(查看core-site.xml配置文件)
(3)浏览HDFS上的目录文件。
3.新建MapReduce工程
(1)导入MapReduce运行依赖的相关Jar包
在主菜单上选择”Window”->”Preferences”命令,在下图的Preference窗口中选择“Hadoop
Map/Reduce”选项,单击“Browse”按钮,选中Hadoop的安装文件夹路径。
(2)创建MapReduce工程。从菜单栏中选择“File”->”New”->”Project”命令,在弹出的New对话框中选择“Map/Reduce
Project”选项。如下图如示。
(3)在“MapReduce
Project”的创建界面中填写工程名“MemberCount”,然后单击“Finish”按钮。
(4)接下来,在主界在左侧的”Project
Explorer”栏可以看到己经创建好的工程MemberCout,接下来就可以正式进行MapReduce工作了。
4.实训操作
在Linux中完成Eclipse安装并创建MapReduce工程。(参考:Eclipe在Linux中安装配置参考)
Part 2: 通过源码初识MapReduce编程
情景描述:
在进行MapReduce编程前,有必要对MapReduce的基本原理进行了解,尤其是要对其核心模块Mapper与Reduce的执行流程有一定认识。Hadoop官方提供了一些示例源码,非常适合初学者学习及参考。比如词频统计(WordCount)的源码。
1.词频统计(WordCount)的源码
2.MapReduce原理
MapReduce,在名称上就表现出了它的核心原理,它是由两个阶段组成的。
Map,表示“映射”,在map阶段进行的一系列数据处理任务被称为Mapper模块。
Reduce,表示“归约”,同样,在reduce阶段进行的一系列数据处理任务也被称为Reducer模块。
MapReduce通常也被简称为MR
如果用打比方的方式来说明,MapReduce可以被看作一个专业处理大数据的工程队,它由以下主要成员组成:
(1)Mapper:映射器。
(2)Mapper助理InputFormat:输入文件读取器。
(3)Shuffle:运输队。
(4)Shuffle助理Sorter:排序器。
(5)Reducer:归约器。
(6)Reducer助理OutputFormat:输出结果写入器。
数据分片。假设原始文件中8000万行记录被系统分配给100个Mapper来处理,那么每个Mapper处理80万行数据。相当于MapReduce通过数据分片的方式,把数据分发给多个单元来进行处理,这就是分布式计算的第一步。
数据映射。在数据分片完成后,由Mapper助理InputFormat从文件的输入目录中读取这些记录,然后由Mapper负责对记录进行解析,并重新组织成新的格式。然后Mapper把自己的处理结果输出,等待Shuffle运输队取走结果。
数据混洗。由Shuffle运输队把获取的结果按照相同的键(Key)进行汇集,再把结果送到Shuffle助理Sorter,由Sorter负责对这些结果排好序,然后提交给Reducer。
数据归约。Reducer收到传输过来的结果后,接着进行汇总与映射工作,得到最终计算结果。最后由Reducer助理OutputFormat把结果输出到指定位置。
3.MapReduce 实现词频统计的执行流程
map任务的处理过程
reduce任务的处理过程
4.Hadoop MapReduce– 单词计数源码分析Driver
应用程序Driver分析:
第一个框部分:初始化Hadoop配置。
第二个框部分:新建Job并设置主类,这里的Job实例需要把configuration的实例传入,后面的“word
count” 是该MapReduce任务的任务名。第三个框部分:设置Mapper、Combiner、Reducer。这里设置的代码都是固定写法,里面的类名可以改变,其中Mapper、Reducer是必段设置的类。
第四个框部分:设置输出键值对格式。在MapReduce任务中涉及4个键值对格式,Mapper输入键值对格式<K1,V1>,
Mapper输出键值对格式<K2,V2>,Reducer输出键值对格式<K3,V3
>。当Mapper输出键值对格式<K2,V2>和Reducer输出键值对格式<K3,V3>一样的时候,可以只设置Reducerl输出键值对的格式。第五、六个框部分:设置输入与输出路径。如果必要,这里还可以增加对输入与输出文件格式设置。
最后部分:提交MapReduce任务运行。
以下是Mapper、Reducer类
Map 是映射,Reducer是把相同的键列表值全部累加起来。
(参考源代码WordCount)
5.实训操作
使用有短句“A friend in need is a friend in
deed”,画出使用MapReduce对它进行词频统计的过程,主要展示Map阶段与Reduce阶段的处理过程。请画图展示。
指导手册05:MapReduce编程入门.md相关推荐
- 大数据之hadoop伪集群搭建与MapReduce编程入门
一.理论知识预热 一句话介绍hadoop: Hadoop的核心由分布式文件系统HDFS与Map/Reduce计算模型组成. (1)HDFS分布式文件系统 HDFS由三个角色构成: 1)NameNode ...
- MapReduce编程入门-日志访问次数统计任务
使用到的资源 hadoop-eclipse-plugin-2.6.4.jar hadoop-2.7.7 日志文件 user_login.txt 上述资源以及实验源码均已上传到百度云盘,可自行获取 链接 ...
- 大数据快速入门(05):MapReduce 编程模型赏析
一.Hadoop 诞生的传奇故事 (上图是 Doug Cutting,hadoop 之父) 1985年,Cutting 毕业于美国斯坦福大学. Cutting 的第一份工作是在 Xerox 做实习生, ...
- Hadoop MapReduce编程 API入门系列之压缩和计数器(三十)
不多说,直接上代码. Hadoop MapReduce编程 API入门系列之小文件合并(二十九) 生成的结果,作为输入源. 代码 package zhouls.bigdata.myMapReduce. ...
- Hadoop MapReduce编程 API入门系列之查找相同字母组成的字谜(三)
找出相同单词的所有单词.现在,是拿取部分数据集(如下)来完成本项目. 项目需求 一本英文书籍包含成千上万个单词或者短语,现在我们需要在大量的单词中,找出相同字母组成的所有anagrams(字谜). 思 ...
- Hadoop安装实验及MapReduce编程实验指导
实验环境:Red Hat 6.5.Hadoop-2.6.5 JDK1.7.0版本 具体参考实验指导书,本文档做辅助工作,详细命令请看教学实验指导书. 1.Hadoop安装实验 准备工作 配置主机名 ...
- FPGA入门指导手册-----------它是空的(不信你点开看看啊)
FPGA入门指导手册 绪论 语法相关记录 函数申明 状态机 毛刺问题 实列操作 1. 点量一个LED灯(下载编译) flash下载操作(JIC文件下载) 2. ModelSim联合仿真操作手册(空) ...
- mapreduce程序输出评分8.6分以上的书名和评分_如何选编程入门资料?光评分高怎么够|文末赠书...
说到编程入门,很多人第一想到的肯定是Python. 那么,编程零基础应当如何开始学 Python ,才不会入门即放弃?一开始的学习资料的选择尤为重要.那么,如何筛选适合自己的入门资料?这里和大家谈谈我 ...
- Hadoop大数据--Mapreduce编程规范及入门示例
Mapreduce是一个分布式的运算编程框架,核心功能是将用户编写的核心逻辑代码分布式地运行在一个集群的很多服务器上. Mapreduce的存在价值 (1)海量数据在单机上处理因为硬件资源限制,无法胜 ...
- [Hadoop入门] - 1 Ubuntu系统 Hadoop介绍 MapReduce编程思想
Ubuntu系统 (我用到版本号是140.4) ubuntu系统是一个以桌面应用为主的Linux操作系统,Ubuntu基于Debian发行版和GNOME桌面环境.Ubuntu的目标在于为一般用户提供一 ...
最新文章
- 在用户控件中撰写JS时控件的客户端ID问题
- 可以考的python方面的证书-python有证书的加密解密实现方法
- java 之持久化和序列化(反序列化)
- 结巴分词关键词相似度_gensim和jieba分词进行主题分析,文本相似度
- 浏览器市场占有率_全球市场占有率第一的谷歌浏览器添加对ipfs://的支持!
- MongoDB中文社区年终盛典
- 数据分析师要会mysql_数据分析人员需要掌握sql到什么程度?
- 什么是程序员的优良品质
- Selenium自动化测试-8.iframe处理
- LA2218半平面交
- Xml遍历某一节点值
- linux下载git并为git配置连接ssh
- python虚拟变量回归_第二周:python实现线性回归(哑变量回归)的高效方法
- 2018-12支付宝红包赚钱薅羊毛全攻略
- Excel 滚动条动态显示图形
- 大屏项目屏幕分辨率适配
- Java学习之注解(五)Android循序渐进实现高逼格自定义ViewBinder
- 推荐算法工程师学习路线及工作指南
- 强大数定理,弱大数定理,和中心极限定理
- python corrupt extra field_英语专四dictation模拟练习-沪江英语
热门文章
- 蒙特卡罗模拟计算定积分(R)
- 哈工程转专业计算机,2021年哈尔滨工程大学大一新生转专业及入学考试相关规定...
- MAC 网速问题 变慢 的来看看 经验
- python多线程爬取美图录网站图集按模特姓名存储到本地(二)
- Linux 内核 regulator 机制
- 【51nod 1538】一道难题(常系数齐次线性递推)
- 网页直播源码IM即时通讯协议
- 【目标检测】YOLOv3:An Incremental Improvement
- winpython, anaconda 哪个更好?
- 联想新计算机开机黑屏,联想笔记本电脑开机黑屏没反应的原因及解决办法攻略【维修总结】...