mapreduce过程

mapreduce过程

程序会根据inputformat将文件分割成splits分片,每个分片会分配一个map task任务,每个map task任务会有一个内存缓冲区,任务处理后的结果会写入到内存缓冲区,并决定数据写入到哪个patitioner,当写入的数据达到内存缓冲区的阈值(默认80%)时,会启动一个线程将内存中的数据溢写到磁中,同时不影响前面的处理结果继续写入到内存缓冲区,.在接下来的溢写过程中,mapreduce框架会对key进行排序,如果map task处理的结果很大会形成多个溢写文件,最后缓冲区的内容会全部溢写到磁盘中,如果有多个文件则合并为一个文件.

当所有的map task任务完成后,每个map task任务会形成一个最终文件,并且该文件的按区划分.reduce任务启动之前,一个map task完成后,会启动线程来拉取map结果数据到相应的reduce task,不断的合并数据,为reduce的数据输入做准备,当所有的map task完成后,数据也就拉取合并完毕,reduce task启动 ,最终将输出结果存入到hdfs.

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/106367.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • RangeValidator 控件

    RangeValidator 控件RangeValidator控件用于检测用户输入的值是否介于两个值之间。可以对不同类型的值进行比较,比如数字、日期以及字符。我们一般会用来验证输入的年龄或者考试的分数等。下面我们一块看看RangeValidator的属性:属性描述 BackColor 背景颜色 ControlToValidate

    2022年7月12日
  • .net core开发工具_github 爬虫

    .net core开发工具_github 爬虫没有爬虫就没有互联网!爬虫的意义在于采集大批量数据,然后基于此进行加工/分析,做更有意义的事情。谷歌,百度,今日头条,天眼查都离不开爬虫。去开源中国和Github查询C#的爬虫项目,仅有…

    2022年9月14日
  • Expression Blend实例中文教程(13) – 控件模板快速入门ControlTemplates

    Expression Blend实例中文教程(13) – 控件模板快速入门ControlTemplates

    2021年8月5日
  • git的使用入门介绍-4

    git的使用入门介绍-4

    2021年9月15日
  • 协程

    协程介绍协程:是单线程下的并发,又称微线程,纤程。英文名Coroutine。一句话说明什么是线程:协程是一种用户态的轻量级线程,即协程是由用户程序自己控制调度的。、需要强调的是:对比操作系统控制

    2022年3月29日
  • shell脚本运行jar包获取参数_linux加载一个目录下的所有jar包

    shell脚本运行jar包获取参数_linux加载一个目录下的所有jar包当使用SpringBoot框架时,他自己集成了tomcat。在启动jar包时,经常需要复制一大段命令,尤其是在项目目录发生改变的时候,实在繁琐。所以可以使用shell脚本来启动、关闭和重启Java项目。创建一个shell脚本vim脚本名.sh脚本内容:#!/bin/bash#这里可替换为你自己的执行程序,其他代码无需更改JAR_NAME=jar包名称#lib目录LOAD_PATH=”-Dloader.path=/home/local/lib/”#项目配置文件CONFIG_PATH

    2022年9月26日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号