allbet gaming开户:MapReduce之MapTask事情机制

admin/2020-07-20/ 分类:科技/阅读:

1. 阶段界说

MapTask:map----->sort
map:Mapper.map()中将输出的key-value写出之前
sort:Mapper.map()中将输出的key-value写出之后

2. MapTask事情机制

  1. Read阶段
    MapTask通过用户编写的RecordReader,从输入InputSplit中解析出一个个key/value

  2. Map阶段
    该节点主要是将解析出的key/value交给用户编写map()函数处置,并发生一系列新的key/value。

  3. Collect网络阶段
    在用户编写map()函数中,当数据处置完成后,一样平常会挪用OutputCollector.collect()输出效果。在该函数内部,它会将天生的key/value分区(挪用Partitioner),并写入一个内存缓冲区中,而且会被Partitioner盘算一个分区号,根据先后顺序分配index下标

  4. Spill阶段

  • 即“溢写”,在此阶段有两个主要线程。网络线程卖力向缓冲区网络数据,缓冲区初始值为100M,当使用到80%阈值,叫醒溢写线程,溢写线程会将缓冲区已经网络的数据溢写到磁盘。

  • 在溢写前,会对缓冲区中的数据举行排序(快速排序),在排序时,只通过对照key举行排序,只改变index的位置,不交流数据的位置

  • 排序后,根据分区,依次将数据写入到磁盘的临时文件的若干分区中

  • 每次溢写都市天生一个临时文件,当所有的数据都溢写完成之后,会将所有的临时文件片断合并为一个总的文件

  1. Combine阶段
  • 在合并时,将所有的临时文件的相同分区的数据,举行合并,合并后再对所有的数据举行排序(合并排序)

  • 最终天生一个效果文件(output/file.out),同时天生响应的索引文件output/file.out.index,这个文件分为若干分区,每个分区的数据已经根据key举行了排序,守候reduceTask的shuffle线程来拷贝数据!

溢写阶段详情:

  • 步骤1:行使快速排序算法对缓存区内的数据举行排序,排序方式是,先根据分区编号Partition举行排序,然后根据key举行排序。这样,经由排序后,数据以分区为单元群集在一起,且统一分区内所有数据根据key有序。

  • 步骤2:根据分区编号由小到大依次将每个分区中的数据写入义务事情目录下的临时文件output/spillN.out(N示意当前溢写次数)中。若是用户设置了Combiner,则写入文件之前,对每个分区中的数据举行一次群集操作。

  • 步骤3:将分区数据的元信息写到内存索引数据结构SpillRecord中,其中每个分区的元信息包罗在临时文件中的偏移量、压缩前数据巨细和压缩后数据巨细。若是当前内存索引巨细跨越1MB,则将内存索引写到文件output/spillN.out.index中。

,

欧博亚洲网址

欢迎进入欧博亚洲网址(Allbet Game):www.aLLbetgame.us,欧博官网是欧博集团的官方网站。欧博官网开放Allbet注册、Allbe代理、Allbet电脑客户端、Allbet手机版下载等业务。

TAG:
阅读:
广告 330*360
广告 330*360
Sunbet_进入申博sunbet官网
微信二维码扫一扫
关注微信公众号
新闻自媒体 Copyright © 2002-2019 Sunbet 版权所有
二维码
意见反馈 二维码