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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • MySQL数据库:表结构优化

    MySQL数据库:表结构优化

    2021年4月9日
    143
  • 网站的类型有哪些(9种管理类型)

    一HttpEntity的类型 1  BasicHttpEntity     代表底层流的基本实体。通常是在http报文中获取的实体。他只有一个空参的构造方法。刚创建时没有内容,长度为负值。需要通过两个方法,把值赋进去。  /** *BasicHttpEntity *@throwsIOException */ public…

    2022年4月18日
    46
  • kotlin与java的区别[通俗易懂]

    kotlin与java的区别[通俗易懂]Kotlin简介:Kotlin是一个基于JVM的新的编程语言,由JetBrains开发。Kotlin可以编译成Java字节码,也可以编译成JavaScript,方便在没有JVM的设备上运行。JetBrains,作为目前广受欢迎的JavaIDEIntelliJ的提供商,在Apache许可下已经开源其Kotlin编程语言。Kotlin已正式成为Android官方开发语言。通过上面的简介,我们对Kotlin也有了大概了认知,Kotlin作为新的一种语言,可以运行在JVM上面,那么它

    2022年7月7日
    25
  • java怎么增加堆栈_如何增加Java堆栈大小?「建议收藏」

    java怎么增加堆栈_如何增加Java堆栈大小?「建议收藏」如何增加Java堆栈大小?我问了这个问题,以了解如何增加JVM中的运行时调用堆栈大小。我已经得到了一个答案,而且我也得到了很多有用的答案和评论,这些答案和评论与Java如何处理需要大型运行时堆栈的情况相关。我已经回答了问题的总结。最初我想增加JVM堆栈的大小,所以像没有StackOverflowError运行的程序。publicclassTT{publicstaticlongfa…

    2022年7月7日
    22
  • 记录一些问题(http状态码,IDOR漏洞,API接口,http请求方式)

    记录一些问题(http状态码,IDOR漏洞,API接口,http请求方式)在以前学习渗透的过程中遇到好多的小问题,弄得人不舒服,现在记录一下,算是加固一下,首先是一个服务器返回请求HTTP状态码的值,常遇到的200,400,404,401,403,500等等,(服务器常见一共14中状态码)2**开头的成功状态码,请求处理完成,常见的200,204,206的区别,200请求成功,并返回了实体报文,204页成功了,但是没有实体报文(也就是你浏览器空白的没有东西)205页和这个差不多,206的区别是他请求成功也给你返回了实体报文,但他这个给你返回的是你G

    2022年4月30日
    85
  • cuda 并行计算(cuda并行程序设计pdf)

    CUDA编程(四)并行化我们的程序上一篇博客主要讲解了怎么去评估CUDA程序的表现,博客的最后我们计算了在GPU上单线程计算立方和的程序的内存带宽,发现其内存带宽的表现是十分糟糕的。这篇博客主要讲解了怎么去使用Thread去简单的并行我们的程序,虽然我们的程序运行速度有了50甚至上百倍的提升,但是根据内存带宽来评估的话我们的程序还远远不够,甚至离1G/S的水平都还差不少,所以我们的优化路还有很长。

    2022年4月16日
    46

发表回复

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

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