简述MapReduce数据流

目前it基本都是一个套路,得到数据而后进行逻辑处理,存储数据。java

基本上弄清楚整个的数据流向就等于把握了命脉。网络

 

如今说说mapreduce的数据流spa

  一、首先数据会按照TextInputFormat按照特定的文本输入格式被处理成两个InputSplit,固然通常是这样,每增长一个块分区(Block,简单的说是几个文件我是这么理解的)就会加一个InputSplit。orm

  二、而后将InputSplit分割的内容输入到相应的Map中(map会读取inputSplit指定位置的数据),有几个InputSplit就有几个Mapinput

  三、在Map里面进行处理的时候首先会将分割的内容放进去,并转换成方便处理的格式而后写入到本地磁盘中,简单点说就是将标准的输入格式,处理成标准的输出格式(个人理解是,处理方式都是死的,是按照必定的格式才能进行处理,包括成为key value对,也是一种格式。只有转换成特定的格式,才能进行批处理。不然容易出问题)。而后进行Map处理成key/value 。  it

  四、在Map处理成规定的key/value后,数据进入shuffle,里面会自动进行归类。好比说我读入数据是(key,value)就会处理称为 (key,value_list),将相同的key进行合并,值组成一个列表。遍历

  五、而后传入reduce处理,在reduce中会将数据进行整合,通常能够在这里将不一样文件的数据进行笛卡尔积,说是这么说,其实就是把数据对应的拿出来,按照key相同值处理的方式进行遍历处理。这里面通常key是两个文件的数据的主外键,而后value是你想笛卡尔积得到的数据。官方说法是合并value。而后弄成标准输出格式丢掉HDFS中落地成为文件。这里面的落地会占用不少网络宽带,和上传数据同样的,主要和存储机制nameNode和dataNode有关,简单点原数据存储地方不同,如今撸过来一块儿处理加上里面我用java写的程序也是标准的文件输入输出流。这个是不可避免的。map

相关文章
相关标签/搜索