首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何提高AeroSpark读取性能?

如何提高AeroSpark读取性能?
EN

Stack Overflow用户
提问于 2016-08-10 15:52:40
回答 1查看 321关注 0票数 1

我正在使用最新的AeroSpark连接器来处理AeroSpike和Spark ML。但是当我在AeroSpike中插入大约60M条记录时,我在读取操作中获得了太多的时间。例如,对于从包含60M条记录的集合中获取500K记录,AeroSpark大约需要30分钟。当我查看htop cmd输出时,AeroSpike只使用了7%的CPU。

每一轮记录包含1k的数据。AeroSpike和Spark托管在同一节点上。按辅助索引筛选的数据。

如何提高读取操作的性能?似乎AeroSpark只由一个线程工作,我如何并行化这个作业?有什么建议吗?

AeroSpike会议:

代码语言:javascript
复制
memory-size 8G
default-ttl 30d
storage-engine device {
    file /vol/rmla.data
    filesize 900G
}
EN

回答 1

Stack Overflow用户

发布于 2017-01-21 03:39:08

在不了解您的服务器的情况下,我将坚持一些一般性的建议,这些建议可以改善您的体验。

磁盘IO

您显然受到从storage media读取速度的限制,因为您声明它是一个文件。如果要存储data on disk,可以在storage-engine device配置块中使用filedevice

硬盘上的文件与原始设备访问SSD之间的读取和写入延迟存在很大差异。通常,航空派克与存储在enterprise-grade固态硬盘设备上的数据一起使用。阅读操作手册中有关initializingsetting up驱动器的章节。使用为命名空间声明多个设备会带来线性性能提升(两个驱动器的读写吞吐量是同类驱动器的两倍)。

Amazon EC2中,您可以使用c3、i2、r3或i3实例族来实现此目的。EC2实例的临时固态硬盘设备无需过度配置、关闭RAID等,只需在首次使用前进行初始化即可。不要将EBS驱动器用于主存储,因为它们太慢了。

群集配置

Spark连接器使用大量的扫描操作。确保您已经在service配置块下将scan-threads配置为核心数量。如果您不知道自己有多少个内核,可以使用cat /proc/cpuinfo。如果Spark是使用Aerospike集群的唯一客户端,您可以调高扫描线程。

连接器配置

您可以修改连接器config options以降低写入延迟。可以选择将aerospike.commitLevel设置为CommitLevel.COMMIT_MASTER

升级版本

截至2016年11月28日,aerospike/aerospark支持Spark 2.0。确保您使用的是最新的代码。

备注:可在航空公司网站上查看新的tutorial

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38867336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档