看过好多本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. 爬虫利器 Puppeteer 实战

    Puppeteer 介绍 Puppeteer 翻译是操纵木偶的人,利用这个工具,我们能做一个操纵页面的人.Puppeteer是一个Nodejs的库,支持调用Chrome的API来操纵Web,相比较Se ...

  2. awk命令小结

    先在此至敬朱双印老师,博客写得很详细:http://www.zsythink.net/archives/tag/awk/ 这是朱双印老师关于awk博客的链接,强力推荐给大家   AWK一般在网上说是一 ...

  3. 设计模式学习心得<适配器 Adapter>

    适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁.这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能. 这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接 ...

  4. jquery中 after append appendTo 的区别

    after:在选择的元素后面添加内容,不在选择的元素内 append:在选择的元素后面的里面添加内容 appendTo:将元素添加到选择的元素里面,而且添加的元素必须是jQuery对象

  5. Python之路(第三十九篇)管道、进程间数据共享Manager

    一.管道 概念 管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信. 先画一幅图帮助大家理解下管道的基本原理 现有2个 ...

  6. 关于webpack使用的一些问题

    1.镜像安装 npm安装webpack慢的爆炸,如果不能FQ,试下下面的国内良心镜像,浑身都舒爽了. npm config set registry https://registry.npm.taob ...

  7. numpy.convolve函数用法

    函数numpy.convolve(a, v, mode=‘full’),这是numpy函数中的卷积函数库 参数: a:(N,)输入的一维数组 b:(M,)输入的第二个一维数组 mode:{‘full’ ...

  8. JavaWeb(一)-Servlet知识

    一.Servlet简介 Servlet是sun公司提供一门用于开发动态web资源的技术. sun公司在其API中提供了一个servlet接口,用户若想开发一个动态web资源(即开发一个java程序向浏 ...

  9. angular4.0懒加载

    用angular4.0进行前后端分离已经好几个月了,现在接近了尾声,pc端和移动端.可是却还存在着很多问题,最近这几天一直在研究懒加载问题,因为通过ng build --prod打包后主文件很大,有2 ...

  10. 我的数据,我做主——RecoveryManager Plus

    我的数据,我做主——RecoveryManager Plus RecoveryManager Plus除了支持对Exchange On-premise邮箱的备份恢复,还可以支持对Microsoft E ...