简述MapReduce数据流
目前it基本都是一个套路,获得数据然后进行逻辑处理,存储数据。
基本上弄清楚整个的数据流向就等于把握了命脉。
现在说说mapreduce的数据流
1、首先数据会按照TextInputFormat按照特定的文本输入格式被处理成两个InputSplit,当然一般是这样,每增加一个块分区(Block,简单的说是几个文件我是这么理解的)就会加一个InputSplit。
2、然后将InputSplit分割的内容输入到相应的Map中(map会读取inputSplit指定位置的数据),有几个InputSplit就有几个Map
3、在Map里面进行处理的时候首先会将分割的内容放进去,并转换成方便处理的格式然后写入到本地磁盘中,简单点说就是将标准的输入格式,处理成标准的输出格式(我的理解是,处理方式都是死的,是按照一定的格式才能进行处理,包括成为key value对,也是一种格式。只有转换成特定的格式,才能进行批处理。否则容易出问题)。然后进行Map处理成key/value 。
4、在Map处理成规定的key/value后,数据进入shuffle,里面会自动进行归类。比如说我读入数据是(key,value)就会处理称为 (key,value_list),将相同的key进行合并,值组成一个列表。
5、然后传入reduce处理,在reduce中会将数据进行整合,一般可以在这里将不同文件的数据进行笛卡尔积,说是这么说,其实就是把数据对应的拿出来,按照key相同值处理的方式进行遍历处理。这里面一般key是两个文件的数据的主外键,然后value是你想笛卡尔积获得的数据。官方说法是合并value。然后弄成标准输出格式丢掉HDFS中落地成为文件。这里面的落地会占用很多网络宽带,和上传数据一样的,主要和存储机制nameNode和dataNode有关,简单点原数据存储地方不一样,现在撸过来一起处理加上里面我用java写的程序也是标准的文件输入输出流。这个是不可避免的。
简述MapReduce数据流的更多相关文章
- MapReduce数据流(一)
在上一篇文章中我们讲解了一个基本的MapReduce作业由那些基本组件组成,从高层来看,所有的组件在一起工作时如下图所示: 图4.4高层MapReduce工作流水线 MapReduce的输入一般来自H ...
- MapReduce数据流
图4.5细节化的Hadoop MapReduce数据流 图4.5展示了流线水中的更多机制.虽然只有2个节点,但相同的流水线可以复制到跨越大量节点的系统上.下去的几个段落会详细讲述MapReduce程序 ...
- 简述MapReduce计算框架原理
1. MapReduce基本编程模型和框架 1.1 MapReduce抽象模型 大数据计算的核心思想是:分而治之.如下图所示.把大量的数据划分开来,分配给各个子任务来完成.再将结果合并到一起输出.注: ...
- MapReduce数据流(二)
输入块(InputSplit):一个输入块描述了构成MapReduce程序中单个map任务的一个单元.把一个MapReduce程序应用到一个数据集上,即是指一个作业,会由几个(也可能几百个)任务组成. ...
- 理解hadoop的Map-Reduce数据流(data flow)
http://blog.csdn.net/yclzh0522/article/details/6859778 Map-Reduce的处理过程主要涉及以下四个部分: 客户端Client:用于提交Map- ...
- MapReduce数据流-输出
- MapReduce数据流-Reduce
- MapReduce数据流-Partiton&Shuffle
- MapReduce数据流-Mapper
随机推荐
- Service7
在真机上,利用clone-vm7新建一台虚拟机,名字:PXE-Server 1.设置防火墙为trusted 2.当前及永久关闭SELinux 3.配置IP地址:192.168.4.16 ...
- [NOIP模拟测试12]题解
A. 找规律题.儿子的编号减去 小于它编号的最大的fibonacci数 即可得到它父亲的编号. 然后两个节点都暴力上跳就好了.预处理一下fibonacci数,每次二分查找即可. #include< ...
- [SDOI2015]排序 题解 (搜索)
Description 小A有一个1-2^N的排列A[1..2^N],他希望将A数组从小到大排序,小A可以执行的操作有N种,每种操作最多可以执行一次,对于所有的i(1<=i<=N),第i中 ...
- (转)Linux C 多线程编程----互斥锁与条件变量
转:http://blog.csdn.net/xing_hao/article/details/6626223 一.互斥锁 互斥量从本质上说就是一把锁, 提供对共享资源的保护访问. 1. 初始化: 在 ...
- thinkphp ajax调用demo
http://files.cnblogs.com/files/jxkshu/tp_ckgd.rar
- super_blocks没有导出
在模块中,通过查询super_blocks列表,来遍历系统中的所有super_block,但是出现与下面类似的错误: http://stackoverflow.com/q/5051111/941650 ...
- babel/core 6.x升级到7.x要碰到的一些坑
刚学习react.js没多久,碰到各种坑.就比如这个问题,弄了我3个小时,终于解决了.其实就是一个小问题. 报错信息: Error: Cannot find module '@babel/core' ...
- [已解决]报错:execjs._exceptions.ProgramError: ReferenceError: window is not defined
问题: execjs._exceptions.ProgramError: ReferenceError: window is not defined 解决: 定义一个就行 var window = { ...
- JSON数组对象和JSON字符串的转化,map和JSON对象之间的转化
这种用法包括前端和后端: 前端: 1. 转化为JSON对象方便操作 var jsonObj = JSON.parse(str); 得到的是一个json数组对象,可以通过 for (var p in j ...
- 6-MySQL-Ubuntu-操作数据表的基本操作(一)
注: SQL语句的关键字不区分大小写,如select 和Select都可以 (1) 查看当前使用的数据库; select database(); (2) 使用某数据库或切换到某数据库 use 数据库名 ...