完美的AI存储方案在哪里:Facebook TRINO加上Netflix Iceberg

当初由Facebook(现在的Meta Platforms)和Netflix开发的技术组合,才很可能最终成为支持AI训练及其他应用“智能湖仓”的完美方案。

在解决规模化数据分析问题方面,很少有人在能力上可以与超大规模基础设施运营商相抗衡。也正因为如此,当初由Facebook(现在的Meta Platforms)和Netflix开发的技术组合,才很可能最终成为支持AI训练及其他应用“智能湖仓”的完美方案。

毫不奇怪,任何在构建高性能全闪存存储阵列、或者常用于HPC模拟/建模类应用的并行文件系统方面拥有从业经验的人都很清楚,这些设备正是存储大量数据、支撑AI神经网络训练的最佳选择。

而各大云巨头——特别是亚马逊云科技、微软Azure以及Google Cloud——都拥有自己的对象和文件存储系统,也在呼吁更多人选择它们来存储用于AI训练的原始数据;另外还有Snowflake,作为以SQL接口为主要卖点的云数据仓库宠儿,他们也在AI训练领域的存储市场上占据了一定的业务份额。

但必须强调的是,这些方案都不以开放见长,在本质上也不具备混合属性。具体来讲,它们与大家过去四十年间采购过的任何其他存储类型一样,都有着极强的专有性。我们并不是要反对专有技术,但其确实会限制自由度;而且跟开源工具相比,专有工具的易用性几乎总是跟成本直接挂钩。

总而言之,使用者必须付出代价。

最好的答案可能是构建大量闪存阵列,或者是从Pure Storage、Vast Data、戴尔科技或者其他OEM厂商处采购,再使用Trino及Iceberg组合进行加载。这两者都属于开源项目,也都能被加载至任何云环境的闪存实例之上。

Trino之前曾被称为PrestoSQL,是Facebook Presto项目的几个分支之一,项目最早可以追溯至2012年。Presto是一套本机分布式SQL引擎,旨在直接访问Hadoop分布式文件系统(HDFS)中存储的数据,顺应的正好是MapReduce数据分析时代风靡一时的“大数据”概念。Presto由Java语言编写而成,属于Hive SQL到MapReduce转换器的替代方案,并于2008年由Facebook推向开源,负责为存储在HDFS中的非结构化数据提供SQL查询功能。当初开放Presto时,Facebook表示其速度相当于Hive的10到15倍,这对任何需要将SQL引入HDFS的用户来说都不啻为一种福音。

PrestoDB的优点,在于它不仅不依赖于HDFS,甚至不依赖于任何特定的数据库、数据存储或者文件系统。它实际上只是一个SQL抽象层,可以指向任何内容并用于查询任何内容——也就是一个面向多种互不兼容的数据源的联合层。围绕PrestoDB也曾出现过不少利益争斗,最终只留下两家试图推动PrestoDB商业化的公司:其一是Ahana,其二则是Starburst。

Ahana在几年间自行探索,推动了联合数据库的相关尝试,并最终于2023年4月被IBM收购。Starburst公司的联合创始团队中有多位来自Facebook Presto项目组的成员,这家公司也已经通过四轮风险融资筹得4.14亿美元。其产品主要针对Snowflake用户,经常暗示这部分消费者支出太多、得到的却太少,而且是将自主权拱手交给了他人的数据仓库。Starburst方面曾在采访中公开表示,其目标是“实现无需数据仓库的数据分析”,也就是直接查询数据所在位置、将结果纳入缓存。这样对于匹配这套系统的应用程序来说,缓存本身就相当于一套SQL数据库。

这不禁让我们想到Iceberg与Trino之间的爱恨纠葛,特别是随着AI客户努力为AI训练数据寻求更好的存储和访问方案,Starburst将这二者相结合推出的商业级技术成果已经获得了市场的良好认可。

Iceberg出自影视流媒体巨头Netflix之手,目的是取代Hive、Presto和Spark中内置的特殊表布局。在2017年初诞生之时,Iceberg希望提供统一的表格式,以保证与其他数据分析工具顺畅对接。就在Netflix公布后不久,该项目就通过Apache软件基金会完成了开源。现如今,Adobe、Airbnb、苹果、花旗银行、第一资本、Expedia、谷歌、LinkedIn、Lyft、Netflix、Pinterest以及Strpie等知名企业都在使用Iceberg。有趣的是,Iceberg的立足重点在于提供一种表文件格式,能够在不借助Hive、Presto及Spark等查询层的前提下直接使用SQL进行查询。

