Alluxio 1.5.0開源發布版的技術亮點
開源Alluxio 1.5.0已經發布了大量的新功能和改進。Alluxio允許任何應用程序以內存級速度且透明地從任何存儲係統訪問數據。與生態係統中的其他技術的互操作性是實現這一目標的重要一步,在1.5.0版本中,我們從以下幾個關鍵方麵改進了Alluxio的可訪問性。
- Alluxio Docker集成
- Alluxio Golang Client
- 使用S3A在Ceph上部署Allluxio
- 掛載特定配置屬性
1.Alluxio Docker集成
Alluxio 1.5.0添加了文檔和腳本,以便在Docker容器中運行Alluxio。可以使用-e參數傳遞Alluxio配置參數,並將日誌寫入stdout,以便它們顯示在docker日誌的輸出中。下麵的例子演示了如何在HDFS上通過Docker容器運行Alluxio。
cd alluxio-1.5.0/integration/docker
docker build -t alluxio .
docker run -d --net=host \
-e ALLUXIO_UNDERFS_ADDRESS=hdfs://HdfsMaster:9000/ \
alluxio master
docker run -d --net=host --shm-size=10GB \
-e ALLUXIO_MASTER_HOSTNAME=AlluxioMaster \
-e ALLUXIO_WORKER_MEMORY_SIZE=10GB \
-e ALLUXIO_UNDERFS_ADDRESS=hdfs://HdfsMaster:9000/ \
alluxio worker
在EC2實例上通過Docker容器運行Alluxio的相關教程, 請參閱文檔
2.Alluxio Golang Client
此前,Alluxio推出了一個代理進程,默認情況下與每一個Alluxio Master和Worker一起運行,並且提供了REST API,相當於Alluxio本地文件係統API。為了能基於REST API與Alluxio進行交互,在1.5.0版本中,Alluxio推出了GO Client。該客戶端可從其自身的Repository中獲取,通過“go get”機製導入用戶程序中。
除了提供在GO環境下與Allluxio通信外,該客戶端的實現也體現了基於REST API實現一種語言綁定Alluxio是十分容易的。
注意通過REST API與Alluxio通信需要額外的網路跳數和(或)內存副本,因此預期其性能不如原生Java客戶端。另一方麵,基於REST API的客戶端都將從任何本地java客戶端的改進中受益,意味著GO Client 與其他針對REST API開發的客戶端將始終具有最新特性。
下麵的例子演示了使用GO程序與Alluxio交互:
package main
import (
"fmt"
"log"
alluxio "github.com/Alluxio/alluxio-go"
"github.com/Alluxio/alluxio-go/option"
)
func main() {
fs := alluxio.NewClient(<proxy-host>, <proxy-port>, <timeout>)
ok, err := fs.Exists(<path>, &option.Exists{})
if err != nil {
log.Fatal(err)
}
fmt.Println(“path %v exists: %v”, <path>, ok)
}
3.使用S3A在Ceph上部署Allluxio
在1.5.0版本中,Alluxio可以使用S3A連接器連接到Ceph。相較於Swift連接器,S3A連接器提供了顯著的功能和性能改進。
如下圖所示,當讀取1 GB大小的文件時,S3A連接器的讀取性能可提高3倍。
4.掛載特定配置屬性
使用Alluxio的一個重要優勢是將不同的底層文件係統(如S3,HDFS,GCS等)映射到一個統一的Alluxio命名空間,與在本地文件係統上設備類似,每個文件係統都位於隔離的掛載點下。從1.5.0版本開始,除了遵守特定類型的存儲係統的全局配置設置外,Alluxio還支持為每一個掛載點設置(各自的)配置屬性。配置且掛載不同底層文件係統後,訪問這些係統對於Alluxio文件係統應用來說是完全透明的。因此,Alluxio可以幫助係統管理員隱藏複雜性並且降低管理難度。
舉例說明,用戶Alice在AWS上有多個S3 bucket,她需要從不同的bucket中訪問數據。原來Alice隻能將共享同一係統認證密鑰的S3 bucket掛載到Alluxio中,而現在Alice可以使用單獨的認證密鑰掛載每個bucket,如下所示:
$ bin/alluxio fs mount /mnt1 s3a://alice-bucket1/ --option aws.accessKeyId=<accessKey1> --option aws.secretKey=<secretKey1>
$ bin/alluxio fs mount /mnt2 s3a://alice-bucket2/ --option aws.accessKeyId=<accessKey2> --option aws.secretKey=<secretKey2>
此後,所有認證的Alluxio用戶可以自由訪問 /mnt1 和 /mnt2,甚至沒有注意到它們來自兩個不同的桶,並使用不同的認證密鑰進行訪問。
5.更多
本博客僅強調了Alluxio 1.5.0中的一些新功能和改進。 更詳細的內容,請查看發行說明。
您可以按照快速入門指南,輕鬆開始使用Alluxio開源版或社區版。
版權申明:本文由南京大學顧榮等專家翻譯整理自Alluxio公司技術博客,由Alluxio公司授權雲棲社區及CSDN首發(聯合),版權歸Alluxio公司所有,未經版權所有者同意請勿轉載。
最後更新:2017-09-01 12:02:39