目前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数据流的更多相关文章

  1. MapReduce数据流(一)

    在上一篇文章中我们讲解了一个基本的MapReduce作业由那些基本组件组成,从高层来看,所有的组件在一起工作时如下图所示: 图4.4高层MapReduce工作流水线 MapReduce的输入一般来自H ...

  2. MapReduce数据流

    图4.5细节化的Hadoop MapReduce数据流 图4.5展示了流线水中的更多机制.虽然只有2个节点,但相同的流水线可以复制到跨越大量节点的系统上.下去的几个段落会详细讲述MapReduce程序 ...

  3. 简述MapReduce计算框架原理

    1. MapReduce基本编程模型和框架 1.1 MapReduce抽象模型 大数据计算的核心思想是:分而治之.如下图所示.把大量的数据划分开来,分配给各个子任务来完成.再将结果合并到一起输出.注: ...

  4. MapReduce数据流(二)

    输入块(InputSplit):一个输入块描述了构成MapReduce程序中单个map任务的一个单元.把一个MapReduce程序应用到一个数据集上,即是指一个作业,会由几个(也可能几百个)任务组成. ...

  5. 理解hadoop的Map-Reduce数据流(data flow)

    http://blog.csdn.net/yclzh0522/article/details/6859778 Map-Reduce的处理过程主要涉及以下四个部分: 客户端Client:用于提交Map- ...

  6. MapReduce数据流-输出

  7. MapReduce数据流-Reduce

  8. MapReduce数据流-Partiton&Shuffle

  9. MapReduce数据流-Mapper

随机推荐

  1. Dart编程实例 - 第一个Dart程序

    Dart编程实例 - 第一个Dart程序 main() { print("Hello World!"); } 本文转自:http://codingdict.com/article/ ...

  2. Oracle删除修改字段

    Oracle 增加修改删除字段 添加字段的语法:alter table tablename add (column datatype [default value][null/not null],…. ...

  3. J2EE学习篇之--Spring技术详解

    今天我们来看一下Spring的相关知识,我们知道Spring也是一个开源的框架,这个框架并不像是Struts一样,这个框架是可以用在Java的所有地方,所以,其实开发Android的时候我们也是可以使 ...

  4. Android Dialog对话框的七种形式的使用

    参考资料:http://www.oschina.net/question/54100_32486 注:代码进行了整理 在Android开发中,我们经常会需要在Android界面上弹出一些对话框,比如询 ...

  5. ios移动输入框被软键盘遮挡

    页面输入框会出现被软键盘挡住的问题: 解决方法:获取input点击事件设置body高度 $('input').bind('click',function(e){ var $this = $(this) ...

  6. php的socket编程(socket关键几个函数)

    php的socket编程(socket关键几个函数) 一.总结 一句话总结: socket_create.socket_connect.socket_bind.socket_listen.socket ...

  7. GO语言延迟函数defer用法分析

    这篇文章主要介绍了GO语言延迟函数defer用法,较为详细的分析了GO语言的特性与具体用法,并给出了一个比较典型的应用实例,具有一定的参考借鉴价值,需要的朋友可以参考下   本文实例讲述了GO语言延迟 ...

  8. CSS:CSS 分组 和 嵌套 选择器

    ylbtech-CSS:CSS 分组 和 嵌套 选择器 1.返回顶部 1. CSS 分组 和 嵌套 选择器 Grouping Selectors 在样式表中有很多具有相同样式的元素. h1 { col ...

  9. (53)C# 工具

    https://docs.microsoft.com/zh-cn/dotnet/framework/tools/ildasm-exe-il-disassembler 一.Visual Studio的开 ...

  10. jquery中的ajax请求用法以及参数详情

    url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. type: 要求为String类型的参数,请求方式(post或get)默认为get.注意其他http请求方法,例如put和 ...