MAP REDUCE

大数据处理框架概念

  • 定义:由一系列组件构成,负责对数据系统中的数据进行计算。
  • 组件
    • 处理引擎:实际执行数据操作的独立组件。
    • 处理框架:包含多个协同工作的组件。

框架与引擎的区别

  • 引擎:单一的,专门执行任务。
  • 框架:由多个引擎和辅助组件组成,提供更广泛的功能。

框架示例

  • Apache Hadoop:以MapReduce作为默认处理引擎的框架。
  • Apache Spark:可以整合进Hadoop,取代MapReduce的框架。

互操作性

  • 引擎和框架:可以相互替换或同时使用,增加了系统的灵活性。

目标

  • 提高理解能力:通过对数据执行操作来增强对数据的理解。
  • 揭示模式:发现数据中蕴含的模式。
  • 获得见解:针对复杂互动提供深刻的洞察。

数据处理分类

  • 批处理:处理静态的、存储在系统中的数据集。
  • 流处理:处理实时生成并流入系统的数据流。
  • 混合处理:一些系统能够同时处理批数据和流数据。

大数据计算框架

批处理系统特点

操作对象 :大容量静态数据集。

  • 计算方式 :计算完成后返回结果。
  • 数据特征
    • 有界:处理有限的数据集合。
    • 持久:数据存储在持久化介质。
    • 大量 :适合处理大规模数据集。

批处理适用性

  • 计算需求 :需要访问全套记录的计算工作。
  • 实例:计算总数和平均数,要求数据集整体处理。
  • 状态维持:计算过程中数据需保持状态。

批处理系统设计

  • 处理资源 :需要处理大量数据的任务通常最适合用批处理操作进行处理。无论直接从持久存储设备处理数据集,或先将数据集载入内存,批处理系统在设计过程中就充分考虑了数据的量,可提供充足的处理资源。由于批处理在应对大量持久数据方面的表现极为出色,因此经常被用于对历史数据进行分析。
  • 适用场景:常用于历史数据分析。
  • 局限性 :大量数据的处理需要付出大量时间,因此批处理不适合对处
    理时间要求较高的场合。

MapReduce框架

  • 功能:按特征归并杂乱数据,处理得到结果。
  • 复杂问题:通过多个MapReduce组合表达复杂计算问题。
  • 设计 :组合过程需人工设计,比较麻烦。另外,每个阶段都需要所有的计算机同步,影响了执
    行效率。

DAG计算模型

  • 定义 :有向无环图,核心思想是把任务在内部分解为若干存在先后顺序的子任务。
  • 灵活性:更灵活地表达复杂依赖关系。
  • 模型示例
    • Microsoft Dryad
    • Google FlumeJava
    • Apache Tez

Dryad定义了串接、全连接、融合等若干简单的DAG模型,通过组合这些简单结构来描述复杂的任务,FlumeJava、Tez则通过组合若干MapReduce形成DAG任务。

MapReduce的另一个不足之处 是使用磁盘存储中间结果,严重影响了系统的性能。Spark 对早期的DAG模型作了改进 ,提出了基于内存的分布式存储抽象模型RDD,把中间数据有选择地加载并驻留到内存中,减少磁盘IO开销。

流处理系统基础

  • 定义:实时处理动态产生数据的系统。
  • 目的:快速处理数据,适用于大数据时代。

流处理系统的必要性

  • 实时需求:数据迅速处理,响应时间短。
  • 容错性:系统稳定,处理数据时避免遗漏或重复。
  • 拥塞控制:有效管理数据流,防止系统过载。

流处理系统操作特点

  • 即时计算:对流入系统的每个数据项进行实时处理。
  • 无边界数据集:数据持续到达,没有固定结束点。

流处理的影响

  • 数据集理解
    • 完整数据集:代表已处理的数据总量。
    • 工作数据集:特定时间点,只关注单个数据项。
  • 事件驱动:处理基于数据到达的事件,持续进行。
  • 结果更新:处理结果随新数据到来而实时更新。

流处理系统能力

流处理系统可以处理几乎无限量的数据,但同一时间只能处理一条 (真正的流处理)或很少量 (微批处理,Micro-batch Processing)数据,不同记录间只维持最少量的状态

交互式分析框架概述

  • 需求背景 :在大数据存储和计算基础上,提供数据分析便利。
  • 核心优势:交互式查询,提高数据分析效率。

交互式分析技术发展

  • 快速发展:近年来,交互式分析技术迅速进步。
  • 多样化平台:出现多个知名交互式分析平台。

主要交互式分析平台

  • Google Dremel:快速处理大规模数据,3秒内处理1PB数据。
  • PowerDrill:Google开发的高效数据分析工具。
  • Presto:Facebook开发,适用于多种数据源的交互式查询。
  • Impala:Cloudera开发,提供Hadoop的SQL查询。
  • Stinger:HortonWorks开发,提高Hive的交互式查询性能。
  • Apache项目:包括Hive、Drill、Tajo、Kylin、MRQL等。

交互式分析特点

  • 处理速度 :快速分析海量数据,兼顾速度和精度。
  • 用户体验:提供便利的数据分析方式,提高工作效率。

增量计算框架

  • 定义 :仅对部分新增或更新数据进行计算,提升效率。
  • 应用场景:数据增量更新或周期性更新。
  • 代表框架
    • Google Percolator
    • Microsoft Kineograph
    • 阿里 Galaxy

