开发者社区> 技术小甜> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Databricks缓存提升Spark性能--为什么NVMe固态硬盘能够提升10倍缓存性能(原创翻译)

简介: 我们兴奋的宣布Databricks缓存的通用可用性,作为统一分析平台一部分的 Databricks 运行时特性,它可以将Spark工作负载的扫描速度提升10倍,并且这种改变无需任何代码修改。 1、在本博客中,我们将介绍这个新特性的两个主要特点:易用性和性能。
+关注继续查看
福利推荐:阿里云、腾讯云、华为云等大品牌云产品全线2折优惠活动来袭,4核8G云服务器899元/3年,新老用户共享优惠,点击这里立即抢购>>>

我们兴奋的宣布Databricks缓存的通用可用性,作为统一分析平台一部分的 Databricks 运行时特性,它可以将Spark工作负载的扫描速度提升10倍,并且这种改变无需任何代码修改。
1、在本博客中,我们将介绍这个新特性的两个主要特点:易用性和性能。
2、不同于Spark显示缓存,Databricks缓存能够自动地为用户缓存热输入数据,并且在集群中负载均衡。利用NVMe SSD硬件的先进性能和最先进的压缩技术,它能够将交互式和报告工作的负载性能提升10倍。更重要的是它缓存的数据量是Spark的缓存数量的30多倍。

Spark显式缓存

Spark中一个关键特性是显式缓存。它是一个多功能的工具,因为它可以用于存放任意计算结果(包括输入和中间结果),以便它们可以重复使用。例如,迭代机器学习算法的实现可以选择缓存特征化数据,并且每次迭代将从内存中读取这些数据。
一种特别重要和广泛使用的方式就是缓存扫描操作的结果。通过这种方式可以避免用户低速率地读取远程数据。因此,许多打算重复运行相同或类似工作量的用户决定花费额外的开发时间来手动优化他们的应用程序,通过指示Spark确切缓存什么文件以及何时进行缓存,从而实现“显式缓存”。
对于Spark缓存有如上功能,它还有一些缺点。首先,把数据保存在主内存中时,它需要占用内存空间,而这些空间能够更好用于其他用途,例如,用于Shuffle或者哈希表。其次,当数据缓存在磁盘,读取需要反序列化--该过程太慢以至于无法充分利用NVMe SSD通常所提供的高读取带宽。
最后,由于需要提前并详细指定需要缓存的数据,这个对于那些想交互地导出数据或者创建报告是一个挑战。虽然Spark缓存提供数据工程师所有调优开关,数据科学经常发现推断这些内存太困难了,特别是在多租户的设置中,工程师仍然需要尽快返回结果以保证迭代时间更短。

NVMe SSD面临的调整

固态硬盘或者SSD已经成为标准存储技术。尽管最初以其随机搜索低延迟闻名,但在过去的几年中,SSD也大幅度提供了读写吞吐量。
NVMe接口创建用于克服SATA和ARCI设计的极限,并且允许最大可能使用现代SSD所提供出色的性能。这包括利用基于闪存存储设置的内部并行性和极低读延迟的能力。NVMe使用多种长命令队列以及其他增强功能,允许驱动器高效处理海量并发请求。这种面向并行的架构完美地补充了现代多核CPU和如Spark数据处理系统的并行线。
通过NVMe接口,SSD比低速磁盘驱动器在属性和性能上更加接近主内存。因此它们是存储缓存数据的理想地方。
然而为完全利用NVMe SSD的潜力,仅仅把远程数据复制到本地存储是远远不够。我们在AWS i3实例所进行的实验表明当从本地SSD读取常用文件格式时,它只是使用一部分可用的I/O带宽。
上图显示了在Spark针对EC2 i3实例类型的本地NVMe SSD的I/O带宽利用率。根据图示,现有数据格式不能充分利用I/O带宽,CPU密集解码速度无法跟上SSD的速度。

自适应运行

