开发者社区> 问答> 正文

MapReuce处理数据的完整流程是什么?

MapReuce处理数据的完整流程是什么?

展开
收起
游客k7rjnht6hbtk6 2021-12-08 20:39:59 308 0
1 条回答
写回答
取消 提交回答
  • 1.输入数据:对文本进行分片,将每片内的数据作为单个Map Worker的输入。分片完毕后,多个Map Worker便可以同时工作。 在正式执行Map前,需要将输入数据进行分片。所谓分片,就是将输入数据切分为大小相等的数据块,每一块作为单个Map Worker的输入被处理,以便于多个Map Worker同时工作。

    2.Map阶段:每个Map Worker在读入各自的数据后,进行计算处理,最终输出给Reduce。Map Worker在输出数据时,需要为每一条输出数据指定一个Key,这个Key值决定了这条数据将会被发送给哪一个Reduce Worker。Key值和Reduce Worker是多对一的关系,具有相同Key的数据会被发送给同一个Reduce Worker,单个Reduce Worker有可能会接收到多个Key值的数据。

    3.在进入Reduce阶段之前,MapReduce框架会对数据按照Key值排序,使得具有相同Key的数据彼此相邻。如果您指定了合并操作(Combiner),框架会调用Combiner,将具有相同Key的数据进行聚合。Combiner的逻辑可以由您自定义实现。与经典的MapReduce框架协议不同,在MaxCompute中,Combiner的输入、输出的参数必须与Reduce保持一致,这部分的处理通常也叫做洗牌(Shuffle)。

    4.Reduce阶段:进入Reduce阶段,相同Key的数据会传送至同一个Reduce Worker。同一个Reduce Worker会接收来自多个Map Worker的数据。每个Reduce Worker会对Key相同的多个数据进行Reduce操作。最后,一个Key的多条数据经过Reduce的作用后,将变成一个值。

    5.输出结果数据。

    2021-12-08 20:40:34
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
王青:如何一天发布10次?基于元数据的持续交付方法 立即下载
一天发布10次-基于元数据的持续交付方法 立即下载
面向失败设计 立即下载