hadoop基础与实践--流程解惑
看过好多本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基础与实践--流程解惑的更多相关文章
- 【原创 Hadoop&Spark 动手实践 12】Spark MLLib 基础、应用与信用卡欺诈检测系统动手实践
[原创 Hadoop&Spark 动手实践 12]Spark MLLib 基础.应用与信用卡欺诈检测系统动手实践
- Hadoop基础-MapReduce入门篇之编写简单的Wordcount测试代码
Hadoop基础-MapReduce入门篇之编写简单的Wordcount测试代码 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本文主要是记录一写我在学习MapReduce时的一些 ...
- 【原创 Hadoop&Spark 动手实践 9】Spark SQL 程序设计基础与动手实践(上)
[原创 Hadoop&Spark 动手实践 9]SparkSQL程序设计基础与动手实践(上) 目标: 1. 理解Spark SQL最基础的原理 2. 可以使用Spark SQL完成一些简单的数 ...
- Hadoop基础-Hdfs各个组件的运行原理介绍
Hadoop基础-Hdfs各个组件的运行原理介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.NameNode工作原理(默认端口号:50070) 1>.什么是NameN ...
- Hadoop基础-HDFS的读取与写入过程剖析
Hadoop基础-HDFS的读取与写入过程剖析 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客会简要介绍hadoop的写入过程,并不会设计到源码,我会用图和文字来描述hdf ...
- Hadoop基础-MapReduce的Combiner用法案例
Hadoop基础-MapReduce的Combiner用法案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.编写年度最高气温统计 如上图说所示:有一个temp的文件,里面存放 ...
- Hadoop基础-HDFS数据清理过程之校验过程代码分析
Hadoop基础-HDFS数据清理过程之校验过程代码分析 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 想称为一名高级大数据开发工程师,不但需要了解hadoop内部的运行机制,还需 ...
- Hadoop基础-Apache Avro串行化的与反串行化
Hadoop基础-Apache Avro串行化的与反串行化 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Apache Avro简介 1>.Apache Avro的来源 ...
- Hadoop基础原理
Hadoop基础原理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 业内有这么一句话说:云计算可能改变了整个传统IT产业的基础架构,而大数据处理,尤其像Hadoop组件这样的技术出 ...
随机推荐
- 爬虫利器 Puppeteer 实战
Puppeteer 介绍 Puppeteer 翻译是操纵木偶的人,利用这个工具,我们能做一个操纵页面的人.Puppeteer是一个Nodejs的库,支持调用Chrome的API来操纵Web,相比较Se ...
- awk命令小结
先在此至敬朱双印老师,博客写得很详细:http://www.zsythink.net/archives/tag/awk/ 这是朱双印老师关于awk博客的链接,强力推荐给大家 AWK一般在网上说是一 ...
- 设计模式学习心得<适配器 Adapter>
适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁.这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能. 这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接 ...
- jquery中 after append appendTo 的区别
after:在选择的元素后面添加内容,不在选择的元素内 append:在选择的元素后面的里面添加内容 appendTo:将元素添加到选择的元素里面,而且添加的元素必须是jQuery对象
- Python之路(第三十九篇)管道、进程间数据共享Manager
一.管道 概念 管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信. 先画一幅图帮助大家理解下管道的基本原理 现有2个 ...
- 关于webpack使用的一些问题
1.镜像安装 npm安装webpack慢的爆炸,如果不能FQ,试下下面的国内良心镜像,浑身都舒爽了. npm config set registry https://registry.npm.taob ...
- numpy.convolve函数用法
函数numpy.convolve(a, v, mode=‘full’),这是numpy函数中的卷积函数库 参数: a:(N,)输入的一维数组 b:(M,)输入的第二个一维数组 mode:{‘full’ ...
- JavaWeb(一)-Servlet知识
一.Servlet简介 Servlet是sun公司提供一门用于开发动态web资源的技术. sun公司在其API中提供了一个servlet接口,用户若想开发一个动态web资源(即开发一个java程序向浏 ...
- angular4.0懒加载
用angular4.0进行前后端分离已经好几个月了,现在接近了尾声,pc端和移动端.可是却还存在着很多问题,最近这几天一直在研究懒加载问题,因为通过ng build --prod打包后主文件很大,有2 ...
- 我的数据,我做主——RecoveryManager Plus
我的数据,我做主——RecoveryManager Plus RecoveryManager Plus除了支持对Exchange On-premise邮箱的备份恢复,还可以支持对Microsoft E ...