当设计Databricks缓存时,我们不仅关注于实现优化的读性能,并且关注于创建一种“自适应运行”的方案,该方案无需用户任何参与。该缓存考虑到:
1、自动选择数据缓存----无论何时访问远程文件时,该数据转码副本会立即存放到缓存中
2、替换长时间未使用的数据----当磁盘空间不足时,缓存自动删除最近最少使用的数据
3、负载均衡----缓存的数据均匀地分发到集群的所有节点上,并且自动扩展和/或调整不同节点不均匀使用情况
4、数据安全----在缓存数据通过同样的方式与临时文件保持加密,例如Shuffle文件
5、数据更新----缓存能够自动发现在远程地方文件的增加和删除,并且显示数据最新的状态
从Databricks运行时3.3以来,在AWS i3实例类型中所有集群都预置并默认启用Databricks内存。由于这种实例类型具有较高的写入吞吐量,数据能够转码并保存在缓存中,而无需降低读取远程数据的查询性能。喜欢选择其他类型工作节点的用户可以使用Spark配置来启用缓存(请参考文档以了解更多细节)。
对于那些需预先缓存所需要数据的用户,我们实现了CACHE SELECT命令。它将提供选择部分数据装载到缓存中。用户可以指定垂直(如:选择列)或者水平(如:满足查询条件的行)切片数据保存在缓存中。

性能

为了充分利用NVMe SSD,不是采取直接缓存输入的“原始数据”,而是新功能会自动将数据转换为高度优化新的临时磁盘缓存格式,该功能提供了出色的解码速度,从而获得了更佳的I/O带宽利用率。这种转码是异步操作,从而把数据加载到缓存的查询开销降低到最小。
增强读取性能(在前面所提到的通常在访问远程数据避免高延迟的能力)导致了各种查询速度取得了显著的提升。例如,在如下TPC-DS查询的子集,相对于从AWS S3读取Parquet数据,我们看到在每个简单查询都取得了持续的改进,并且在查询53中速度有5.7倍的提升。
来自于我们私人测试程序的一些客户工作中,我们看到性能有10倍的提升。

对比Spark缓存和Databricks缓存

Spark缓存和Databricks缓存可以搭配使用,事实上,它们之间相得益彰:Spark缓存提供存储任意中间计算结果数据的能力,而Databricks缓存提供了对输入数据提供自动和出色的性能。
在我们的实验中,Databricks缓存相对于Spark缓存的DISK_ONLY读模式达到了4倍的速度。对比MEMORY_ONLY模式,Databricks缓存仍然提供了3倍的加速,而且还保持了较小的内存占用。

Databricks缓存配置

对于运行Databricks运行时3.3+版本的所欲AWS i3实例类型,对于所有Parquet文件缓存选择默认开启,并且缓存功能也可以与Databricks delta无缝协作。
要在其他Azure或AWS实例类型中使用新缓存,在集群配置中需要设置如下配置参数:
1 spark.databricks.io.cache.enabled true 
2 spark.databricks.io.cache.maxDiskUsage "{DISK SPACE PER NODE RESERVED FOR CACHED DATA}" 
3 spark.databricks.io.cache.maxMetaDataCache "{DISK SPACE PER NODE RESERVED FOR CACHED METADATA}"

结论

Databricks缓存为Databricks用户提供了大量好处--无论是易用性还是查询性能。它可以与Spark缓存进行混合搭配结合,使用最优的工具来完成任务。随着即将更进一步的性能提升和对其他数据格式的支持,Databricks缓存将成为各种工作负载的主要工具。
将来,我们讲发布更多性能提升和扩展支持其他文件格式的功能。
要尝试此新功能,请立即在我们统一分析平台选择一个i3实例类型的集群。
?











本文转自shishanyuan博客园博客,原文链接: ? http://www.cnblogs.com/shishanyuan/p/8414582.html,如需转载请自行联系原作者




