mapreduce中map阶段的主要流程是什么
mapreduce中map阶段的主要流程是:1.首先进行一系列的逻辑操作;2. 通过outputCollector向环形缓冲区写入数据;3. 进行反向溢写。其中,map方法直接写给reduce的话相当于直接操作磁盘,太多的IO操作使得效率太低,则在map和reduce中间还有一个shuffle操作。
map方法首先进行一系列的逻辑操作,执行完成后最后进行写操作。map方法如果直接写给reduce的话,相当于直接操作磁盘,太多的IO操作,使得效率太低,所以在map和reduce中间还有一个shuffle操作。
map处理完成相关的逻辑操作之后,首先通过outputCollector向环形缓冲区写入数据,环形缓冲区主要两部分,一部分写入文件的元数据信息,另一部分写入文件的真实内容。
环形缓冲区的默认大小是100M,当缓冲的容量达到默认大小的80%时,进行反向溢写。在溢写之前会将缓冲区的数据按照指定的分区规则进行分区和排序,之所以反向溢写是因为这样就可以边接收数据边往磁盘溢写数据。在分区和排序之后,溢写到磁盘,可能发生多次溢写,溢写到多个文件,对所有溢写到磁盘的文件进行归并排序,在9到10步之间还可以有一个Combine合并操作,意义是对每个MapTask的输出进行局部汇总,以减少网络传输量。
延伸阅读:
整个MapTask分为Read阶段,Map阶段,Collect阶段,溢写(spill)阶段和combine阶段。
MapTask通过用户编写的RecordReader,从输入InputSplit中解析出一个个key/value
该节点主要是将解析出的key/value交给用户编写map()函数处理,并产生一系列新的key/value
在用户编写map()函数中,当数据处理完成后,一般会调用OutputCollector.collect()输出结果。在该函数内部,它会将生成的key/value分区(调用Partitioner),并写入一个环形内存缓冲区中
即“溢写”,当环形缓冲区满后,MapReduce会将数据写到本地磁盘上,生成一个临时文件。需要注意的是,将数据写入本地磁盘之前,先要对数据进行一次本地排序,并在必要时对数据进行合并、压缩等操作。
以上就是关于mapreduce中map阶段的内容希望对大家有帮助。
最后建议,企业在引入信息化系统初期,切记要合理有效地运用好工具,这样一来不仅可以让公司业务高效地运行,还能最大程度保证团队目标的达成。同时还能大幅缩短系统开发和部署的时间成本。特别是有特定需求功能需要定制化的企业,可以采用我们公司自研的企业级低代码平台:织信Informat。 织信平台基于数据模型优先的设计理念,提供大量标准化的组件,内置AI助手、组件设计器、自动化(图形化编程)、脚本、工作流引擎(BPMN2.0)、自定义API、表单设计器、权限、仪表盘等功能,能帮助企业构建高度复杂核心的数字化系统。如ERP、MES、CRM、PLM、SCM、WMS、项目管理、流程管理等多个应用场景,全面助力企业落地国产化/信息化/数字化转型战略目标。 版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们微信:Informat_5 处理,核实后本网站将在24小时内删除。版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系邮箱:hopper@cornerstone365.cn 处理,核实后本网站将在24小时内删除。
相关文章推荐
立即开启你的数字化管理
用心为每一位用户提供专业的数字化解决方案及业务咨询