1. ALLUXIO的應(yīng)用場景
由于Alluxio的設(shè)計以內(nèi)存為中心,并且是數(shù)據(jù)訪問的中心,所以Alluxio在大數(shù)據(jù)生態(tài)圈里占有獨特地位,它居于大數(shù)據(jù)存儲(如:Amazon S3,Apache HDFS和OpenStack Swift等和大數(shù)據(jù)計算框架(如Spark,Hadoop Mapreduce)之間。對于用戶應(yīng)用和計算框架,無論其是否運行在相同的計算引擎之上,Alluxio都可以作為底層來支持?jǐn)?shù)據(jù)的 訪問、快速存儲,以及多任務(wù)的數(shù)據(jù)共享和本地化。因此,Alluxio可以為那些大數(shù)據(jù)應(yīng)用提供一個數(shù)量級的加速,同時它還提供了通用的數(shù)據(jù)訪問接口。對于底層存儲系統(tǒng), Alluxio連接了大數(shù)據(jù)應(yīng)用和傳統(tǒng)存儲系統(tǒng)之間的間隔,并且重新定義了一組面向數(shù)據(jù)使用的工作負(fù)載程序。因Alluxio對應(yīng)用屏蔽了底層存儲系統(tǒng)的整合細(xì)節(jié),所以任何底層 存儲系統(tǒng)都可以支撐運行在Alluxio之上的應(yīng)用和框架。此外Alluxio可以掛載多種底層存儲系統(tǒng),所以它可以作為統(tǒng)一層為任意數(shù)量的不同數(shù)據(jù)源提供服務(wù)。
技術(shù)創(chuàng)新
Alluxio 將三個關(guān)鍵的創(chuàng)新領(lǐng)域結(jié)合在一起,提供了一套獨特的功能。
- 全局命名空間:Alluxio 能夠?qū)Χ鄠€獨立存儲系統(tǒng)提供單點訪問,無論這些存儲系統(tǒng)的物理位置在何處。這提供了所有數(shù)據(jù)源的統(tǒng)一視圖和應(yīng)用程序的標(biāo)準(zhǔn)接口。有關(guān)詳細(xì)信息,請參閱命名空間管理。
- 智能緩存:Alluxio 集群能夠充當(dāng)?shù)讓哟鎯ο到y(tǒng)中數(shù)據(jù)的讀寫緩存。可配置自動優(yōu)化數(shù)據(jù)放置策略,以實現(xiàn)跨內(nèi)存和磁盤(SSD/HDD)的性能和可靠性。緩存對用戶是透明的,使用緩沖來保持與持久存儲的一致性。有關(guān)詳細(xì)信息,請參閱 Alluxio 存儲管理。
- 服務(wù)器端 API 轉(zhuǎn)換:Alluxio 能夠透明地從標(biāo)準(zhǔn)客戶端接口轉(zhuǎn)換到任何存儲接口。Alluxio 負(fù)責(zé)管理應(yīng)用程序和文件或?qū)ο蟠鎯χg的通信,從而消除了對復(fù)雜系統(tǒng)進(jìn)行配置和管理的需求。文件數(shù)據(jù)可以看起來像對象數(shù)據(jù),反之亦然。
ALLUXIO的組件
Alluxio的設(shè)計使用了單Master和多Worker的架構(gòu)。從高層的概念理解,Alluxio可以被分為三個部分,Master,Worker和Client。 Master和Worker一起組成了Alluxio的服務(wù)端,它們是系統(tǒng)管理員維護(hù)和管理的組件。Client通常是應(yīng)用程序,如Spark或MapReduce作業(yè),或者Alluxio的命令行用戶。 Alluxio用戶一般只與Alluxio的Client組件進(jìn)行交互。
MASTER
Alluxio Master有主從兩種模式。
主MASTER
主Master主要負(fù)責(zé)處理全局的系統(tǒng)元數(shù)據(jù),例如,文件系統(tǒng)樹。Client可以通過與Master的交互來讀取或修改元數(shù)據(jù)。此外所有的Worker會周期性地發(fā)送心跳給主Master, 來確保它們還參與在Alluxio集群中。主Master不會主動發(fā)起與其他組件的通信,它只是以回復(fù)請求的方式與其他組件進(jìn)行通信。一個Alluxio集群只有一個主Master。
從MASTER
從Master不斷的讀取并處理主Master寫的日志。同時從Master會周期性的把所有的狀態(tài)寫入日志。從Master不處理任何請求。
MASTER部署
Alluxio Master有簡單和高可用性 兩種部署模式。這兩種模式都只有一個主Master。簡單模式最多只會有一個從Master,而且這個從Master不會被轉(zhuǎn)換為主Maste。高可用性模式可以有零個或者多個從Master。 當(dāng)主Master異常的時候,系統(tǒng)會選一個從Master擔(dān)任新的主Master。
WORKER
Alluxio的Worker負(fù)責(zé)管理分配給Alluxio的本地資源。這些資源可以是本地內(nèi)存,SDD或者硬盤,其可以由用戶配置。 Alluxio的Worker以塊的形式存儲數(shù)據(jù),并通過讀或創(chuàng)建數(shù)據(jù)塊的方式處理來自Client讀寫數(shù)據(jù)的請求。但Worker只負(fù)責(zé)這些數(shù)據(jù)塊上的數(shù)據(jù);文件到塊的實際映 射只會存儲在Master上。
CLIENT
Alluxio的Client為用戶提供了一個與Alluxio服務(wù)端交互的入口。它為用戶暴露了一組文件系統(tǒng)API。Client通過發(fā)起與Master 的通信來執(zhí)行元數(shù)據(jù)操作,并且通過與Worker通信來讀取Alluxio上的數(shù)據(jù)或者向Alluxio上寫數(shù)據(jù)。存儲在底層存儲系統(tǒng)上而不是Alluxio上的數(shù)據(jù)可以直接通過 底層存儲客戶端訪問。