jQuery点击出现爱心

【openGL2021版】天空盒

  返回  

MapeReduce编程规范 ||FileInputFormat切片 || Shuffle || Partition ||WritableComparable排序 || Combiner

2021/8/21 23:12:58 浏览:

MapReduce编程规范

Mapper

  • Mapper继承父类
  • 输入数据是KV对
  • 业务逻辑写在map方法中
  • 输出数据是KV对
  • map()方法(MapTask进程)对每一个<K,V>调用一次

Reducer

  • Reducer继承父类
  • 输入数据是KV
  • 业务逻辑写在reduce方法中)
  • ReduceTask进程对每一组相同k的<k,v>组调用一次reduce()方法

Driver

  • 用于提交整个程序到YARN集群,提交的是
    封装了MapReduce程序相关运行参数的job对象

InputFormat数据输入

FileInputFormat

FileInputFormat 常见的接口实现类包括:TextInputFormat、KeyValueTextInputFormat、
NLineInputFormat、CombineTextInputFormat 和自定义 InputFormat 等

  • Math.max(minSize, Math.min(maxSize, blockSize));

-每次切片前都要判断剩下的部分是否大于块的1.1倍,不大于1.1倍就划分一块切片

比如文件大小260M,每一个块大小分为128M。过程:(260/128=2.03>1.1?) 此时切128M 剩下132M(132/128=1.03>1.1?)此时不大于 所以 将132M 放在一个切片。也就是实际是将260M 分成了两个Spilt 一个是128M 一个是132M

  • 将切片信息写到一个切片规划文件中
  • inputsplit只记录了切片的元数据信息
  • 提交切片规划文件到YRAN上,其MrAppMaster可以根据切片规划文件开启MapTask个数
  • (提交xml文件)

TextInputFormat

是默认的 FileInputFormat 实现类。
按行读取每条记录。
键是偏移量(该行在整个文件中的起始字节)LongWritable类型。
值是这行的内容,不包括行结束符,Text类型。

CombineTextInputFormat

用于小文件过多的场景
可以将多个小文件从逻辑上规划到一个切片中。
在这里插入图片描述

Partition Comparable

  • MapTask收集map()方法中输出的kv对,放到内存缓冲区中(圆形内存缓冲区,分为索引(元数据)和数据两个分区)。
  • 当环形缓冲区的使用率达到一定阈值后,再对缓冲区中的数据进行一次快排溢写到磁盘,数据处理完毕后,磁盘上的所有文件进行归并排序。
  • 多个溢出文件会合并(过程调用Partitioner进行分区,并对key排序)
  • ReduceTask根据分区号在MapTask上拉取相应的分区数据,若文件大小超过一定阈值,溢写在磁盘上,否则存储在内存。若磁盘上的文件大小超过阈值,进行归并生成更大文件。当所有数据拷贝完毕后,统一对内存和磁盘上的所有数据进行一次归并排序。
  • ReduceTask合并文件(同一分区不同MapTask的结果文件)
  • shuffle过程结束

Shuffle

Map后Reduce前的数据处理过程

自定义Partition分区

  • 自定义类继承partitioner,重写getpartition()方法
  • job驱动中设定.class
  • 设置相应数量的reducetask job.setReduceTask(x);
    在这里插入图片描述

WritableComparable 排序

在这里插入图片描述
自定义排序bean对象作为key传输,需要实现WritableComparable接口重写compareTo方法。

Combiner合并

在这里插入图片描述

自定义combiner
继承reducer,重写reduce方法
job中设置setCombinerClass
在这里插入图片描述
对每一个MapTask的输出局部汇总
在这里插入图片描述

OutputFormat 数据输出

常见的OutputFormat实现类
在这里插入图片描述

  • 默认输出格式TextOutputFormat
  • 自定义OutputFormat
    输出到mysql/hbase…存储框架中
    自定义一个类继承FileOutputFormat。
    ➢ 改写RecordWriter,具体改写输出数据的方法write()。
    在这里插入图片描述

切片 MapTask并行度

  • 数据块:物理上的分块
  • 数据切片:逻辑上对输入进行分片,并不会在磁盘上将其分成片进行存储。一个切片对应一个maptask
  • 默认情况下,切片大小=块大小
  • MapTask 并行度由切片个数决定,切片个数由输入文件和切片规则决定。
    在这里插入图片描述

联系我们

如果您对我们的服务有兴趣,请及时和我们联系!

服务热线:18288888888
座机:18288888888
传真:
邮箱:888888@qq.com
地址:郑州市文化路红专路93号