1. 程式人生 > >Alluxio原理和應用場景隨筆

Alluxio原理和應用場景隨筆

    上週末有幸參加了Alluxio(之前也叫Tachyon),七牛雲和示說網舉辦的Alluxio上海Meetup,之前我並沒有在真實應用場景中使用過Alluxio,對其適用的應用場景一直報懷疑態度。自信聆聽其創始人的演講之後,感覺這個專案還挺有意思,對Alluxio簡單總結一下:

  • DAL(資料訪問層)

Alluxio DAL

    Alluxio提供了各種檔案訪問API,包括相容HDFS的API,Alluxio特有的資料訪問API,Rest API和FUSE API,特別是FUSE API,支援POSIX標準的檔案訪問介面,讓很多單機版的程式(如TensorFlow),可以享受大資料和雲端的資料存取。不過它並不支援隨機的檔案寫訪問,想想也合理,畢竟底層檔案儲存系統可能是HDFS或者S3;

  • 統一資料訪問

    依然如上圖,Alluxio底層的儲存系統可以是亞馬遜的S3,Google的儲存,阿里雲OSS,也可以是HDFS,甚至是單機的SAS,NFS。讓這些檔案系統都可以無縫與現有的大資料平臺(通過HDFS Compatible API),或者單機版軟體(通過FUSE API)完全相容。

  • 透明的檔案快取抽象

    高效訪問資料的時候,如何做好檔案快取,其實對應應用程式開發者而言,有時候出於效能的考慮是非常重要的,Alluxio提供了透明的快取方案,讓記憶體(DRAM),本地快速儲存器(SSD),本地慢速儲存器(HDD)以及雲端儲存(HDFS/OSS/S3)等,形成一個層次化的快取機制,讓熱的資料儘可能接近快速訪問裝置,這個對於深度學習和其它反覆迭代訪問資料的模型而言,效能的提升就不言而喻了。

 

那麼Alluxio的主要應用場景有哪些呢?

  1. 基於SAS平臺單機應用,想無縫擴容,可以考慮用Alluxio的FUSE API,底層用HDFS或者其它雲端儲存。
  2. 基於HDFS的分散式應用,想訪問單機或者NFS的裝置上的檔案,可以考慮用HDFS Compatiable API。
  3. 反覆迭代讀取遠端(比如雲端,跨資料中心,跨叢集,也可以是超大HDFS叢集中加速某個應用的資料訪問)資料,可以部署Alluxio

Alluxio應用場景在傳統的小型叢集中可能碰不太到,但是越來越多的應用都是混合雲的情況,特別是資料和計算分離的場景,異構的資料儲存帶來的系統耦合,都可以通過Alluxio來解耦,不過目前Alluxio也有自身的一些問題,多個副本可能同時存在多個Alluxio個節點上,造成了事實上的資料快取浪費,2.0版本中可能會有所更新。

不過最有意思的,來自與Alluxio初創成員講分散式系統設計中的坑,不完全是針對Alluxio的,而是開發Alluxio類似這種大型分散式系統,肯能碰到的經驗和收穫,包括netty的資源洩露問題,jvm的問題等等,更多細節可以看看示說網Alluxio 2.0 Overview分享。