`
小篮子java的家
  • 浏览: 32421 次
  • 性别: Icon_minigender_2
社区版块
存档分类
最新评论

MapReduce对数据流的处理流程

阅读更多

输入数据和分片阶段:


输入数据
:根据Namenode返回的路径信息,job将输入的数据分成若干独立的数据块,将数据传送到对应的DataNode进行存储。NameNode只保存有数据的元数据,真正的数据不会经过NameNode,也不会保存在NameNode上。

切片Hadoop把输入数据根据SplitSize(设置的片的大小,默认是64M)对文件进行切分后发送到MapReduce,切分成的每一个InputSplit对应一个Map。

 

如图所示:

 


注意事项:
明确两个概念:block(块)和InputSplit(输入片)
1.block这个概念我们不陌生,是hdfs存储文件的单位(默认的64M)。
2.InputSplit是一个逻辑概念,InputSplit只记录了要处理的数据的长度和地址(对于大多数的作业,一个理想的分片往往就是block的大小64M)。

因此,以行记录为形式的文本,一行记录可能会被切成两个block,甚至被分到不同的DataNode上。某行记录同样也可能被分到两个InputSplit。这里要跟大家阐述的是,即使一行记录可能会被划分到两个不同的Inputsplit中。但是与FileInputFormat关联的RecordReader被设计的足够健壮,当一行记录跨InputSplit时,其能够到读取不同的InputSplit,直到把这一行记录读取完成。至于具体过程是怎样,恐怕要仔细的分析源代码才能够知晓。http://blog.csdn.net/wh62592855/article/details/6583364这里有源代码解析。


Mapper<将输入的数值集对转换为中间格式的数据集>


数据处理流程:
Mapper包括5个主要的阶段Map,partion,sort,spill,merge几个主要过程
执行Map任务的节点和输入数据存储的节点是同一个节点,Map将数据计算后先放在内存中(内存的默认大小为100M当然这是可以设置的),当内存中的数据超过一定的百分比(默认的80%当然也可以进行设置)时才spill到本地磁盘,当Maptask计算部分结束后,Map在正常结束之前,会将这些spill合并(merge)成一个。
parting是通过hash函数对数据进行分区,将来会交给同一个reduce处理。因为不同的DataNode会产生具有相同的key的中间记录,而reduce的计算必须包含同一个key的所有values。sort是对数据进行排序。类似<key values>---<key (list of values)>。这里partion和sort具体的发送阶段,根据部分书籍记载,应该是发生在spill to disk之前。


具体流程如图:

 

注意事项:
1:可以自定义一个combiner,可以对中间过程的输出进行聚集,
2:程序也可以通过jobconf控制对这些中间结果进行压缩两者都可以降低从mapper到reducer数据传输量,
3:Map的输出结果是存储在本地。


Reducer<将中间格式的数值集(归约)reduce为更小的数值集>


数据处理流程
reducer包括3个主要的阶段 shuffle,sort,reduce
shuffle:可以理解为洗牌,将各Mapper中的输出结果对应的分区交给之前partion部分确定好的reduce。
sort:可以理解为排序,mapper的输出结果虽然已经排好序了,但是不同Mapper可能会有相同的key。
reduce:可以理解为归约,即对<key(list of values)>中的list of values进行计算然后输出想要的数据集。

注意事项:
1:所有reduce可以在maps一结束就立即启动,
2:shuffle和sort过程是同时进行的,reducer的输出是没有排序的,
3:reducde的输出结果通常存储在HDFS上。

 

本文如有错误之处,请各位大侠多加提点,不甚感激!

分享到:
评论

相关推荐

    《SQL对MapReduce及与之相关的流数据处理的支持》国际提案研究.pdf

    SQL标准支持流数据的应用场景可能包括实时数据分析、监控系统、在线交易系统等,这些场景需要快速响应和处理连续不断的数据流。 为了实现这一目标,提案中提出了需要在SQL标准中扩展的功能,可能包括新的数据类型、...

    互联网科技:数据流技术在GPU和大数据处理中的应用.docx

    数据流技术在GPU和大数据处理中的应用主要集中在提高计算效率和优化数据处理流程上。数据流(Dataflow)是一种计算模型,与传统的控制流(Control Flow)不同,它强调数据的流动驱动计算,而非指令的顺序执行。这种...

    20、MapReduce 工作流介绍

    总结来说,MapReduce工作流是Hadoop中处理多阶段数据处理任务的重要工具,通过`JobControl` 和`ControlledJob` ,可以管理和协调一系列相互依赖的MapReduce作业,确保它们按照正确的顺序和条件执行。这对于实现复杂...

    MapReduce 2.0

    MapReduce的工作流程通常是从HDFS(Hadoop Distributed File System)中读取输入数据,将其分割为InputSplits,然后由Map任务处理,之后进行Shuffle和Sort过程,将中间结果排序后传递给Reduce任务,最终生成输出结果...

    MapReduce详解包括配置文件

    2. **不擅长流式计算**:MapReduce的设计假设输入数据集是静态不变的,对于动态更新的数据流处理不够灵活。 3. **不擅长DAG(有向无环图)计算**:在涉及多个任务间复杂的依赖关系时,每个任务的输出都需要写入磁盘...

    互联网科技:数据流技术在GPU和大数据处理中的应用.pdf

    数据流技术在GPU和大数据处理中的应用主要集中在提高计算效率和优化数据处理流程上。数据流是一种计算模型,强调数据的流动和计算的并行性,而非传统的控制流执行模式。这种模型尤其适用于处理大规模数据和高计算...

    MapReduce设计模式

    Pig和Hive是建立在Hadoop之上的数据流语言和查询引擎,它们提供了对MapReduce编程模型的抽象,使得处理大数据更加方便。 “汇总模式”章节深入讲解了如何通过MapReduce实现数据的汇总操作,包括数值的数学统计和倒...

    MapReduce模型--自定义数据类型

    实现了WritableComparable接口的类,不仅可以将对象写入到Hadoop的数据流中,还能在MapReduce框架中比较这些对象,这对于排序、分组等操作是必不可少的。 接下来,我们以Person类为例,介绍如何自定义一个数据类型...

    Hadoop_MapReduce云计算技术手册

    MapReduce是一种基于数据流模型的编程模型,用于处理大规模数据集的并行计算任务。它主要通过两个阶段来完成数据处理任务:Map阶段和Reduce阶段。 - **Map阶段**: - **功能**:Map函数接受输入数据集中的键值对,...

    Flume日志收集与MapReduce模式.pdf

    它通过构建数据流管道来实现数据的流动,这些管道由源(Sources)、通道(Channels)和接收器(Sinks)组成。源负责从不同数据源如Web服务器日志、应用日志等收集数据,通道作为临时存储,保证数据在处理过程中的...

    Hadoop_MapReduce教程

    - 虽然 MapReduce 主要用于批处理,但也可以用于实时数据流处理,如通过 Hadoop Streaming 实现。 **3. 分布式文件系统集成** - Hadoop MapReduce 通常与 HDFS 结合使用,以实现高效的数据存储和访问。 - 这种...

    行业分类-设备装置-适用于大规模实时数据流的查询处理方法.zip

    在实时数据流处理中,查询处理需要具备低延迟和高并发处理能力,以应对数据流的瞬时变化和大规模数据的挑战。常见的实时查询处理技术包括流处理引擎(如Apache Flink、Spark Streaming)和复杂事件处理(CEP)系统。...

    MapReduce原理.docx

    - **非实时性**:MapReduce主要用于批处理作业而非实时数据流处理,因此不适合处理实时或近实时的数据需求。 - **数据静态性**:MapReduce处理的数据是静态的,即在处理过程中不会发生变化。 #### 二、操作案例 ##...

    Hadoop中的HDFS和Mapreduce

    - **Pig**:一种高级的数据流语言和执行框架,简化了在Hadoop上的数据处理流程。 - **Hive**:建立在Hadoop之上的数据仓库工具,提供了SQL-like查询语言HiveQL,使用户无需编写MapReduce程序即可进行数据分析。 ...

    MapReduce与Spark异同点和优势比较

    MapReduce和Spark是两种在大数据处理领域广泛应用的计算框架,它们各自有其独特的优势和应用场景。本文将深入探讨这两种技术的异同点以及各自的优点。 首先,MapReduce是由Google提出的一种分布式计算模型,主要...

Global site tag (gtag.js) - Google Analytics