版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、高级软件人才实作培训专家!Hadoop深入浅出讲师:吴超博客:QQ:3774 86624北京传智播客教育 高级软件人才实作培训专家!课程安排l MapReduce原理*l MapReduce执行过程*l 数据类型与格式*l Writable接口与序列化机制*加深拓展l MapReduce的执行过程源码分析高级软件人才实作培训专家!MapReduce概述 MapReduce是一种分布式计算模型,由Google提出,主要用于搜索领域,解决海量数据的计算问题. MR由两个阶段组成:Map和Reduce,用户只需要实现map()和reduce()两
2、个函数,即可实现分布式计算,非常简单。 这两个函数的形参是key、value对,表示函数的输入信息。高级软件人才实作培训专家!MR执行流程高级软件人才实作培训专家!Mapreduce原理 执行步骤:1. map任务处理1.1 读取输入文件内容,解析成key、value对。对输入文件的每一行,解析成key、value对。每一个键值对调用一次map函数。1.2 写自己的逻辑,对输入的key、value处理,转换成新的key、value输出。1.3 对输出的key、value进行分区。1.4 对不同分区的数据,按照key进行排序、分组。相同key的value放到一个集合中。1.5 (可选)分组后的数
3、据进行归约。2. reduce任务处理2.1 对多个map任务的输出,按照不同的分区,通过网络copy到不同的reduce节点。2.2 对多个map任务的输出进行合并、排序。写reduce函数自己的逻辑,对输入的key、value处理,转换成新的key、value输出。2.3 把reduce的输出保存到文件中。例子:实现WordCountApp高级软件人才实作培训专家!高级软件人才实作培训专家!map、reduce键值对格式函数输入键值对输出键值对map()reduce()高级软件人才实作培训专家!WordCountApp的驱动代码public static void main(String
4、args) throws Exception Configuration conf = new Configuration();/加载配置文件Job job = new Job(conf);/创建一个job,供JobTracker使用job.setJarByClass(WordCountApp.class);job.setMapperClass(WordCountMapper.class); job.setReducerClass(WordCountReducer.class);FileInputFormat.setInputPaths(job, new Path(hdfs:/192.168.
5、1.10:9000/input); FileOutputFormat.setOutputPath(job, new Path(hdfs:/0:9000/output);job.setOutputKeyClass(Text.class); job.setOutputValueClass(IntWritable.class);job.waitForCompletion(true);高级软件人才实作培训专家!JobTrackerl 负责接收用户提交的作业,负责启动、跟踪任务执行。l JobSubmissionProtocol是JobClient与JobTracker通信的接口。
6、l InterTrackerProtocol是TaskTracker与JobTracker通信的接口。高级软件人才实作培训专家!TaskTrackerl 负责执行任务。高级软件人才实作培训专家!JobClientl 是用户作业与JobTracker交互的主要接口。l 负责提交作业的,负责启动、跟踪任务执行、访问任务状态和日志等。高级软件人才实作培训专家!高级软件人才实作培训专家!最小的MapReduce驱动Configuration configuration = new Configuration(); Job job = new Job(configuration, HelloWorld)
7、; job.setInputFormat(TextInputFormat.class);job.setMapperClass(IdentityMapper.class);job.setMapOutputKeyClass(LongWritable.class); job.setMapOutputValueClass(Text.class); job.setPartitionerClass(HashPartitioner.class); job.setNumReduceTasks(1); job.setReducerClass(IdentityReducer.class); job.setOutp
8、utKeyClass(LongWritable.class); job.setOutputValueClass(Text.class); job.setOutputFormat(TextOutputFormat.class);job.waitForCompletion(true);高级软件人才实作培训专家!MapReduce驱动默认的设置InputFormat(输入)TextInputFormatMapperClass(map类)IdentityMapperMapOutputKeyClassLongWritableMapOutputValueClassTextPartitionerClassH
9、ashPartitionerReduceClassIdentityReduceOutputKeyClassLongWritableOutputValueClassTextOutputFormatClassTextOutputFormat高级软件人才实作培训专家!序列化概念l 序列化(Serialization)是指把结构化对象转化为字节流。l 反序列化(Deserialization)是序列化的逆过程。即把字节流转回结构化对象。l Java序列化(java.io.Serializable)高级软件人才实作培训专家!Hadoop序列化的特点l 序列化格式特点:1. 紧凑:高效使用存储空间。2.
10、快速:读写数据的额外开销小3. 可扩展:可透明地读取老格式的数据4. 互操作:支持多语言的交互Hadoop的序列化格式:Writable高级软件人才实作培训专家!Hadoop序列化的作用l 序列化在分布式环境的两大作用:进程间通信,永久存储。l Hadoop节点间通信。节点2节点1二进制流 反序列化为消息消 息 序列化为二进制流二进制流消息高级软件人才实作培训专家!Writable接口lWritable接口, 是根据 DataInput 和 DataOutput 实现的简单、有效的序列化对象.lMR的任意Key和Value必须实现Writable接口.MR的任意key必须实现WritableC
11、omparable接口高级软件人才实作培训专家!常用的Writable实现类Text一般认为它等价于java.lang.String的Writable。针对UTF-8序列。例:Text test = new Text(test);IntWritable one = new IntWritable(1);自定义Writable类高级软件人才实作培训专家!Writablewrite 是把每个对象序列化到输出流readFields是把输入流字节反序列化实现WritableComparable.Java值对象的比较:一般需要重写toString(),hashCode(),equals()方法高级软件人
12、才实作培训专家!基于文件的存储结构l SequenceFile 无序存储l MapFile 会对key建立索引文件,value按key顺序存储基于MapFile的结构有:l ArrayFile 像我们使用的数组一样,key值为序列化的数字l SetFile 他只有key,value为不可变的数据l BloomMapFile 在 MapFile 的基础上增加了一个 /bloom 文件,包含的是二进制的过滤表,在每一次写操作完成时, 会更新这个过滤表。高级软件人才实作培训专家!自定义WritableKpil 电信例子l 把上面例子里的Mapper的value改写为自定义Writable类型。修改原
13、MapReduce程序,并成功执行。结果跟原来一致。高级软件人才实作培训专家!MapReduce输入的处理类l FileInputFormat:FileInputFormat是所有以文件作为数据源的InputFormat 实现的基类,FileInputFormat保存作为job输入的所有文件, 并实现了对输入文件计算splits的方法。至于获得记录的方法是有不同的子类TextInputFormat进行实现的。高级软件人才实作培训专家!InputFormatInputFormat 负责处理MR的输入部分.有三个作用:vvv验证作业的输入是否规范.把输入文件切分成InputSplit.提供Reco
14、rdReader 的实现类,把InputSplit读到Mapper中进行处理.高级软件人才实作培训专家!InputSplit 在执行mapreduce之前,原始数据被分割成若干split,每个split作为一个map任务的输入,在map执行过程中split会被分解成一个个记录(key-value对),map会依次处理每一个记录。 FileInputFormat只划分比HDFS block大的文件,所以FileInputFormat划分的结果是这个文件或者是这个文件中的一部分. 如果一个文件的大小比block小,将不会被划分,这也是Hadoop处理大文件的效率要比处理很多小文件的效率高的原因。当
15、Hadoop处理很多小文件(文件大小小于hdfs block大小)的时候,由于FileInputFormat不会对小文件进行划分,所以每一个小文件都会被当做一个split并分配一个map任务,导致效率底下。例如:一个1G的文件,会被划分成16个64MB的split,并分配16个map任务处理,而10000个100kb的文件会被10000个map任务处理。高级软件人才实作培训专家!TextInputFormatTextInputformat是默认的处理类,处理普通文本文件。文件中每一行作为一个记录,他将每一行在文件中的起始偏移量作为key,每一行的内容作为value。 默认以n或回车键作为一行记
16、录。 TextInputFormat继承了FileInputFormat。高级软件人才实作培训专家!InputFormat类的层次结构高级软件人才实作培训专家!其他输入类 CombineFileInputFormat相对于大量的小文件来说,hadoop更合适处理少量的大文件。CombineFileInputFormat可以缓解这个问题,它是针对小文件而设计的。 KeyValueTextInputFormat当输入数据的每一行是两列,并用tab分离的形式的时候,KeyValueTextInputformat处理这种格式的文件非常适合。 NLineInputformatNLineInputform
17、at可以控制在每个split中数据的行数。 SequenceFileInputformat当输入文件格式是sequencefile的时候,要使用SequenceFileInputformat作为输入。高级软件人才实作培训专家!自定义输入格式1)继承FileInputFormat基类。 2)重写里面的getSplits(JobContext context)方法。3)重写createRecordReader(InputSplit split,TaskAttemptContext context)方法。(讲解源代码)高级软件人才实作培训专家!Hadoop的输出 TextOutputformat默认的输出格式,key和value中间值用tab隔开的。 SequenceFileOutputformat将key和value以sequencefile格式输出。 SequenceFileAsOutputFormat将key和value以原始二进制的格式
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 山东工程职业技术大学招聘考试真题2025
- 1.语法分析-自底向上的语法分析概述、简单优先方法
- 2029年工业烘房改造升级合同三篇
- 幼儿园大班数学教案40篇
- 解读《灵魂摆渡十年》完结口碑两极分化乱象
- (2026版)大学英语四级考试试题试卷及答案解析
- 学校结核病防治工作制度2篇
- 2026壁山事业编面试题及答案
- 2025年中国瓷盆单把双联水咀市场调查研究报告
- 2025年中国片式电容器全自动高速编带机市场调查研究报告
- 2026年辽宁锦州海通实业有限公司计划招录28人笔试模拟试题及答案详解
- 2026年高职老年人能力评估师(评估实操)试题及答案
- 2026届浙江省普通高等学校招生全国统一考试仿真历史试题(含答案)
- GB/T 35319-2025物联网系统接口要求
- GB/T 41906-2022超氧化物歧化酶活性检测方法
- 毕业设计-贯通测量方案设计
- 转录和转录组学课件
- 建设项目安全文明施工优秀做法展示(图文并茂)
- 投资心理学(第4版)
- 《生产设备日常点检表》
- 杀鼠剂中毒专题知识讲座
评论
0/150
提交评论