乾象投资:基于JuiceFS 构建云上量化投研平台( 三 )


03 存储方案选型非 POSIX 兼容方案最初,我们尝试了很多对象存储的方案,也就是非 POSIX 的方案 。对象存储有很强的扩容能力,而且成本非常的低,但是对象存储的问题也很明显 。最大的问题就是没有 POSIX 兼容性 。对象存储的使用方式跟文件系统有比较大的区别,如果把对象存储直接作为接口面向研究员,对他们来讲使用有很大的难度,便利性也有很大的限制 。
除此之外,很多云厂商的对象存储有请求限制 。例如,阿里云会对整个帐号的 OSS 带宽做限制 。对于普通的业务场景这通常是可以接受的,但是突发性任务会在瞬时产生非常大的带宽需求,仅仅使用对象存储很难去支撑这类场景 。
另一个方案是 HDFS ,我们在 HDFS 上面并没有做太多测试 。首先,我们所采用的技术栈对 Hadoop 没有太强的依赖;同时,HDFS 对 AI 训练的产品的支持并没有特别突出,而且 HDFS 没有完整的 POSIX 兼容性,这对我们的使用场景会有一些限制 。

乾象投资:基于JuiceFS 构建云上量化投研平台

文章插图
云上 POSIX 兼容方案上文中提到的业务特点决定了我们对 POSIX 兼容性有很强的需求,而且技术平台是基于公有云来进行的,因而我们将存储选型的范围确定为:云上兼容 POSIX 。
云厂商会提供一些方案,比如像阿里云的 NAS,AWS EFS 之类;另外一类是像阿里云的 CPFS 方案,AWS 的 FSx 方案 。这两类文件系统的吞吐是与容量强绑定的,当容量越大的时候,吞吐会越大,跟 NAS 的存储性质是直接相关的 。这样的方案,在面对小量的热数据的时候不太友好,需要额外的优化才能达到比较好的表现 。另外 CPFS 或者阿里云上的极速型 NAS,对低延时的读取很友好,但缺点是成本比较高 。
就各自官网展示的价格,我们做了个对比 。各类高性能 NAS 产品的成本大概是 1500-2000元/TB/月,JuiceFS 整体的成本会低很多,因为 JuiceFS 的底层存储是对象存储。JuiceFS 的成本分成这样几个部分:对象存储的存储费用;JuiceFS 云服务的费用;以及SSD 缓存产生的成本 。综合来看,JuiceFS 的整体成本远低于 NAS 和其他方案的成本 。
在吞吐方面,早期做了一些测试,当节点数量比较少的时候,直接用 CPFS 跟做 JuiceF 对比,同时读取性能不会有很大的差异 。但是当节点数变大之后,因为 NAS 类文件系统有带宽限制,读取时间整体都拉长了,而 JuiceFS 只要做好缓存集群的部署,可以非常轻松的支撑下来,并且没有太大的开销,下图场景是部署了总带宽约为 300Gb 左右的集群 。
乾象投资:基于JuiceFS 构建云上量化投研平台

文章插图
除了成本和吞吐以外,在技术选型时,JuiceFS 对上文提到的功能 Full POSIX、权限控制、Qos、Kubernetes 都能够比较好的支持;
值得一提的是JuiceFS 的缓存集群能力,它能够实现灵活的缓存加速 。最开始时,我们使用计算节点做本地缓存,这是一个挺常见的做法 。存算分离之后,希望计算节点有一些数据可以本地化,JuiceFS 这方面功能的支持是比较完善的,对于空间的占用、百分比的限制等都做得很完善 。我们部署了独立的缓存集群去服务一些热数据,只要在使用之前去做缓存预热就可以了 。在使用过程中,我们发现不同的计算集群资源的利用率差别很大,集群中有一些大带宽的机器,大部分时候都是用来做单节点的计算,这也就意味着机器的网络的资源基本上是没有怎么用到,而且还有一些闲置的磁盘,因此就在这些机器上去部署了缓存节点,把闲置的网络带宽给利用了起来 。最终使得我们在同一个集群中,实现了一个带宽非常大的缓存集群 。

经验总结扩展阅读