65.9K
CodeProject 正在变化。 阅读更多。
Home

分布式内存数据网格加速 Map/Reduce 分析

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2012年5月4日

CPOL

6分钟阅读

viewsIcon

21967

“大数据”时代已经来临,快速分析的需求从未如此迫切。

下载 ScaleOut StateServer 免费试用版!

“大数据”时代已经来临,快速分析的需求从未如此迫切。能够快速有效地挖掘数据的公司可以更好地服务客户、打磨内部策略并获得竞争优势。例如,快速分析使社交媒体网站能够提供及时的、细粒度的客户行为结果,并使金融分析师能够优化交易策略以快速响应市场变化。从银行业到气候模拟,无数行业都在寻求能够快速轻松地分析数据的技术。

其中一种领先的分析技术,称为“Map/Reduce”,由 Google 推广,并因开源 Hadoop 编程平台的流行而迅速获得动力。简而言之,该技术利用多台计算机同时分析大型数据集中的不同数据,然后合并结果。与按顺序遍历数据集寻找感兴趣的模式相比,Map/Reduce 分析大大加快了分析速度。它代表了 20 世纪 80 年代出现的数据并行计算技术的演进,随着云计算使并行计算广泛可用,它再次成为焦点。

文件 I/O 限制性能

Hadoop 和各种商业 Map/Reduce 实现通常将数据托管在分布式文件系统(如 Hadoop 分布式文件系统)或数据库中,然后将其流式传输到内存中进行分析。同样,Hadoop 将中间结果和最终结果流式传输回文件系统以供检索和报告。分析师决定如何将数据集的各个部分(或“分片”)分配给许多将要分析它们的并发任务,然后 Hadoop 在启动计算机上的分析任务时将这些分片暂存到内存中。

性能研究表明,文件 I/O 会显着影响 Map/Reduce 分析的性能。将每个分片的数据移入和移出内存所需的时间会延长其关联的 Map 和 Reduce 任务的执行时间,进而延迟整个分析的完成。对于无法完全放入内存的大型数据集,这种开销——及其性能损失——是无法避免的。然而,显然需要方法来规避这些延迟以提高 Map/Reduce 的性能。

内存数据网格应对 I/O 瓶颈

Forrester 最近的一项关于大数据计划的调查报告称,约 63% 的行业数据库小于 10TB。由于云计算现在可以实际利用 200 台或更多服务器执行 Map/Reduce 分析,因此这些数据集现在可以完全保存在内存中。这创造了一个激动人心的机会,可以避免文件 I/O 并大大缩短许多有用数据集的分析时间。

当然,必须设计技术来将数据集托管在分布在大型服务器阵列中的内存中,然后按需高效地访问数据。一种称为分布式“内存数据网格”(IMDG)的技术在过去几年中正是为此目的而发展的。最初主要用作可扩展的分布式缓存数据库系统,商业 IMDG 已成为功能齐全的存储系统,集成了负载均衡、高可用性、并行查询、事件处理以及许多其他功能。

典型的 IMDG 以键/值对的形式存储数据。这非常适合 Map/Reduce 分析,后者也使用键/值对来标识数据。IMDG 提供“应用程序接口”(API),应用程序使用它们来存储和检索数据。这些 API 访问键/值对,有点像文件系统中的文件,使用简单的创建/读取/更新/删除语义。API 与现代面向对象编程语言(如 Java 和 C#)完美集成,将键/值对托管在与语言定义的集合相对应的命名空间中。

商业内存数据网格会自动处理将存储数据均匀分布到托管网格的计算机内存中的问题。应用程序无需知道哪个网格服务器保存了它们需要的键/值对;IMDG 负责将访问请求映射到服务器。IMDG 还提供对存储数据的非常快的访问,并自动扩展其吞吐量以处理来自多台客户端计算机的同时访问。这精确地满足了 Map/Reduce 分析对其存储系统的要求,即大量 Map 和 Reduce 任务能够同时访问键/值对进行读写。

对于可以保存在内存中的数据集,IMDG 提供了一个极快的存储层,可以显着提高 Map/Reduce 分析的性能。例如,考虑金融服务中一个著名的应用程序,该应用程序基于历史市场数据对股票交易策略进行回测。此应用程序帮助分析师将新的交易策略与历史股票数据进行测试,以预测其在实时市场交易中的价值。

为了了解将数据集存储在内存中的影响,我们将一个商业 IMDG(称为 ScaleOut StateServer (SOSS))中托管数据的 Hadoop Map/Reduce 分析性能与在 Hadoop 分布式文件系统 (HDFS) 中托管数据的另一个运行进行了比较。股票历史数据以键/值对的形式存储在内存数据网格和 HDFS 中,每只股票代码对应一个。在此分析中,随着股票历史数量的成比例增加以产生额外的负载,添加服务器以扩展处理能力。在所有情况下,将市场数据存储在 IMDG 中而不是 HDFS 中都提供了显着的性能提升,减少了分析时间,分析吞吐量提高了约 6 倍。

吞吐量比较

(参见图中的绿色和蓝色线条。)这是一个显着的性能提升,但我们能做得更好吗?

下一步:将 Map/Reduce 集成到 IMDG 中

无论数据是存储在内存数据网格还是分布式文件系统中,将数据传输到执行相关 Map/Reduce 任务的计算机以及从该计算机传输数据都会产生数据传输开销,从而影响整体性能。Hadoop Map/Reduce 平台还会在任务调度以及处理 Map 和 Reduce 阶段之间移动的中间结果时引入额外的开销,例如网络延迟。

将 Map/Reduce 执行引擎与 IMDG 紧密集成可以消除不必要的数据移动以及许多其他 Map/Reduce 开销,从而带来惊人的性能提升。例如,ScaleOut StateServer 的 Grid Computing Edition 提供了一种称为“并行方法调用”(PMI)的 Map/Reduce 执行模型,它允许应用程序将 Map/Reduce 分析作为对用于网格访问的标准 API 的简单扩展来调用。能够将 Map/Reduce 内嵌于程序执行中,消除了 Hadoop 批处理调度器相关的许多开销。此外,SOSS 的 Map/Reduce 引擎确保 Map 和 Reduce 任务始终在托管其关联键/值对的计算机上执行。这消除了在暂存数据时涉及的大部分网络开销,并显着减少了延迟。

为了评估将 Map/Reduce 集成到内存数据网格中的性能优势,针对 SOSS 的 Map/Reduce PMI 模型实现了用于回测股票交易策略的金融应用程序。测试运行的吞吐量与使用 HDFS 在 Hadoop 中托管应用程序相比,有了惊人的 16 倍提升(如上图中的红色和蓝色线条所示)。尤其是在金融分析领域,更快的分析提供了重要的竞争优势。

随着云计算越来越普及,大型服务器池将用于 Map/Reduce 分析,成本效益会越来越高。这将使 IMDG 能够将越来越多的数据集保存在内存中,从而在减少分析时间方面带来重要优势,从而使分析师能够更快、更轻松地从数据集中获得洞察。

© . All rights reserved.