高性能事务处理框架

  • Apache Ignite:提供高性能的事务处理能力。
  • Apache Geode:GemFire的开源版本,适用于分布式数据管理。

图计算框架

  • 模型:基于图论的迭代式计算模型。
  • 应用:PageRank计算、社交网络分析、推荐系统、机器学习。
  • 代表框架
    • Google Pregel
    • Apache Giraph
    • Apache Hama
    • PowerGraph(领域杰出代表)

以下是对MapReduce基本设计思想的总结:

MapReduce设计思想总结(概述)

分而治之策略

  • 核心理念: MapReduce采用分而治之的方法,将大数据集分解成独立、可并行处理的数据块。
  • 独立性: 数据块之间无依赖关系,允许同时进行计算,提高处理速度。

数据分片与并行处理

  • 数据划分: 将大数据集逻辑上划分为多个数据分片。
  • 节点分配: 每个数据分片由集群中的不同节点负责处理。
  • 汇总结果: 所有节点处理完成后,汇总各节点的计算结果。
MapReduce抽象模型
  • Map函数: 对每个数据分片执行的函数,生成中间键值对。
  • Reduce函数: 根据Map函数的输出,对具有相同键的值进行汇总。
编程接口
  • 简化开发: 程序员仅需实现Map和Reduce两个接口。
  • 灵活性: 通过这两个接口,MapReduce可以应用于多种数据处理场景。
顺序数据的处理
  • 设计目标: 针对顺序组织的数据元素或记录设计。
  • 实际应用: 适用于处理重复性数据,如Web访问日志。
处理流程
  1. 数据切分: 将数据集切分为多个数据块。
  2. Map操作: 对每个数据块应用Map函数。
  3. Shuffle过程: 对Map的输出进行排序和分组。
  4. Reduce操作: 对每个键的值进行汇总,生成最终结果。

== MapReduce主要功能==

数据划分与任务调度
  • 自动化: 系统自动将大数据集划分为多个数据块,每个块对应一个任务。
  • 资源分配: 计算节点(Map和Reduce节点)被自动分配任务。
  • 监控与同步: 监控节点状态,同步Map任务执行。
数据/代码互定位
  • 本地化原则: 优先在数据所在节点处理数据,减少通信开销。
  • 代码迁移: 当本地化不可能时,数据通过网络发送到计算节点。
  • 延迟减少: 尽可能在数据所在机架上找到可用节点。
系统优化
  • 中间结果合并: 减少数据传输,提高效率。
  • 数据相关性: 确保相关数据发送到同一Reduce节点。
  • 性能优化: 对慢任务采用多备份执行,选择最快结果。
出错检测与恢复
  • 常态处理: 硬件和软件错误视为常态。
  • 错误隔离: 检测并隔离出错节点。
  • 任务接管: 调度新节点接管计算任务。
  • 数据可靠性: 多备份机制,及时恢复出错数据。

MapReduce框架组成

1. Client(客户端)
  • 角色: 用户接口,提交作业到系统。
  • 功能: 打包应用程序和配置成Jar文件。
  • 操作: 将Jar上传到HDFS,提交作业路径给JobTracker。
2. JobTracker(作业跟踪器)
  • 角色: 集群管理中枢,负责资源监控和作业调度。
  • 功能 :
    • 监控TaskTracker和作业状态。
    • 任务失败时重新分配。
    • 跟踪执行进度和资源使用。
    • 与任务调度器协作。
3. TaskTracker(任务跟踪器)
  • 角色: 集群中的工作节点。
  • 功能: 执行来自JobTracker的任务。
  • 通信: 通过心跳与JobTracker保持通信。
  • 操作: 汇报资源使用和任务进度,响应JobTracker命令。
4. Task(任务)
  • 类型: MapTask和ReduceTask。
  • 启动: 由TaskTracker根据split信息启动。
  • 处理单位: Split,包含数据的元数据信息。

核心概念

  • Split: MapReduce的处理单元,由用户定义,决定MapTask数量。
  • HDFS Block: HDFS的数据存储单元。

作业执行流程

  1. 客户端提交: 用户通过Client提交作业。
  2. Jar上传: 应用程序和配置信息上传到HDFS。
  3. JobTracker调度: 分配任务到TaskTracker。
  4. TaskTracker执行 : 根据split执行MapTask和ReduceTask。
相关推荐
Easy_Company6 天前
Hadoop实验:关于MapReduce词频统计的实验步骤
java·大数据·hadoop·mapreduce
howard20058 天前
6.1 初探MapReduce
mapreduce·词频统计
Clown958 天前
go-zero(十三)使用MapReduce并发
开发语言·golang·mapreduce
howard20058 天前
6.2 MapReduce工作原理
mapreduce·工作原理
程序猿小柒14 天前
【Spark】Spark为什么比MapReduce更高效?
大数据·spark·mapreduce
llovew.14 天前
MperReduce学习笔记下
java·hadoop·mapreduce
青云交18 天前
大数据新视界 -- Hive 基于 MapReduce 的执行原理(上)(23 / 30)
大数据·hive·mapreduce·执行架构·任务流程优化·数据处理实战·大数据技术核心·高效运算密码
小白学大数据18 天前
使用Hadoop MapReduce进行大规模数据爬取
大数据·hadoop·mapreduce
John_Snowww19 天前
6.824/6.5840 Lab 1: MapReduce
mapreduce·debug·6.824·6.5840
无奈ieq19 天前
Hbase整合Mapreduce案例2 hbase数据下载至hdfs中——wordcount
hdfs·hbase·mapreduce