看过好多本hadoop的书,对整个过程始终存在一些疑问,今天终于搞清楚了。立个low-flag。

整体架构好复杂的感觉?其实不复杂

整体架构,namenode/metanode负责维护所有的元数据,datanode负责实际的物理存储,同一份数据datanode上必定多个副本,从而保证高可用。

hdfs只是个文件系统,有那么重要吗?

hdfs,最核心组件,高可用,不适合处理碎片文件。所有存储相关都是hdfs的职责范围。

mapreduce感觉很简单,但是具体背后的逻辑是什么?

mapreduce,核心组件。一个任务会首先从hdfs取出被inputformat切分成多个<k,v>,然后分配到mapper程序运行,运行后输出新的<k,v>,再由partioner处理mapper结果,成为<k,v list>,此处保证所有相同的k,必定会组织到一起,再传给reducer处理,完成后输出最终结果到hdfs。

inputformat,分片操作,根据splitsize决定将源文件进行划分,数据格式化,将划分好的inputsplit格式化为<k,v>,k为偏移量(已跳过的字符数),v为每一行的内容,并每次生成一个kv就调一次mapper。

shuffle,mapper到reducer之间,主要起到承上启下的作用。(不然mapred怎么工作?)

mapper的shuffle,sort,combine,pation.

mapper的shuffle,达到设置值的0.8就开始进行sort,spill溢写文件,如果剩下的0.2缓存已写满,但是spill还没完成,则会阻塞map操作。combine其实就是一次reduce的一个实现,预处理reduce。当某个map任务完成后,一般会有多个spill文件,会进行归并排序,将spill合并为一个文件,并在合并时提供partion,存储在index索引文件中。当reducer来取时,就会参照这个文件进行取用。

reducer的shuffle,当一个mapper完成时,就会通知tasktracker,然后,reducer就会通过http协议来取数据了。reducer取到partion后,会先放jvmheap,达到设定值后,也会进行sort写入磁盘。和mapper的spill过程类似。reducerr把merge sort 完成后,就直接调用reduce函数了。

最后,是写入hdfs。outputformat,描述数据的输出形式,生成相应的类对象,调用write方法写入到hdfs,默认调用文本写入方法。

至此,mapred过程基本完成,总算捋清楚了。

理解了以上,写起mapreduce的简单函数,自然没问题了,处理一些基本问题也顺心了许多。同时,也只有在理解整个过程的前提上,才能找到适用场景。

后续其他技术,且等且实践。(基础很重要)

hadoop基础与实践--流程解惑的更多相关文章

  1. 【原创 Hadoop&Spark 动手实践 12】Spark MLLib 基础、应用与信用卡欺诈检测系统动手实践

    [原创 Hadoop&Spark 动手实践 12]Spark MLLib 基础.应用与信用卡欺诈检测系统动手实践

  2. Hadoop基础-MapReduce入门篇之编写简单的Wordcount测试代码

    Hadoop基础-MapReduce入门篇之编写简单的Wordcount测试代码 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本文主要是记录一写我在学习MapReduce时的一些 ...

  3. 【原创 Hadoop&Spark 动手实践 9】Spark SQL 程序设计基础与动手实践(上)

    [原创 Hadoop&Spark 动手实践 9]SparkSQL程序设计基础与动手实践(上) 目标: 1. 理解Spark SQL最基础的原理 2. 可以使用Spark SQL完成一些简单的数 ...

  4. Hadoop基础-Hdfs各个组件的运行原理介绍

    Hadoop基础-Hdfs各个组件的运行原理介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.NameNode工作原理(默认端口号:50070) 1>.什么是NameN ...

  5. Hadoop基础-HDFS的读取与写入过程剖析

    Hadoop基础-HDFS的读取与写入过程剖析 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客会简要介绍hadoop的写入过程,并不会设计到源码,我会用图和文字来描述hdf ...

  6. Hadoop基础-MapReduce的Combiner用法案例

    Hadoop基础-MapReduce的Combiner用法案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.编写年度最高气温统计 如上图说所示:有一个temp的文件,里面存放 ...

  7. Hadoop基础-HDFS数据清理过程之校验过程代码分析

    Hadoop基础-HDFS数据清理过程之校验过程代码分析 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 想称为一名高级大数据开发工程师,不但需要了解hadoop内部的运行机制,还需 ...

  8. Hadoop基础-Apache Avro串行化的与反串行化

    Hadoop基础-Apache Avro串行化的与反串行化 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Apache Avro简介 1>.Apache Avro的来源 ...

  9. Hadoop基础原理

    Hadoop基础原理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 业内有这么一句话说:云计算可能改变了整个传统IT产业的基础架构,而大数据处理,尤其像Hadoop组件这样的技术出 ...

随机推荐

  1. if(变量)的判断

    变量如果不为0,null,undefined,false,都会被处理为true.只要变量有非0的值或是某个对象,数组,字符串,都会认为true

  2. JAVA实训第二次作业

    一维数组的创建和遍历. 声明并创建存放4个人考试成绩的一维数组,并使用for循环遍历数组并打印分数.要求: (1) 首先按"顺序"遍历,即打印顺序为:从第一个人到第四个人: (2) ...

  3. HTML5-桌面提醒功能

    window.webkitNotifications.requestPermission(); statue = window.webkitNotifications.checkPermission( ...

  4. Unity - Photon PUN 本地与网络同步的逻辑分离 (一)

    服务器大家可以使用Photon官网提供的,这样会变得很简单,直接搭建下就好.或者下载到本地开启本地端Photon服务器 (大家也可以使用和我一样方式有时间做了个winform 程序用来管理本地服务器开 ...

  5. nginx简介与配置

    nginx简介 nginx(发音同engine x)是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like协议下发行. nginx由俄罗斯的程序 ...

  6. Spring Beans和依赖注入

    您可以自由地使用任何标准的Spring框架技术来定义您的bean及其注入的依赖项.为简单起见,我们经常发现使用@ComponentScan(找到您的bean)和使用@Autowired(做构造函数注入 ...

  7. Mybatis批量更新比较

    https://blog.csdn.net/lu1024188315/article/details/78758943

  8. lock(this)

    public void test(int i) { lock(this) { if (i > 10) { i--; test(i); } } } 网上答案说和参数有关.可是我把int  改成ob ...

  9. mongodb分组排序

    @Override public MessageDto getCheckInMembersByFlight(String fltDt, String fltNr, String channel,Str ...

  10. LoadRunner简单介绍----性能自动化测试工具

    在做性能测试中,我认为技术可以说是武功心法,工具则是一把利剑,有一把好的利剑可以帮助自己更好的完成性能测试工作.在这里简单介绍一下LoadRunner,带大家一起来认识一下这把尚方宝剑. 一.性能测试 ...