首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    作业、进程、线程

    大部分操作系统(如Windows、Linux)的任务调度是采用时间片轮转的抢占式调度方式,也就是说一个任务执行一小段时间后强制暂停去执行下一个任务,每个任务轮流执行。任务执行的一小段时间叫做时间片,任务正在执行时的状态叫运行状态,任务执行一段时间后强制暂停去执行下一个任务,被暂停的任务就处于就绪状态等待下一个属于它的时间片的到来。这样每个任务都能得到执行,由于CPU的执行效率非常高,时间片非常短,在各个任务之间快速地切换,给人的感觉就是多个任务在“同时进行”,这也就是我们所说的并发(别觉得并发有多高深,它的实现很复杂,但它的概念很简单,就是一句话:多个任务同时执行)。多任务运行过程的示意图如下:

    01

    MapReduce整体介绍

    MapReduce框架(Map/Reduce) MapTask/ReduceTask 数据分发机制             MapTask接口实现类 : 对一行数据进行处理,map方法             ReduceTask接口实现类:对一组数据进行处理,reduce方法         MapReduce工作机制         划分输入切片: 数据切片             job.split文件         分布式数据处理         K相同的KV数据分配给同个ReduceTask         组合拳:CompareTo + Partation + Group         分区控制/分组控制         MapReduce编程模型             map task的实现                 读数据:TextInputFormat                          SequenceFileInputFormat                          DBInputFormat                 portation 分区                 调用Partitaioner 的getPartition 决定数据分区             reduce task的实现                 读数据:下载"区"数据,并且合并多个"同区"并且排序                 写数据:TextInputFormat                         SequenceFileOutputFormat                         DBOutputFormat             GroupingComparator:分组                 确定那些数据属于同一组         对倾斜数据的处理             1. 通过Combiner组件进行maptask端局部聚合数据减轻倾斜影响             2. 通过打算倾斜数据来消除倾斜的影响,通过在Key值后面添加随机值,这样就可以均衡的分布在ReduceTaks端。         MapReduce编程模型具体实现及处理流程:             MRAppMaster                 YarnChild(maptask/reducetask)                     main()                 1. MapTask:                     ->TextInputFormat                         ->LineRecordFromat                             ->Mapper                                 ->map()                                     ->context   --->  MapOutputCollector 环形缓存,存在大小限制                                                         ->spilter (80%) 分区(partation),排序(compare)                                                         ->write 溢出文件(可能包含多个文件,有序文件) 写本地磁盘                                                         ->merge 分区有序,分区索引文件                     多个maptask会生成多个merge文件                 2. Shuffle: Store && Rest                     map task 生成的数据传输给reduce task 的过程                    多个maptask会生成多个merge文件,这些文件会保存在NodeManager中,NodeManager具有Web服务,ReduceTask会通过Web服务下载merge文件,进行处理                         3. ReduceTask                     -> http下载:从多个DataManager中下载merge文件下载单个分区的KV数据,多个文件合并为一个文件

    01
    领券