使用對象存儲、高性能存儲、Hadoop、Spark、Storm……等技術(shù)來存儲、處理和分析大數(shù)據(jù)很流行,然而海綿數(shù)據(jù)科技有限公司(以下簡稱“海綿數(shù)據(jù)”)說,這些技術(shù)各自為政,存在性能、管理、開發(fā)、成本等多方面的問題。
5月20日,海綿數(shù)據(jù)宣布推出其第二代大數(shù)據(jù)操作系統(tǒng)產(chǎn)品Sponge。海綿數(shù)據(jù)CEO朱曉明、VP崔斌、CTO李東及COO劉棟接受了CSDN記者的采訪,全面解析了Sponge的研發(fā)初衷、技術(shù)特點、適用場景、部署模式以及市場戰(zhàn)略等一系列的問題。
總體來說,Sponge是一個簡單多層,兼容完全POSIX兼容的分布式NFS、Hadoop,支持對象存儲、云存儲、SDS(軟件定義存儲)、容器機制,集成Spark為計算引擎,基于內(nèi)存計算技術(shù)的分布式系統(tǒng),將大數(shù)據(jù)的存儲、管理和計算有機融合,具有實時一致性,易于兼容現(xiàn)有系統(tǒng),相比10年前誕生的第一代產(chǎn)品Hadoop更加簡單易用,易于擴展。
三位高管表示,僅僅有作為計算平臺的Spark不足以全面應(yīng)對大數(shù)據(jù)的挑戰(zhàn),整合后的Sponge技術(shù)框架,能夠同時支持大數(shù)據(jù)、云存儲、結(jié)構(gòu)化、半結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)的處理,代表了大數(shù)據(jù)的發(fā)展方向。
需求&理念
Sponge的誕生源于三個理由。首先是大數(shù)據(jù)市場的剛需。今天已經(jīng)沒有人再懷疑大數(shù)據(jù)的價值,云計算、移動互聯(lián)、物聯(lián)網(wǎng)、機器學(xué)習(xí)、無人機等前沿技術(shù)的普及與大數(shù)據(jù)的發(fā)展相得益彰,不論在美國還是中國,大數(shù)據(jù)已經(jīng)在很多的IT企業(yè)和傳統(tǒng)企業(yè)開始落地,譬如互聯(lián)網(wǎng)金融公司的反欺詐流程,電信運營商的客戶服務(wù)分析,都貫穿著大數(shù)據(jù)和機器學(xué)習(xí)技術(shù)的應(yīng)用,這也刺激著初創(chuàng)企業(yè)在這個領(lǐng)域?qū)ふ倚碌纳虡I(yè)機會。
目前普遍被采用來應(yīng)對大數(shù)據(jù)的是開源軟件與廉價的x86服務(wù)器的組合,這些開源產(chǎn)品包括Hadoop、Spark、Storm、NoSQL等。傳統(tǒng)存儲和數(shù)據(jù)庫當(dāng)然也針對大數(shù)據(jù)的需求升級,用來存儲價值密度低的大量非結(jié)構(gòu)化數(shù)據(jù)卻不現(xiàn)實。這些原本被Google、Facebook、Yahoo等大公司驗證在某些場景很成功的開源項目,也存在問題:不同功能模塊對應(yīng)多個相互獨立的開源項目,為不同的目的而設(shè)計,其關(guān)系很復(fù)雜,缺乏通用性,系統(tǒng)部署和使用復(fù)雜而低效,二次開發(fā)困難,并且難以統(tǒng)一管理和監(jiān)控,維護成本高,所以,需要有一個統(tǒng)一的平臺。當(dāng)前風(fēng)頭正盛的Spark,被其粉絲認為是通用的大數(shù)據(jù)處理平臺,但李東認為,Spark只是一個計算平臺,并未涉及到如文件系統(tǒng)等底層的大數(shù)據(jù)核心技術(shù),不能算是我們需要的大數(shù)據(jù)操作系統(tǒng)。
在李東看來,第二代大數(shù)據(jù)操作系統(tǒng)和第一代產(chǎn)品的最本質(zhì)區(qū)別在于設(shè)計理念的不同,由此架構(gòu)和實現(xiàn)方法也不一樣。第一代的系統(tǒng)即使再打補丁,因為架構(gòu)的原因也存在無法添加的功能。海綿數(shù)據(jù)相信,隨著社交媒體、智能設(shè)備的普及,Hadoop在其誕生環(huán)境下自然采用的傳統(tǒng)批處理的方式,已經(jīng)跟不上現(xiàn)在的交互式處理、實時處理的需求,現(xiàn)在我們需要多樣化的處理方式,如果部署Hadoop就可能需要并行的兩套系統(tǒng)來提供兩種處理模式。另一方面,Hadoop版本眾多,現(xiàn)在就有1.0、1.1、2.0,生態(tài)系統(tǒng)項目的使用也不是一件簡單的事情。
此外,自主知識產(chǎn)權(quán)的需求同樣作用于大數(shù)據(jù)技術(shù)領(lǐng)域。朱曉明稱,大數(shù)據(jù)操作系統(tǒng)的準入門檻高,如文件系統(tǒng)這樣的核心技術(shù),即便是在美國,具有相關(guān)開發(fā)能力的團隊也不多,而海綿數(shù)據(jù)具有硅谷的研發(fā)團隊,其中不乏在硅谷20多年的專家,具有這個技術(shù)儲備。
簡單、高效、可靠、經(jīng)濟,這四個詞,是海綿數(shù)據(jù)對第二代大數(shù)據(jù)操作系統(tǒng)的價值的追求,以及Sponge產(chǎn)品設(shè)計的理念。
技術(shù)&產(chǎn)品
Sponge集成了現(xiàn)有開源技術(shù)的思想或者組件,但并不僅僅是一個簡單的打包,而是一套擁有20多項專利技術(shù)的技術(shù)。我們先來看它的架構(gòu)。Sponge追求簡單易用,并能夠整合多層,提供一個高性能的平臺,滿足不同層面的需求,技術(shù)架構(gòu)如下圖所示。
Sponge整體技術(shù)架構(gòu)
其設(shè)計要點如下:
存儲層整合高性能存儲、結(jié)構(gòu)和半結(jié)構(gòu)化數(shù)據(jù)處理、云對象存儲和軟件定義存儲層,采用統(tǒng)一的核心,各層都實現(xiàn)在同一個核心之上,實現(xiàn)高可擴展和整合多層。
分析層集成Spark作為計算引擎,包括核心API和其他附加庫如Streaming、Spark SQL、GraphX、MLlib等。
分布式NFS完全POSIX兼容,易于集成現(xiàn)有的系統(tǒng)、應(yīng)用和腳本。
實現(xiàn)Hadoop文件系統(tǒng)的接口,能夠兼容Hadoop生態(tài)系統(tǒng)(使用任何Hadoop版本都可以進行數(shù)據(jù)遷移)。
底層存儲架構(gòu)支持細粒度數(shù)據(jù)塊和CDR(持續(xù)數(shù)據(jù)復(fù)制)。
采用Masterless集群拓撲架構(gòu),解決單點故障和小文件數(shù)據(jù)的限制。
這里要說一下Masterless,也就是Sponge只有一種節(jié)點類型,沒有Hadoop那樣的Master和Slave之分,客戶端可以直接和Sponge節(jié)點通信,無需經(jīng)過Master。
Masterless結(jié)構(gòu)
這就帶來如下的優(yōu)勢:
所有的文件系統(tǒng)的metadata平均分配在每個節(jié)點,所以沒有單點故障和文件數(shù)據(jù)的限制,可以處理更多小文件。
節(jié)點之間沒有依賴關(guān)系,所有的服務(wù)都在單個節(jié)點,不需要其他獨立的集群協(xié)助。
沒有NameNode的限制,處理大并發(fā)性能更好。
此外,Sponge還是模塊化架構(gòu),這不限于分布式系統(tǒng)拓撲結(jié)構(gòu),單個實例也是由多個組件和多個服務(wù)組成的。
Sponge與Hadoop的對比
下面再展示一些具體的重要特性。
Sponge文件系統(tǒng)(SpongeFS)
不同于以往以磁盤計算技術(shù)為核心的文件系統(tǒng),SpongeFS將集群內(nèi)存管理提升成為文件系統(tǒng)的重要組成部分,以滿足大量文件數(shù)據(jù)讀寫IO的高需求。SpongeFS基于分布式設(shè)計,上文說的Masterless結(jié)構(gòu),以及模塊化架構(gòu),正是由SpongeFS來操盤的。
SpongeFS主要由集群管理層、文件管理層和存儲層構(gòu)成(詳見架構(gòu)圖)。當(dāng)數(shù)據(jù)進入SpongeFS,就被分成一個個數(shù)據(jù)塊,每個數(shù)據(jù)塊通過文件管理層先存入緩存層,被加入集群間復(fù)制隊列,一擊加入到持久隊列等待存入持久層,CDR則把持久層數(shù)據(jù)塊復(fù)制到目標集群(目標群數(shù)據(jù)塊也優(yōu)先存到緩存層)。
文件管理層的基本管理單位是Volume,每個Volume可以有不同的管理設(shè)置,如容錯性、安全性、物理資源的使用等。
緩存層提供高性能服務(wù)的關(guān)鍵。SpongeFS的緩存層由整個集群所有節(jié)點的緩存組成,共同協(xié)作完成IO操作,緩存層提供自動預(yù)加載功能,并通過Ejection內(nèi)存管理技術(shù),以Low和High為界限保證緩存空間快速、安全地重新分配。
SpongeFS緩存層
最后要說的是,SpongeFS的持久層使用“容器”提供文件數(shù)據(jù)管理服務(wù)。容器是虛擬的文件數(shù)據(jù)容器。一個容器就是SpongeFS集群里的一個邏輯組物理資源,它可以被 集群里的文件管理層使用。容器提供安全的機制來組織、管理、分析數(shù)據(jù)存儲資源,每個容器由一定數(shù)量的虛擬容器構(gòu)成平均分配在集群每個節(jié)點上(詳見Masterless結(jié)構(gòu)圖)。
SpongeFS采用容器提供高可用、動態(tài)重配置、分布式的數(shù)據(jù)存儲,在集群的節(jié)點發(fā)生故障時,允許集群自我修復(fù)并繼續(xù)提供服務(wù)。容器的主要的功能特性如下:
數(shù)據(jù)持久保存。數(shù)據(jù)異步從緩存層寫往持久層,防范服務(wù)重啟或較小的故障發(fā)生數(shù)據(jù)丟失。
副本管理。可以配置數(shù)據(jù)副本的份數(shù)。集群里的每個節(jié)汽既保存活躍的數(shù)據(jù),又保存數(shù)據(jù)副本。當(dāng)某個節(jié)點不可用,數(shù)據(jù)副本虛擬容器可以被提升為活躍的虛擬客器,從而繼續(xù)提供高可用服務(wù)。
重新組織。集群里的數(shù)據(jù)可以重新組織和分布,從而動態(tài)增加或刪除容器和服務(wù)器。
容積改變。可以在需要時動態(tài)調(diào)整容積容積大小。
文件系統(tǒng)實時一致性
Sponge FSCK是Sponge的文件系統(tǒng)實時一致性檢查技術(shù),通過在后臺運行的FSCK Deamon完成一致性檢查,任何對SpongeFS的修改,都會從各個節(jié)點通過一個輕量級的MapReduce引擎實時傳輸給FSCK Deamon匯總和及時檢測,支持完全和增量檢查,以提高性能,降低系統(tǒng)開銷。
李東介紹,F(xiàn)SCK結(jié)果查詢可以由用戶應(yīng)用程序查詢,Sponge同時有一個FSCK long running service,這個service進行結(jié)果查詢匯總。
CDR數(shù)據(jù)同步技術(shù)
CDR流程前文已經(jīng)說過,圖示如下。
CDR技術(shù)
與Hadoop的distcp(批處理過程)不同,CDR支持集群或數(shù)據(jù)中心之間接近實時的復(fù)制,并支持文件、文件夾、文件卷等不同的篩選規(guī)則,以及增量復(fù)制、斷點恢復(fù)、單向和雙向復(fù)制、內(nèi)存間復(fù)制等。
分布式NFS技術(shù)
SpongeFS支持實時隨機讀寫操作,所以Sponge的NFS是完全POSIX兼容的:
分布式NFS技術(shù)
每個節(jié)點都實現(xiàn)完全無狀態(tài)的Sponge文件系統(tǒng)NFS服務(wù)器,都可以被NFS客戶端mount。
每個NFS服務(wù)器運行在CNode上,作為CNode的一個服務(wù),客戶端的NFS請求通過CNode解釋稱對在存儲層的文件操作。
任何一個Sponge文件系統(tǒng)NFS服務(wù)器都可以和所有的節(jié)點通訊。
Sponge文件系統(tǒng)NFS服務(wù)器實現(xiàn)了NFSv3。
數(shù)據(jù)分析引擎
考慮到Java或Python的支持、shell中的交互式查詢、SQL查詢、流數(shù)據(jù)、圖表數(shù)據(jù)處理和機器學(xué)習(xí)等,Sponge選擇了Spark作為分析引擎,Spark在這些領(lǐng)域表現(xiàn)出色,同時架構(gòu)和Sponge的底層存儲架構(gòu)也非常相似。這里只說Sponge對Spark的“加持”作用:
Spark在從Sponge文件系統(tǒng)讀寫文件時,從內(nèi)存中讀取,減少磁盤IO。
Sponge幫助Spark通過在數(shù)據(jù)處理過程中成本更低的洗脾(Shuffle)方式,在mapper和reducer之間建立流通道,提升Spark性能。
利用Sponge內(nèi)存數(shù)據(jù)存儲和接近實時的處理能力提升Spark大數(shù)據(jù)處理性能。
數(shù)據(jù)分析引擎
軟件定義存儲
Sponge的集群管理層是和存儲層分離的,而存儲層是由集群管理層進行管理。在存儲層,Sponge采用Kinetic存儲技術(shù)來實況SDS。
軟件定義存儲
Sponge SDS做了以下工作:
數(shù)據(jù)存儲。Sponge文件系統(tǒng)在持久層實現(xiàn)了和Kinetic接口的集成,數(shù)據(jù)通過Sponge 文件系統(tǒng)經(jīng)過TCP/IP網(wǎng)絡(luò)中以KV的方式存入Kinetic。
集群管理。Sponge集群管理負責(zé)管理Kinetic Farm,包括加減Kinetic,數(shù)據(jù)reblance,Kinetic failover。由于Kinetic Farm的管理是和節(jié)點是分離的,所Kinetic Farm的擴展性和Sponge節(jié)點的擴展也是分離的,增減Kinetic不需要增減Sponge節(jié)點。
多租戶。Sponge文件系統(tǒng)負責(zé)多用戶管理,為用尸提供Quota管理,備份,Snapshot。
Sponge文件系統(tǒng)的其它功能都可以提供給SDS用戶,如CDR(持續(xù)數(shù)據(jù)復(fù)制),高性能分析等。
支持對象存儲協(xié)議Swift
支持對象存儲協(xié)議Swift是Sponge后續(xù)版本的功能。Sponge在存儲層把云存儲和大數(shù)據(jù)存儲結(jié)合,不需要多余的ETL,存儲空間、網(wǎng)絡(luò)帶寬,通過Sponge對象存儲存入到Sponge的數(shù)據(jù),可以直接用來做各種工作。
Sponge在CNode內(nèi)部實現(xiàn)Swift接口,數(shù)據(jù)通過swift存入到Sponge文件系統(tǒng)可以以NFS的方式獲取,反之亦然。
由以上介紹可以看到,Sponge是一套簡單多層的系統(tǒng),同時提供豐富的功能和擴展性,并兼容現(xiàn)有的技術(shù),李東在答記者問的時候明確表示,Sponge的各個組件是松耦合的,也就是說,這些功能可以有單獨提供的可能性,以滿足用戶的個性化需求。
根據(jù)海綿數(shù)據(jù)的介紹,Sponge對部署環(huán)境沒有特別的需求,而Masterless的集群拓撲結(jié)構(gòu)還使得它需要的節(jié)點數(shù)據(jù)更少,這意味著更少的投資門檻。Sponge還可以與當(dāng)前熱門的容器技術(shù)及虛擬機技術(shù)配合使用,支持兩種方式:Sponge可以部署在容器或虛擬機里,同時SpongeFS也可以被容器或虛擬機所使用。
此外,Sponge不需要另起爐灶推出一套自己的編程框架,這樣的好處是開發(fā)人員不需要再掌握另外的編程技術(shù)。
戰(zhàn)略&生態(tài)
海綿數(shù)據(jù)對自身的定位是一個技術(shù)驅(qū)動的公司,只專注于大數(shù)據(jù)操作系統(tǒng),上層的開發(fā)有合作伙伴來提供。未來,Sponge還會支持和更多公有云的集成。
海綿數(shù)據(jù)強調(diào)了Sponge的路線:開放,但不開源。朱曉明表示,開源是技術(shù)而不是產(chǎn)品,開源社區(qū)的規(guī)范管理旨在推動技術(shù)發(fā)展而不是技術(shù)產(chǎn)品化,但企業(yè)真正需要的是產(chǎn)品。所以,Sponge會開放API提供給二次開發(fā)者,讓他們做各類行業(yè)的數(shù)據(jù)挖掘、數(shù)據(jù)分析等應(yīng)用。朱曉明表示,在智慧城市、智慧金融、物聯(lián)網(wǎng)、智能穿戴等應(yīng)用場景,都有Sponge的用武之地。
朱曉明介紹,Sponge在美國和中國市場都已經(jīng)有用戶試用。一家美國硬盤巨頭已經(jīng)在生產(chǎn)環(huán)境中測試Sponge;而中國某大型視頻監(jiān)控企業(yè),使用Hadoop一年多仍然存在很多問題沒有解決,反而試用Sponge系統(tǒng)獲得了超乎想象的性能和吞吐量。
中國和美國兩大大數(shù)據(jù)市場都是海綿數(shù)據(jù)的目標,不過,海綿數(shù)據(jù)已經(jīng)注銷了美國公司,未來將以中國的大數(shù)據(jù)市場為業(yè)務(wù)重心。當(dāng)然,從今年下半年年底到明年年初,海綿數(shù)據(jù)也會布局美國的市場。而在中國的技術(shù)推廣和生態(tài)建設(shè),海綿數(shù)據(jù)已經(jīng)開始高校的免費試用,產(chǎn)業(yè)聯(lián)盟/產(chǎn)業(yè)基地會是未來的一個重點。
補充問題:文件系統(tǒng)是Sponge的一項核心技術(shù),是否可以把SpongeFS和分布式內(nèi)存文件系統(tǒng)做一下Tachyon比較?
李東:Tachyon和Sponge都提供了一個In-Memory的分布式存儲系統(tǒng),這一點是類似的。二者主要的三個不同點如下:
Tachyon 是Hadoop compatible的,Sponge不但是Hadoop compatible的,而且是POSIX compatible的。意思是說用戶可以把Sponge的文件系統(tǒng)mount到本地,像local文件系統(tǒng)一樣使用。但是如果用戶要access在Tachyon里面的數(shù)據(jù),則需要使用Tachyon提供的API或者特殊CLI指令,很不方便。
Tachyon往往無法獨立使用,因為它沒有自己的persist文件系統(tǒng),需要plug-in第三方文件系統(tǒng)比如HDFS,這樣用戶又要多管理一個系統(tǒng)。而Sponge的分布式內(nèi)存系統(tǒng)和分布式persist系統(tǒng)是緊密結(jié)合的一個整體。
Tachyon的HA(High availability)需要Zookeeper的支持,這意味著用戶又要多安裝和管理一個Zookeeper集群,管理成本和出錯可能性也隨之增加。而Sponge的HA是本身就提供的,不需要任何第三方軟硬件支持。
Tachyon可能的一個優(yōu)點是對于Spark的RDD off-heap存儲的支持。我們也考慮過提供同樣的接口給Spark使用,讓Spark把Sponge當(dāng)做Tachyon一樣來用。 目前我們暫時沒有把提供這個任務(wù)作為重點,主要原因是,Spark目前對于Tachyon off-heap的存儲還在實驗階段,并且不是對所有 workload都有performance提高。