主页
topics
MapReduce
更新日期:2024 年 11 月 19 日
撰稿人:Jim Holdsworth、Matthew Kosinski
MapReduce 是一种编程模型,使用并行处理来加速大规模数据处理过程。MapReduce 可在 Hadoop 集群中的数百或数千台服务器之间实现大规模可扩展性。
名称“MapReduce”是指该模型执行的两项任务,用以帮助将大型数据处理任务“分解”成许多可以更快并行运行的较小任务。
MapReduce 编程模型是 Apache Hadoop 的核心处理组件之一;Apache Hadoop 是一个由 Apache 软件基金会支持并基于 Java 编程语言构建的开源软件框架。
MapReduce 模型也可以在 Hadoop 外部使用。
了解如何找到适合您业务需求的开放、可信的数据基础。
MapReduce 可将数据处理项目分解为更小的部件,以便它们可以更快地运行。
例如,使用一个处理器来分析包含 TB 或 PB 级数据的大型文件可能需要 10 个小时。一个 MapReduce 作业可以将同一个数据文件拆分为 10 个任务,在 10 个处理器上并行运行。运行此作业可能只需要一个小时或更短的时间。可以从分布式计算节点聚合数据以产生结果。
虽然映射和缩减是 MapReduce 模型的基本功能,但整个过程还包括一些其他步骤。
MapReduce 应用程序接受输入数据,其中可以包括结构化或非结构化数据。MapReduce 应用程序通常使用存储在 Hadoop 分布式文件系统 (HDFS) 中的输入文件,但该模型也可以处理其他数据源。(有关更多信息,请参阅“Hadoop 生态系统中的 MapReduce”。)
对于特定作业,MapReduce 框架可帮助选择分布式服务器、管理通信和数据传输,并支持容错和冗余。
输入数据被分割成较小的块。这些块分发给位于不同计算节点上的映射器,即下一步要执行映射的函数。MapReduce 框架的目标是在映射器之间实现大致均匀的数据分配,以实现有效的负载均衡。
在每个节点上,映射函数处理它接收到的数据,将数据转换为键/值对。
映射器总数在 Hadoop 框架内根据数据总量和每个映射器上的可用内存块来确定。映射器、缩减器和输出格式的参数可以在 Hadoop 集群中设置。
Hadoop 框架对映射输出进行排序,并将具有相同“键”(主题)的所有键/值对分配给同一个缩减器例如,在城市及其每日高温的数据集中,任何带有“Tokyo”键的数据都会进入同一个缩减器。
缩减器,顾名思义,就是执行缩减步骤的函数。
缩减函数处理映射器发出的键/值对。这可能涉及对数据进行合并、制表或其他操作,具体取决于所需处理的类型。
映射和缩减可以在同一组服务器上完成,但并不强制。
每个缩减器都将其处理结果输出到 HDFS 或其他数据存储。
无论组织想要分析多少数据,关键原则都保持不变。
对于此示例,数据集包括城市(键)以及为每个城市记录的相应每日气温(值)。示例键/值对可能类似于:<Toronto, 18>。
数据分布在多个文件中。每个文件可能包含来自许多城市的混合数据,并且可能多次包含同一城市。
从此数据集中,用户希望确定跟踪期间每个城市的“最高温度”。
用来处理此作业的 MapReduce 实现可能如下所示:
Hadoop 生态系统是一套旨在协同工作以提高效率的开源模块。构成主要 Hadoop 框架的模块包括 MapReduce 外加其他 3 个模块:
HDFS 是一种分布式文件系统,用于将应用程序数据存储在多达数千台商用服务器上。
HDFS 旨在为 Hadoop 提供容错能力并提供数据快速访问。默认情况下,数据块在加载或写入时跨多个节点复制。
HDFS 架构采用 NameNode 来管理文件系统命名空间和文件访问,同时有多个 DataNode 来管理数据存储。
开源 Apache Hadoop (YARN) 是用于作业调度和集群资源管理的框架。它支持多种工作量,例如 SQL 查询、高级建模和实时流。
此模块是支持其他 Hadoop 模块的资源实用程序和库的集合。其也称为 Hadoop Core,包含多种用于自动故障恢复、文件系统级和操作系统级抽象、Java Archive (JAR) 文件和脚本等的资源。
除了主 Hadoop 框架之外,Hadoop 生态系统还包括:
MapReduce 可以高效处理许多简单的用例,但是复杂的数据处理任务在其他应用程序上可能运行得更快。以下是一些适合 MapReduce 并行处理方法的应用:
MapReduce 编程范式由 Google 计算机科学家 Jeffery Dean 和 Sanjay Ghemawat 于 2004 年创建。MapReduce 模型的目标是通过大型商用硬件集群上的大规模并行处理,简化大型数据集的转换和分析。它还使程序员能够专注于算法而不是数据管理。
虽然 Google 推出了第一个 MapReduce 框架,但 Apache Hadoop MapReduce 可能是最受欢迎的。
MapReduce 在推进大数据分析方面发挥了关键作用,但它确实有其缺点。例如,MapReduce 通常不会将数据保留在内存中,只有将 MapReduce 应用程序链接在一起才能实现迭代逻辑。这些因素都增加了复杂性,并可能导致处理时间延长。
虽然 MapReduce 仍被广泛使用(尤其是在旧版系统中),但许多组织正在转向更快或更专业的框架,例如针对大数据应用的 Apache Spark。
IBM web domains
ibm.com, ibm.org, ibm-zcouncil.com, insights-on-business.com, jazz.net, mobilebusinessinsights.com, promontory.com, proveit.com, ptech.org, s81c.com, securityintelligence.com, skillsbuild.org, softlayer.com, storagecommunity.org, think-exchange.com, thoughtsoncloud.com, alphaevents.webcasts.com, ibm-cloud.github.io, ibmbigdatahub.com, bluemix.net, mybluemix.net, ibm.net, ibmcloud.com, galasa.dev, blueworkslive.com, swiss-quantum.ch, blueworkslive.com, cloudant.com, ibm.ie, ibm.fr, ibm.com.br, ibm.co, ibm.ca, community.watsonanalytics.com, datapower.com, skills.yourlearning.ibm.com, bluewolf.com, carbondesignsystem.com