在解決規模化數據分析問題方面,很少有人在能力上可以與超大規模基礎設施運營商相抗衡。也正因為如此,當初由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模型。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訓練領域的存儲生態將會更加豐富多彩。