资料课件11 hdfs_mr_zk知识串讲2 MapReduce重难点串讲_第1页
资料课件11 hdfs_mr_zk知识串讲2 MapReduce重难点串讲_第2页
资料课件11 hdfs_mr_zk知识串讲2 MapReduce重难点串讲_第3页
资料课件11 hdfs_mr_zk知识串讲2 MapReduce重难点串讲_第4页
资料课件11 hdfs_mr_zk知识串讲2 MapReduce重难点串讲_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

,MapReduce重难点串讲,本课目标,MapReduce分布式计算的基本原理MapReduce编程模型YARN架构,2,MapReduce是一个分布式计算框架它将大型数据操作作业分解为可以跨服务器集群并行执行的单个任务。起源于Google适用于大规模数据处理场景每个节点处理存储在该节点的数据每个job包含Map和Reduce两部分,什么是MapReduce?,3,分而治之简化并行计算的编程模型构建抽象模型:Map和Reduce开发人员专注于实现Mapper和Reducer函数隐藏系统层细节开发人员专注于业务逻辑实现,MapReduce的设计思想,4,优点易于编程可扩展性高容错性高吞吐量不适用领域难以实时计算不适合流式计算,MapReduce特点,5,MapReduce实现WordCount,6,MapReduce执行过程,数据定义格式map:(K1,V1)list(K2,V2)reduce:(K2,list(V2)list(K3,V3)MapReduce执行过程MapperCombinerPartitionerShuffleandSortReducer,7,HadoopV1MR引擎,JobTracker运行在Namenode接受客户端Job请求提交给TaskTrackerTaskTracker从JobTracker接受任务请求执行map、reduce等操作返回心跳给JobTracker,8,HadoopV2YARN,YARN的变化支持更多的计算引擎,兼容MapReduce更好的资源管理,减少JobTracker的资源消耗将JobTracker的资源管理分为ResourceManager将JobTracker的作业调度分为ApplicationMasterNodeManager成为每个节点的资源和任务管理器,9,Hadoop及YARN架构,10,Hadoop2MR在Yarn上运行流程,11,在map之前,根据输入文件创建inputSplit每个InputSplit对应一个Mapper任务输入分片存储的是分片长度和记录数据位置的数组block和split的区别block是数据的物理表示split是块中数据的逻辑表示split划分是在记录的边界处split的数量应不大于block的数量(一般相等),InputSplit(输入分片),12,数据从Map输出到Reduce输入的过程(1)Map任务收集map()方法输出的kv对,放到内存缓冲区中(2)从内存缓冲区不断溢出本地磁盘文件,可能会溢出多个文件(3)多个溢出文件会被合并成大的溢出文件(4)在溢出及合并的过程中,都要调用Partitoner进行分组和针对Key进行排序(5)Reducer任务根据自己的分区号,去各个Mapper任务机器上取相应的结果分区数据(6)Reducer任务会取到同一个分区的来自不同Mapper任务的结果文件,ReduceTask会将这些文件再进行合并(归并排序)(7)合并成大文件后,Shuffle的过程也就结束了,后面进入Reducer模块的逻辑运算过程,Shuffle阶段,13,KeyprivateTextword=newText();publicvoidmap(LongWritablekey,Textvalue,Contextctx)throwsIOException,InterruptedExceptionStringTokenizeritr=newStringTokenizer(value.toString();while(itr.hasMoreTokens()word.set(itr.nextToken();ctx.write(word,one);,17,Combiner相当于本地化的Reduce操作在shuffle之前进行本地聚合用于性能优化,可选项输入和输出类型一致Reducer可以被用作Combiner的条件符合交换律和结合律实现Combinerjob.setCombinerClass(WCReducer.class),Combiner类,18,用于在Map端对key进行分区默认使用的是HashPartitioner获取key的哈希值使用key的哈希值对Reduce任务数求模决定每条记录应该送到哪个Reducer处理自定义Partitioner继承抽象类Partitioner,重写getPartition方法job.setPartitionerClass(MyPartitioner.class),Partitioner类,19,Reducer主要方法voidsetup(Contextcontext)org.apache.hadoop.mapreduce.Reducer.Contextvoidreduce(KEYkey,Iterablevalues,Contextcontext)为每个key调用一次voidcleanup(Contextcontext)voidrun(Contextcontext)可通过重写该方法来控制reduce任务的工作方式,Reducer类,publicclassWCReducerextendsReducerprivateIntWritableresult=newIntWritable();publicvoidreduce(Textkey,Iterablevalues,Contextctx)throwsIOException,InterruptedExceptionintsum=0;for(IntWritablevalue:values)sum+=value.get();result.set(sum);ctx.write(key,result);,20,OutputFormat接口,定义了如何将数据从Reducer进行输出RecordWritergetRecordWriter将Reducer的写入到目标文件checkOutputSpecs判断输出目录是否存在常用OutputFormat接口实现类TextOuputFormatSequenceFileOuputFormatMapFileOuputFormat,21,编写M/RJob,Jobjob=Job.getInstance(getConf(),WordCountMR);job.setJarByClass(getClass();FileInputFormat.addInputPath(job,newPath(args0);job.setInputFormatClass(TextInputFormat.class);FileOutputFormat.setOutputPath(job,newPath(args1);job.setOutputFormatClass(TextOutputFormat.class);job.setMapperClass(WCMapper.class);job.setMapOutputKeyClass(Text.class);job.setMapOutputValueClass(IntWritable.class);job.setReducerClass(WCReducer.class);job.setOutputKeyClass(Text.class);job.setOutputValueClass(IntWritable.class);,InputFormat,OutputFormat,Mapper,Reducer,22,编写Java代码MapperReducerJob执行M/RJob设置M/R参数,使用

温馨提示

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

评论

0/150

提交评论