Apache Spark是一种常见的数据处理引擎,用于对超大数据集进行高级分析。在当今涉及基于云的服务、物联网和机器学习的企业用例中,这类数据已经司空见惯。Spark 采用了一个通用的集群计算框架,能够获取和处理实时的超大数据流,即时处理和分析事件和异常情况,从而支持企业快速制定决策,更好地响应用户需求。
为了使 Spark 能够在运行不同工作负载(例如机器学习应用)时实现卓越性能,Spark 内置了内存数据存储功能。因此,Spark 的性能要明显优于其他大数据处理技术。但是,Spark 内存功能受到服务器中可用内存的限制;受此影响,我们在执行 Spark 作业期间经常可以看到的一种情况是,系统内存已经饱和,但计算资源却处于闲置状态。要消除这种限制,一种办法为在节点集群上运行 Spark 的分布式架构,以充分利用所有节点中的可用内存。虽然采用更多节点可以解决服务器 DRAM 容量问题,但会增加成本。DRAM 不仅成本高昂,而且还要求运营商配置额外的服务器以获得更多内存。
英特尔® IMDT(Intel Memory Drive Technology)是一种软件定义内存(SDM)技术,与英特尔® 傲腾™ 固态盘相结合使用时,可有效扩展系统内存。这种英特尔® 傲腾™ 固态盘与英特尔® IMDT 的结合,可以透明地为操作系统和 Spark 作业提供更多内存,消除 Spark 应用所固有的内存限制。为了演示此功能,英特尔使用了一种当前名为 TeraSort 的 Spark 性能指标评测程序。1该程序测试得出的初始数值显示,英特尔® IMDT 能够有效提升资源利用率,改进系统性能。
这一内存扩展方法可通过使用英特尔® IMDT 显著加大系统内存,同时通过运行更多的 Spark 执行器,充分利用系统计算容量。该性能指标评测程序表明,在具有相同内存和计算能力的系统上,通过添加英特尔® IMDT 软件,可以将 Spark 作业吞吐量提高一倍。相对于使用英特尔® IMDT,另一种方法是为系统添加更多 DRAM。如图 3 的性能指标评测结果所示,添加更多 DRAM 只能略微提高性能,但成本却要显著高于英特尔® IMDT。
本技术简介比较了这两种备选方案,确定了各自的性能增益,然后将性能增益与总体拥有成本(TCO)增益进行了对比。
性能指标评测方法
TeraSort是一种常见的性能指标评测程序,用于测量在特定计算机系统上对 1 TB 随机分布数据进行排序所需的时间。它最初是一种用于测量 Apache Hadoop集群的 MapReduce性能的常用方法,并且有一些用于 Spark 的变体。在数据处理中,传入的数据必须先排序才能进行分析或处理,因此排序性能至关重要。而这也说明了该性能指标评测套件如此流行的原因所在。
系统配置
表 1 列出了测试的三个不同场景的系统配置。这三种配置包括:基准 DRAM 配置;基准配置加英特尔® IMDT,以增加内存容量;以及与仅增加 DRAM 的比较。
表 1:比较配置
测试方法
数据有 4 种大小:100GB、250GB、500GB 和 1Tb,使用 3 种不同的执行器数量。
图 1:软件堆栈
图 2:Spark 执行器进程
Spark 驱动器和执行器是 JVM(Java 虚拟机)进程。Spark 执行器使用的内核和内存均可配置;在这些测试中,Spark 驱动器的内存为 7.5GB,Spark 执行器的内存为 21GB。
图 3:性能指标评测结果
结论
测试表明,通过在运行基于 Spark 的 TeraSort 工作负载的单个服务器节点上,使用英特尔® IMDT 添加两块英特尔® 傲腾™ 固态盘 DC P4800X,吞吐量提高了一倍,同时运行时间缩短了多达 40%。而在向系统添加更多 DRAM 的方案中,性能相比于 IMDT 的方案略有提高。然而,要实现这一不到 6% 的性能提升,成本需要增加大约 50%。相比之下,英特尔® IMDT 软件凭借更低的成本(在本文的比较中,成本大约是 DRAM 成本的一半),以及所能实现的更高容量(英特尔® IMDT 可在双路节点中添加 1280-3200 GB 的系统内存),在总体拥有成本方面明显具有更高的优势。
如欲了解关于 Apache Spark 的更多信息,请访问 http://spark.apache.org
·延伸阅读:《重新构想数据中心的内存和存储》