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组件这样的技术出 ...
随机推荐
- svn如何根据提交日志信息回退版本
问题场景: 1 记得提交的日志信息中包含openssl,但是不记得这次提交的版本号revesion,是svn初始化后中间的某次提交: 2 svn环境的操作系统平台为Fedora, 即命令行下:而且sv ...
- 服务管理之mysql基础
目录 mysql基础 1. 关系型数据库介绍 1.1 数据结构模型 1.2 RDBMS专业名词 2. mysql安装与配置 2.1 mysql安装 2.2 mysql配置 3. mysql的程序组成 ...
- H5获取原生传过来的值
项目开发中,可能会涉及到原生页面跳转到H5页面,然后H5页面要返回原生页面,通常使用的方法就会失效:this.$router.go(-1);怎么解决呢,这样就需要原生跳转H5页面的时候,在URL里传递 ...
- OO第二单元多线程电梯总结
OO第二单元多线程电梯总结 第一次作业 设计思路 Input为输入线程,负责不断读取请求并将读到的请求放入调度器中. Dispatcher为调度器,是Input线程和Elevator线程的共享对象,采 ...
- dubbo入门学习 二 RPC框架
rpc框架解释 谁能用通俗的语言解释一下什么是 RPC 框架? - 远程过程调用协议RPC(Remote Procedure Call Protocol) 首先了解什么叫RPC,为什么要RPC,RPC ...
- MUI动态生成轮播图片
$$.ajax({ url:'http://localhost:8080/api/v1/food/listFeatureFood', type:'Get', xhrFields: {withCrede ...
- mysql官方的测试数据库employees超30万的数据,安装方法介绍
安装方法 1.mysql必须开启环境变量 2.shift右键官方数据库打开在命令行运行此窗口 3.进入cmd以后输入mysql -uroot -proot 回车 4.输入 source employ ...
- Unity跳转场景
Unity中如何加载场景 1.首先需要将场景添加到 Build Settings中,如下图: 2.引用using UnityEngine.SceneManagement; 同步加载:如果场景很大,有可 ...
- cp/tar/用c语言编写程序 实现cp命令的效果
1.cp (拷贝) 已存在文件路径 要拷贝的文件路径 实现cp命令的代码如下: #include <stdio.h> //因为要在命令中得到两个路径,所以要用到main函数的两个参数 i ...
- Android逆向破解表单登录程序
Android逆向破解表单登录程序 Android开发 ADT: android studio(as) 程序界面如下,登录成功时弹出通知登录成功,登录失败时弹出通知登录失败. 布局代码 <?xm ...