zoukankan      html  css  js  c++  java
  • 简述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写的程序也是标准的文件输入输出流。这个是不可避免的。

  • 相关阅读:
    Cordova原理一
    View 的measure 和onMeasure
    Android Material Design 系列之 SnackBar详解
    android 透明状态栏方法及其适配键盘上推(二)
    android 透明状态栏方法及其适配键盘上推(一)
    Https握手协议以及证书认证
    App对接支付宝移动支付功能
    ViewPager 滑动一半的判断方法以及左滑右滑判断
    mvp架构解析
    解决IE8打开默认弹出开发者工具的问题
  • 原文地址:https://www.cnblogs.com/Willie-WangLiang/p/7744188.html
Copyright © 2011-2022 走看看