1、前言
我們有了解分布式檔案系統(HDFS)、分布式計算(如Spark),但是肯定有許多小夥伴未曾了解過 Alluxio,當然我也未曾深入了解,那麼,今天,我們就一起初步了解下 Alluxio。
它是什麼?它能用在哪裡?它的特性是什麼?以及它是怎樣工作的?
2、Alluxio是什麼?
李浩源 的博士論文Alluxio:虛拟分布式檔案系統。
2.1 以記憶體為中心的虛拟分布式存儲系統
2.2 處于存儲和計算之間的系統
- 以記憶體為中心 - 在處理遠端存儲系統時,讀/寫吞吐量通常受網絡和磁盤速度限制在100 Mbps到10 Gbps。但是,對于RAM,吞吐量可以達到10到100 Gbps。理想情況下,Alluxio與應用程式位于同一位置,在許多情況下,這些應用程式允許直接在本地記憶體上執行讀取和寫入操作。我們說 'centric' 是因為您還可以在Alluxio層使用SSD和HDD以及分層存儲功能。
- Virtual - Alluxio提供單個檔案系統命名空間(alluxio://),你可以通過該命名空間通路各種底層存儲系統。應用程式隻需要與Alluxio通信,然後Alluxio與已安裝到其上的其他檔案系統進行通信。它還可以根據使用者配置透明地将資料儲存到存儲下。
- 分布式 - Alluxio設計用于商用硬體,易于擴充。對于獨立部署或多節點群集,資料分布在已配置設定給它的所有本地存儲中。Alluxio為節點提供了執行 read/writes 的架構,而計算架構確定了良好的資料 locality 。
3、Alluxio能在哪裡用?
Alluxio在大資料生态系統中占有獨特的地位,存在于Amazon S3,Google雲存儲,EMC ECS,Apache HDFS或OpenStack Swift等存儲系統以及Apache Spark或Hadoop MapReduce等計算架構和應用程式之間。
它管理資料通路和快速存儲,促進作業之間的資料共享和位置,無論它們是否使用相同的計算引擎運作。結果是大資料應用程式的性能顯着提高,同時為資料通路提供了通用接口。
Alluxio還彌補了大資料應用程式與各種存儲系統之間的差距。由于Alluxio從應用程式中抽象出存儲系統的內建,是以任何底層存儲都可以支援在Alluxio上運作的所有應用程式和架構。再加上安裝多個存儲系統的能力,Alluxio可以作為任意數量的各種資料源的統一層。
4、Alluxio是如何工作的?
Alluxio可以部署在單個主機或多節點群集上。
Alluxio的理想部署是将勞工(我們将進一步覆寫的概念)與應用程式放在一起。這使應用程式可以直接通路記憶體中的資料。
為了解釋Alluxio如何工作,讓我們來看一下讀取檔案操作。有了Alluxio,所有應用程式需要做的就是調用 read方法:
read(alluxio://<path>)
應用程式隻需要獲得資料的内容,而不是它的來源。但在引擎中會發生更多的事情。
(1)如果檔案在Alluxio中并且在本地可用,則可以以記憶體速度讀取。
(2)如果它在Alluxio中,但在不同的節點上,用戶端會對該節點上的Alluxio工作者進行遠端調用,并且必須以本地網絡的速度讀取資料。
(3)如果檔案根本不在Alluxio中,Alluxio會透明地确定存儲位置并取出它; 一旦加載,它将保持可重用。
注意:應用程式的任何輸出都可以同步寫入Alluxio,存儲之下或兩者,具體是取決于使用者的配置。
為了實作上述功能,涉及幾個元件,即主伺服器,工作伺服器和客戶機。
- Master - Alluxio master是負責管理系統全局中繼資料的過程,例如檔案系統樹。用戶端與主伺服器互動以讀取或修改此中繼資料。此外,所有從業人員定期向主人發出心跳,以維持他們對叢集的參與。主裝置不會啟動與其他元件的通信; 它隻通過響應請求與其他元件互動。
Alluxio可以部署在兩種主模式之一,單主模式或容錯模式。
- Workers - Alluxio從業人員負責管理配置設定給Alluxio的本地資源。這些資源可以是本地記憶體,SSD和/或硬碟。Alluxio從業人員将資料存儲為塊并提供來自用戶端的讀/寫請求。但是,從業人員隻負責這些塊中的資料; 從檔案到塊的實際映射存儲在主伺服器中。
Alluxio的理想部署是将從業人員與應用程式放在一起的部署。這使應用程式可以直接通路記憶體中的資料。
- Clients - Alluxio用戶端為使用者提供了一個通過檔案系統API與Alluxio伺服器互動的網關。它啟動與主裝置的通信以執行中繼資料操作,并與從業人員在Alluxio中讀取和寫入資料。存儲在底層存儲中但在Alluxio中不可用的資料可通過底層存儲用戶端直接通路。
5、Alluxio有哪些特點?
由于Alluxio位于現有存儲解決方案之上,是以無需資料遷移和最少的代碼更改,是以可輕松插入。功能文檔跳轉連結如下
- Alluxio存儲 - Alluxio 可以管理記憶體和本地存儲,如SSD和HDD,以加速資料通路。如果需要更細粒度的控制,分層存儲功能可用于自動管理不同層之間的資料,進而将熱資料保持在更快的層中。自定義政策易于插拔,引腳概念允許直接使用者控制。
- 可插拔存儲 - Alluxio将記憶體資料儲存到底層存儲系統。當使用多個存儲系統時,這可以實作容錯和有效的資料管理。支援流行的存儲後端,包括Amazon S3,Google雲端存儲,OpenStack Swift,Apache HDFS,GlusterFS和阿裡巴巴OSS。
- 靈活的檔案API - 我們的Alluxio Filesystem API類似于java.io.File類,提供InputStream和OutputStream接口以及對記憶體映射I / O的有效支援。我們建議使用此API以獲得最佳性能。或者,我們提供Hadoop相容接口,允許現有的Hadoop MapReduce和Spark程式使用Alluxio代替HDFS而無需更改任何代碼。
- Web UI和CLI - 使用者可以通過Web UI輕松浏覽檔案系統。在調試模式下,管理者可以檢視每個檔案的詳細資訊,例如塊位置和存儲路徑。使用者還可以使用
指令行用戶端與Alluxio進行互動; 例如,從Alluxio複制資料。./bin/alluxio fs
6、入門
對于不熟悉Alluxio的小夥伴,可以在本地 安裝 Alluxio。
有關其他安裝方法,請通路我們的文檔,了解如何使用Alluxio Manager安裝Alluxio或安裝不帶Alluxio Manager的Alluxio。
7、參考
https://github.com/Alluxio/alluxio