版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Spark 通用的性能配置方法:内存和CPU的配置
前言 本文主要介绍关于通过配置Spark任务运行时的内存和CPU(Vcore)来提升Spark性能的方法。通过配置内存和CPU(Vcore)是比较基础、通用的方法。本文出现的Demo以X-Pack Spark数据工作台为背景介绍,数据工作台的详细介绍请参考:数据工作台。
3934 0
【Spark Summit East 2017】Spark中的容错:从生产实践中获取的经验
本讲义出自Jose Soltren在Spark Summit East 2017上的演讲,主要介绍了Spark容错中的螺母和螺栓,他首先简述了Spark中的各种容错机制,然后讨论了YARN上的Spark、调度与资源分配,在演讲中还对于一些用户案例进行了探讨研究并给出了一些需要的工具,最后分享了未来Spark中容错未来的发展方向比如调度器和检查点的变化。
1927 0
【Spark Summit East 2017】从容器化Spark负载中获取的经验
本讲义出自Tom Phelan在Spark Summit East 2017上的演讲,Tom Phelan探讨了如何实现高可用性的分布式大数据应用和数据中心主机,并分享了学到的经验教训,并对于如何在一个可靠的、可伸缩的、高性能的环境将大数据应用程序容器化给出了一些提示。
1838 0
【Spark Summit EU 2016】SparkOscope:优化Spark的跨栈监控与可视化框架
本讲义出自Yiannis Gkoufas在Spark Summit EU上的演讲,主要介绍了Spark监控框架的基本架构,并且对于Spark监控框架的扩展SparkOscope进行了详细地介绍,对于SparkOscope的架构基本原理以及基本安装方式等进行了介绍。
1798 0
【Spark Summit EU 2016】没人会把Spark放在容器里
本讲义出自Jorg Schad在Spark Summit EU上的演讲,主要介绍了基于Mesos的开源的数据中心操作系统DC/OS,DC/OS可以用于处理容器和大数据。Jorg Schad还介绍了容器技术的相关内容,从容器技术的设计理念到容器技术与虚拟机技术的区别,以及容器技术控制组、命名空间等相关技术细节,在最后还讨论了Java与容器的关联。
1773 0
【Spark Summit East 2017】虚拟化分析,Spark是最好的答案么?
本讲义出自Arsalan Tavakoli在Spark Summit East 2017上的演讲,主要对于虚拟化分析的技术路线的发展进行了探讨。
1690 0
【Spark Summit East 2017】当大数据邂逅学习科学
本讲义出自Al Essa在Spark Summit East 2017上的演讲,主要介绍了创新的路线,MC Graw Hill公司的在学习科学以及优化学习的工具所做的研究,以及利用Spark和DataBricks建立测评模型解决辨别可能放弃课程学习的高风险学生的难题。
1721 0
【Spark Summit East 2017】Intel与Spark共同助推机器学习与深度学习
本讲义出自Ziya Ma在Spark Summit East 2017上的演讲,主要介绍了人工智能对于目前各个行业的深刻变革并将继续释放大量的能量,并且讲述了人工智能目前需要更进一步提升的需求点,并且介绍了应对人工智能的需求,Intel所研发的BigDL大数据分析框架。
2018 0
【Spark Summit East 2017】企业如何通过Spark挤入人工智能快车道
本讲义出自Mike Gualtieri在Spark Summit East 2017上的演讲,主要分享了企业如何充分利用Spark在人工智能的研究中取得一席之地,以及人工智能如何帮助企业优化产品的用户体验。
1583 0
【Spark Summit East 2017】基于混合云的Spark技术助力数据科学转型
本讲义出自Seth Dobrin在Spark Summit East 2017上的演讲,主要分享了如何基于混合云上的Spark技术以及Kafka帮助数据科学进行变革转型。
1362 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
PostgresChina2018_桑栎_PipelineDB体系结构和使用场景(1)
立即下载
基于Spark的面向十亿级别特征的 大规模机器学习
立即下载
基于SparkSQL的海量数据仓库设计与实践
立即下载


http://www.vxiaotou.com