第五章 MapReduce入门编程_第1页
第五章 MapReduce入门编程_第2页
第五章 MapReduce入门编程_第3页
第五章 MapReduce入门编程_第4页
第五章 MapReduce入门编程_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第五章MapReduce编程入门1MapReduce概述、编程模型目录下载和安装idea、maven2MapReduce代码实现3下载和安装idea在官网下载idea安装包官网:/idea/下载和安装idea2.将idea安装包解压到本地的安装目录3.双击解压文件下idea文件夹中的图标打开idea添加maven插件ApacheMaven是一个(特别是Java编程)项目管理及自动构建工具。maven三大功能:管理依赖、构建项目、管理项目信息。1)项目的自动构建,帮助开发人员做项目代码的编译、测试、打包、安装、部署等。

2)管理依赖(管理项目中使用的各种jar包)。ProjectObjectModel项目对象模型,maven把项目当做模型处理。操作这个模型就是操作项目。maven通过pom.xml文件实现项目的构建和依赖的管理。添加maven插件进入官网:/解压安装包配置环境变量添加maven工程进入idea,新建一个项目。选择maven,projectsdk选择自己的java版本添加maven工程Name:推荐填写跟项目相关的名字。Location:选择路径GroupId:填写域名ArtifactId:填写项目名Version:填写版本添加maven工程工程添加完成:想要运行HDFSJavaApi或MR,则需要修改maven自带的pom文件,进行包及包的依赖下载:添加maven工程添加内容参考如下:<dependencies><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-common</artifactId><version>2.7.6</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-client</artifactId><version>2.7.6</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-hdfs</artifactId><version>2.7.6</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-mapreduce-client-core</artifactId><version>2.7.6</version></dependency></dependencies>1MapReduce概述、编程模型目录下载和安装idea、maven2MapReduce代码实现3MapReduce概述

MapReduce是什么简单地说,MapReduce是面向大数据并行处理的计算模型、框架和平台。具体包含以下3层含义。MapReduce是一个并行程序的计算模型与方法MapReduce是一个并行程序运行的软件框架MapReduce是一个基于集群的高性能并行计算平台MapReduce概述

MapReduce基本设计思想面向大规模数据处理,MapReduce有以下三个层面上的基本设计思想。分而治之抽象成模型上升到构架MapReduce概述

MapReduce优缺点MapReduce优点1)MapReduce易于编程。2)良好的扩展性。3)高容错性。4)适合PB级以上海量数据的离线处理。MapReduce缺点1)不适合实时计算。2)不适合流式计算。3)不适合DAG(有向无环图)计算MapReduce概述

MapReduce是Hadoop提供的一种处理海量数据的并行编程模型和计算框架,用于对大规模的数据进行并行计算。主要由ResourceManager和NodeManager两类节点构成。ResourceManager主要负责集群资源管理,NodeManager负责节点的资源管理。当运行MapReduce任务的时候,后产生ApplicationMaster和Container,其中ApplicationMaster负责向ResourceManager节点进行资源的申请并控制任务的执行,Container是最基本的资源单位。MapReduce的Map和Reduce均是其之上进行运行的。MapReduce概述

MapReduce编程思想MapReduce采用“分而治之”的思想。对大规模的数据集的操作分配给各子节点进行操作,然后通过整合子节点的中间结果得到最终结果。即“任务的分解和结果的汇总”。Hadoop将这个工作高度抽象成为两个函数,分别为Map和Reduce。Map负责将任务分解为多个任务。Reduce负责将多个Map任务的中间结果合并为最终结果。在此过程中的其他步骤均由Hadoop的MapReduce框架自行负责处理,包括工作调度、任务分配和节点间通信等。MapReduce原理

(1)Mapper:映射器。(2)Mapper助理InputFormat:输入文件读取器。(3)Shuffle:运输队。(4)Shuffle助理Sorter:排序器。(5)Reducer:归约器。(6)Reducer助理OutputFormat:输出结果写入器。MapReduce原理