然而事实证明,Iceberg还能够对存储在HDFS或S3中的对象集合以及/或者以Parquet、Avro或Orc格式存储的文件集合进行抽象,这也使其成为Presto这类SQL查询引擎的理想伴侣。Iceberg将各种可通过SQL直接查询的数据制成逻辑表,且拥有关系数据库的ACID属性;另一边,Presto只是一套查询引擎,并不具备自己的原生存储格式。但如果大家希望构建较为传统的数据仓库,那么Trino加Iceberg的组合也相当不错。

最近,我们一直在询问很多存储供应商,应该使用什么样的存储来支撑AI训练类应用。针对这个问题,他们给出了不同的答案——首先是相当热门的向量数据库与图数据库,此外还有常见于超大规模应用的Parquet与Avro文件存储。在我们看来,对于拥有数千甚至几万个数据库表、用于支撑成百上千种应用软件的企业客户来说,一个能够在联合数据库上运行的高级SQL驱动接口无疑非常重要。这才是真正符合企业级AI训练应用的解决方案。另外我们还认为,客户需要较低级别的访问来提高速度和性能——可能类似于Parquet。使用SQL从来源处提取数据会产生性能损失,而优点就是简单易用。

Starburst公司首席执行官Justin Borgman在采访中表示,“我们Starburst也正是秉承着这样的理念,希望将Trino与Iceberg合并起来。我们希望以此为基础明确自身在AI领域所扮演的角色,希望成为访问层、希望为客户提供模型训练所必需的数据。模型的质量直接取决于相应的训练数据。我们发现,特别是在企业客户群体当中,大家更希望利用自有数据开展模型训练。从他们的角度出发,ChatGPT只是个噱头——他们必须使用自己拥有的专有数据来训练模型,而这些数据往往处于大型数据湖或者纷繁复杂的数据源当中。而我们可以访问这一切,所以能够帮助他们获取推进AI项目所需要的数据资源。”

完美的AI存储方案在哪里:Facebook TRINO加上Netflix Iceberg

其中另有一项诀窍,就是必须谨慎选择训练数据。企业客户既需要充足的训练数据,又不必尝试从每个关系数据源中提取全部数据以基于特定任务训练AI模型。Borgman表示,在这种情况下,使用SQL接口进行数据过滤实际上效果拔群。

此外,事实也证明Iceberg已经成为众多企业的首选格式。也就是说如果大家希望保留数据以供后续快速AI训练,则可以使用Trino提取数据并将结果存储成Iceberg表的形式。

为此,Starbrust正在打造自己的Icehouse发行版,尝试将Trino(实际是其商业版本,名为Galaxy)与Iceberg结合起来,并直接由Starburst对这套组合提供支持。Galaxy是一套完整的数据智能湖仓实现,其中包含Warp Speed索引与缓存层,外加其他新增安全与性能设计。

有趣的是:就连Snowflake自己也开始在其云数据仓库当中支持Iceberg,基本理由也大致相同。但此举可能会产生意想不到的后果。

Borgman解释道,“Snowflake实际上已经开始关注Iceberg,并表示将提供查询这种外部表的能力。而我们看到的变化过程大致是这样的:他们的现有客户基本上都希望能转向Icerberg,想要用这种方式摆脱供应商锁定。我们当然乐见其成,因为这意味着他们将拥有更多新的分析选项,也给我们的产品推广带来了新的机会。”

Borgman还提到,使用Trino加Iceberg构建数据智能湖仓的成本,只相当于使用Snowflake的十分之一到二分之一。

对于希望在Iceberg中获得商业级支持的客户,Netflix Iceberg项目的缔造者Ryan Blue和Dan Weeks专门创办了一家名叫Tabular的公司。这家公司目前拥有几十名员工,专注于数据摄取、表维护和基于角色的访问控制等Iceberg功能。相比之下,拥有500多名员工的Starburst明显体量更大,业务范围也同样涵盖SQL引擎以及Iceberg。

未来,Starburst也许会收购Tabular以整合这波技术合并努力。但只要Blue和Weeks还能依靠销售包含技术支持的Iceberg版本自给自足,就没有理由接受这样的收购要约。而且如果有两家公司同时为Iceberg提供支持,项目的风险也将被摊薄。没准Tabular还会尝试在其Iceberg发行版之上提供Trino支持层,那样AI训练领域的存储生态将会更加丰富多彩。

来源:至顶网存储频道

0赞

好文章,需要你的鼓励

2024

05/07

14:58

分享

点赞

邮件订阅