




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、超人学院 Hadoop深入浅出讲师讲师: 吴吴 超超论坛:论坛:博客:博客:Q Q: 3774 86624超人学院 课程安排lMapReduce原理*lMapReduce执行过程*l数据类型与格式*lWritable接口与序列化机制*-加深拓展-lMapReduce的执行过程源码分析超人学院 MapReduceMapReduce概述概述MapReduce是一种分布式计算模型,由是一种分布式计算模型,由Google提出,主要用于搜索领域,解决海提出,主要用于搜索领域,解决海量数据的计算问题量数据的计算问题.MR由两个阶段组成:由两个阶段组成:Map和和Reduce,用户只需要实现,用户只需要实现
2、map()和和reduce()两个函数,两个函数,即可实现分布式计算,非常简单。即可实现分布式计算,非常简单。这两个函数的形参是这两个函数的形参是key、value对,表示函数的输入信息。对,表示函数的输入信息。超人学院 MR执行流程Mapreduce原理超人学院 超人学院 执行步骤:执行步骤: 1. map任务处理1.1 读取输入文件内容,解析成读取输入文件内容,解析成key、value对。对输入文件的每一行,解析成对。对输入文件的每一行,解析成key、value对。每一个键值对调用一次对。每一个键值对调用一次map函数。函数。1.2 写自己的逻辑,对输入的写自己的逻辑,对输入的key、va
3、lue处理,转换成新的处理,转换成新的key、value输出。输出。1.3 对输出的对输出的key、value进行分区。进行分区。1.4 对不同分区的数据,按照对不同分区的数据,按照key进行排序、分组。相同进行排序、分组。相同key的的value放到一个集放到一个集合中。合中。1.5 (可选可选)分组后的数据进行归约。分组后的数据进行归约。2.reduce任务处理2.1 对多个对多个map任务的输出,按照不同的分区,通过网络任务的输出,按照不同的分区,通过网络copy到不同的到不同的reduce节点。节点。2.2 对多个对多个map任务的输出进行合并、排序。写任务的输出进行合并、排序。写re
4、duce函数自己的逻辑,对输入函数自己的逻辑,对输入的的key、value处理,转换成新的处理,转换成新的key、value输出。输出。2.3 把把reduce的输出保存到文件中。的输出保存到文件中。例子:实现例子:实现WordCountApp超人学院 map、reduce键值对格式函数函数输入键值对输入键值对输出键值对输出键值对map()reduce()超人学院 WordCountApp的驱动代码public static void main(String args) throws Exception Configuration conf = new Configuration(); /加载
5、配置文件 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.1.10:9000/input); FileOutputFormat.setOutputPath(job, new Path
6、(hdfs:/192.168.1.10:9000/output); job.setOutputKeyClass(Text.class); job.setOutputValueClass(IntWritable.class); job.waitForCompletion(true);超人学院 JobTrackerl负责接收用户提交的作业,负责启动、跟踪任务执行。lJobSubmissionProtocol是JobClient与JobTracker通信的接口。lInterTrackerProtocol是TaskTracker与JobTracker通信的接口。超人学院 TaskTrackerl负责执
7、行任务。超人学院 JobClientl是用户作业与JobTracker交互的主要接口。l负责提交作业的,负责启动、跟踪任务执行、访问任务状态和日志等。超人学院 超人学院 最小的MapReduce驱动Configuration configuration = new Configuration();Job job = new Job(configuration, HelloWorld);job.setInputFormat(TextInputFormat.class);job.setInputFormat(TextInputFormat.class);job.setMapperClass(Ide
8、ntityMapper.class);job.setMapperClass(IdentityMapper.class);job.setMapOutputKeyClass(LongWritable.class);job.setMapOutputKeyClass(LongWritable.class);job.setMapOutputValueClass(Text.class);job.setMapOutputValueClass(Text.class);job.setPartitionerClass(HashPartitioner.class);job.setPartitionerClass(H
9、ashPartitioner.class);job.setNumReduceTasks(1);job.setNumReduceTasks(1);job.setReducerClass(IdentityReducer.class);job.setReducerClass(IdentityReducer.class);job.setOutputKeyClass(LongWritable.class);job.setOutputKeyClass(LongWritable.class);job.setOutputValueClass(Text.class);job.setOutputValueClas
10、s(Text.class);job.setOutputFormat(TextOutputFormat.class);job.setOutputFormat(TextOutputFormat.class);job.waitForCompletion(true);超人学院 MapReduce驱动默认的设置InputFormat(输入)TextInputFormatMapperClass(map类)IdentityMapperMapOutputKeyClassLongWritableMapOutputValueClassTextPartitionerClassHashPartitionerReduc
11、eClassIdentityReduceOutputKeyClassLongWritableOutputValueClassTextOutputFormatClassTextOutputFormat超人学院 序列化概念l序列化(Serialization)是指把结构化对象转化为字节流。l反序列化(Deserialization)是序列化的逆过程。即把字节流转回结构化对象。lJava序列化(java.io.Serializable)超人学院 Hadoop序列化的特点l序列化格式特点:1.紧凑:高效使用存储空间。2.快速:读写数据的额外开销小3.可扩展:可透明地读取老格式的数据4.互操作:支持多语
12、言的交互Hadoop的序列化格式:Writable超人学院 Hadoop序列化的作用l序列化在分布式环境的两大作用:进程间通信,永久存储。lHadoop节点间通信。消息序列化为二进制流节点1二进制流反序列化为消息节点2二进制流消息超人学院 Writable接口lWritable接口, 是根据 DataInput 和 DataOutput 实现的简单、有效的序列化对象.lMR的任意Key和Value必须实现Writable接口. MR的任意key必须实现WritableComparable接口超人学院 常用的Writable实现类Text一般认为它等价于java.lang.String的Writ
13、able。针对UTF-8序列。例:Text test = new Text(test);IntWritable one = new IntWritable(1);超人学院 自定义Writable类实现WritableComparable.Java值对象的比较:一般需要重写toString(),hashCode(),equals()方法Writablewrite 是把每个对象序列化到输出流readFields是把输入流字节反序列化超人学院 基于文件的存储结构lSequenceFile 无序存储lMapFile 会对key建立索引文件,value按key顺序存储基于MapFile的结构有:lArr
14、ayFile 像我们使用的数组一样,key值为序列化的数字lSetFile 他只有key,value为不可变的数据lBloomMapFile 在 MapFile 的基础上增加了一个 /bloom 文件,包含的是二进制的过滤表,在每一次写操作完成时,会更新这个过滤表。超人学院 自定义WritableKpil电信例子l把上面例子里的Mapper的value改写为自定义Writable类型。修改原MapReduce程序,并成功执行。结果跟原来一致。超人学院 MapReduce输入的处理类lFileInputFormat: FileInputFormat是所有以文件作为数据源的InputFormat实
15、现的基类,FileInputFormat保存作为job输入的所有文件,并实现了对输入文件计算splits的方法。至于获得记录的方法是有不同的子类TextInputFormat进行实现的。 超人学院 InputFormatInputFormat 负责处理MR的输入部分.有三个作用:v 验证作业的输入是否规范.v 把输入文件切分成InputSplit.v 提供RecordReader 的实现类,把InputSplit读到Mapper中进行处理.超人学院 InputSplit 在执行mapreduce之前,原始数据被分割成若干split,每个split作为一个map任务的输入,在map执行过程中sp
16、lit会被分解成一个个记录(key-value对),map会依次处理每一个记录。 FileInputFormat只划分比HDFS block大的文件,所以FileInputFormat划分的结果是这个文件或者是这个文件中的一部分. 如果一个文件的大小比block小,将不会被划分,这也是Hadoop处理大文件的效率要比处理很多小文件的效率高的原因。 当Hadoop处理很多小文件(文件大小小于hdfs block大小)的时候,由于FileInputFormat不会对小文件进行划分,所以每一个小文件都会被当做一个split并分配一个map任务,导致效率底下。 例如:一个1G的文件,会被划分成16个6
17、4MB的split,并分配16个map任务处理,而10000个100kb的文件会被10000个map任务处理。 超人学院 TextInputFormat TextInputformat是默认的处理类,处理普通文本文件。 文件中每一行作为一个记录,他将每一行在文件中的起始偏移量作为key,每一行的内容作为value。 默认以n或回车键作为一行记录。 TextInputFormat继承了FileInputFormat。超人学院 InputFormat类的层次结构超人学院 其他输入类 CombineFileInputFormat 相对于大量的小文件来说,hadoop更合适处理少量的大文件。 Comb
18、ineFileInputFormat可以缓解这个问题,它是针对小文件而设计的。 KeyValueTextInputFormat 当输入数据的每一行是两列,并用tab分离的形式的时候,KeyValueTextInputformat处理这种格式的文件非常适合。 NLineInputformat NLineInputformat可以控制在每个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格式输出。 SequenceFileAsO
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 志愿者协会管理
- 家电行业资金管理居间协议
- 住宅区景观设计合同模板
- 2024珠海市新思维中等职业学校工作人员招聘考试及答案
- 2024沅江市职业中等专业学校工作人员招聘考试及答案
- 2024清远市新科职业技术学校工作人员招聘考试及答案
- 2024涞源县职业技术教育中心工作人员招聘考试及答案
- 人工智能技术使用授权协议
- 普及宪法知识
- 汽车保险理赔服务合作合同
- 2023年复合型胶粘剂项目安全评价报告
- DZ∕T 0215-2020 矿产地质勘查规范 煤(正式版)
- 【初中+语文】中考语文一轮专题复习+《名著阅读+女性的力量》课件
- 2024年强基计划解读 课件-2024届高三下学期主题班会
- 城市道路桥梁工程施工质量验收规范 DG-TJ08-2152-2014
- 响应面分析软件DesignExpert使用教程
- 《新病历书写规范》课件
- 2024城镇燃气管道非开挖修复更新工程技术规范
- 肠胃消化健康的知识讲座
- 新概念英语第二册-Lesson-56-Faster-than-sound-课件
- 美的社会责任报告2023
评论
0/150
提交评论