数据分片。假设原始文件中8000万行记录被系统分配给100个Mapper来处理,那么每个Mapper处理80万行数据。相当于MapReduce通过数据分片的方式,把数据分发给多个单元来进行处理,这就是分布式计算的第一步。数据映射。在数据分片完成后,由Mapper助理InputFormat从文件的输入目录中读取这些记录,然后由Mapper负责对记录进行解析,并重新组织成新的格式。然后Mapper把自己的处理结果输出,等待Shuffle运输队取走结果。数据混洗。由Shuffle运输队把获取的结果按照相同的键(Key)进行汇集,再把结果送到Shuffle助理Sorter,由Sorter负责对这些结果排好序,然后提交给Reducer。数据归约。Reducer收到传输过来的结果后,接着进行汇总与映射工作,得到最终计算结果。最后由Reducer助理OutputFormat把结果输出到指定位置。MapReduce应用示例

背景分析WordCount主要完成的功能是:统计一系列文本文件中每个单词出现的次数MapReduce应用示例

解决问题的思路业务场景:有大量的文件,每个文件里面存储的都是单词。我们的任务:统计所有文件中每个单词出现的次数。解决思路:先分别统计出每个文件中各个单词出现的次数;然后,再累加不同文件中同一个单词出现次数。MapReduce应用示例

数据处理流程分析把数据源转化为<key,value>对MapReduce应用示例

数据处理流程分析自定义map()方法处理Mapper任务输入的<key,value>对MapReduce应用示例

数据处理流程分析Map端的shuffle过程MapReduce应用示例

数据处理流程分析自定义reduce()方法处理Reduce任务输入的<key,value>对1MapReduce概述、编程模型目录下载和安装idea、maven2MapReduce代码实现3WordCount代码实现Mapper类//Map阶段

publicstaticclassMyMapperextendsMapper<LongWritable,Text,Text,IntWritable>{/***@paramkey*@paramvalue*@paramcontext*@throwsIOException*@throwsInterruptedException*/protectedvoidmap(LongWritablekey,Textvalue,Mapper<LongWritable,Text,Text,IntWritable>.Contextcontext)throwsIOException,InterruptedException{//实现自己的map端逻辑

StringvStr=value.toString();//按照空格切分,将每个单词切分出来

String[]words=vStr.split("");//遍历每一个单词,构造k——v格式

for(Stringword:words){TextkeyOut=newText(word);IntWritablevalueOut=newIntWritable(1);//通过context将构建好的k-v发送出去

context.write(keyOut,valueOut);}}}WordCount代码实现

Reducer类//Reduce阶段

publicstaticclassMyReducerextendsReducer<Text,IntWritable,Text,IntWritable>{/***@paramkey*@paramvalues*@paramcontext*@throwsIOException*@throwsInterruptedException*/@Overrideprotectedvoidreduce(Textkey,Iterable<IntWritable>values,Reducer<Text,IntWritable,Text,IntWritable>.Contextcontext)throwsIOException,InterruptedException{//实现自己的Reduce逻辑

intsum=0;//保存每个单词的数量

for(IntWritablevalue:values){//遍历values迭代器

sum+=value.get();}//将Reduce统计得到的结果输出到HDFScontext.write(key,newIntWritable(sum));}}WordCount代码实现

Driver类//Driver端(将Map、Reduce进行组装)

publicstaticvoidmain(String[]args)throwsIOException,InterruptedException,ClassNotFoundException{//创建配置文件

Configurationconf=newConfiguration();//创建一个Job实例

Jobjob=Job.getInstance(conf);//对Job进行一些简单的配置

job.setJobName("demo1WordCount");//设置运行Job时该执行哪一个类

job.setJarByClass(demo1WordCount.class);//对Map端进行配置

job.setMapOutputKeyClass(Text.class);job.setMapOutputValueClass(IntWritable.class);job.setMapperClass(MyMapper

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论