Alluxio(之前名為Tachyon)是世界上第一個以內存為中心的虛擬的分布式存儲系統。它統一了數據訪問的方式,為上層計算框架和底層存儲系統構建了橋梁。 應用只需要連接Alluxio即可訪問存儲在底層任意存儲系統中的數據。此外,Alluxio的以內存為中心的架構使得數據的訪問速度能比現有常規方案快幾個數量級。在大數據生態系統中,Alluxio介於計算框架(如Apache Spark,Apache MapReduce,Apache Flink)和現有的存儲系統(如Amazon S3,OpenStack Swift,GlusterFS,HDFS, Ceph,OSS)之間。 Alluxio為大數據軟件棧帶來了顯著的性能提升。例如,百度采用Alluxio使他們數據分析流水線的吞吐量提升了30倍。 巴克萊銀行使用Alluxio將他們的作業分析的耗時從小時級降到秒級。 除性能外,Alluxio為新型大數據應用作用於傳統存儲系統的數據建立了橋梁。 用戶可以以獨立集群方式(如Amazon EC2)運行Alluxio,也可以從Apache Mesos或Apache YARN上啟動Alluxio。Alluxio與Hadoop是兼容的。這意味着已有的Spark和MapReduce程序可以不修改代碼直接在Alluxio上運行。Alluxio是一個已在多家公司部署的開源項目(Apache License 2.0)。 Alluxio是發展最快的開源大數據項目之一。自2013年4月開源以來, 已有超過50個組織機構的 200多貢獻者參與到Alluxio的開發中。包括 阿里巴巴, Alluxio, 百度, CMU,IBM,Intel, Red Hat,UC Berkeley和 Yahoo。Alluxio處於伯克利數據分析棧( BDAS)的存儲層,也是Fedora發行版的一部分。
以上這段概要從官網摘下,自己再總結一下:
首先,它是和Hadoop兼容的,所以很多Spark,MapReduce程序可以直接跑,那為什么還要用到Alluxio呢?
答:因為它是基於內存的,可以把中間結果文件,或者一些文件緩存起來,可以選擇刷到磁盤上或者其他很多讀寫方式,簡化了分布式系統中內存的管理,減少讀寫磁盤.
第二,該文件系統對於一個文件只能寫一次,就是在你創建的時候可以寫,之后你就只能讀了.(在官方的文檔上有)
第三,該文件系統可以和zookeeper整合起來,(雖然筆者沒有試),但是Alluxio自身是無法加分布式鎖的,所以他的應用場景可能比較特殊,我認為比較適合只讀的情況比較好,當並發的寫入同一個文件時,可能無法得到保證.
架構部分
在明確了他的特點后,就和看病一樣總得理解它有哪些部位,所以架構還是有必要了解,自己學習的時候開始總不好好看官方文檔會浪費時間.架構主要分為三個角色,master,worker,client.master與worker構成服務端,而我們的程序只和client端打交道.這里提供官方網站--架構部分(中文版)非常好理解才一頁.http://alluxio.org/documentation/v1.0.1/cn/Architecture.html.我就不敖述了.
開始動手搭建.
需要1.java運行環境 2.hdfs搭建 3.搭建Alluxio4.操作系統為centos7
本文java版本為1.7.0_71 HDFS版本為hadoop-2.7.1 Alluxio版本為當前最新alluxio-1.0.1 (可能是版本問題,Tachyon 0.8無法連接hdfs.走了很多彎路)
我在兩台機器暫且稱為A B. A作為MASTER B作為SLAVE2.在此前已經配置完HDFS.
可以訪問Master端的50070確認HDFS是否正常也可以 用jps命令.該命令可以看到所有的JAVA運行程序的PID.
此時A機器上會有一個SecondaryNameNode,NameNode. B機器上會有DataNode 進程.
搭建步驟:
1.在master機器上運行
wget http://alluxio.org/downloads/files/1.0.1/alluxio-1.0.1-bin.tar.gz tar xvfz alluxio-1.0.1-bin.tar.gz
2.安裝完畢后
將alluxio-1.0.1/conf 中的alluxio-env.sh.template 拷貝一份命名為alluxio-env.sh.該腳本其實就是配置文件.
主要配置幾個地方(僅貼上修改處 其他都沒有變動)
export ALLUXIO_MASTER_ADDRESS=${ALLUXIO_MASTER_ADDRESS:-master}
export ALLUXIO_UNDERFS_ADDRESS=${ALLUXIO_UNDERFS_ADDRESS:-hdfs://master:9000/alluxio}
這里"/alluxio"是我已經在HDFS中創建的文件夾.也可以不寫. 還有一個問題這里的-master是什么意思? 此前我並沒有配置master.他怎么會知道呢.
答:alluxio會從/etc/hosts 中去尋找映射,所以你必須給master 和slave配上對應的ip地址.(圖為我自己的hosts配置)
此時最后還需要修改conf/workers(之前tachyon 一致沒搞懂 居然又有slave 文件又有workder.)在里面把localhost注釋,加上你集群中的節點.

到這里配置全部結束.
cd到alluxio目錄下執行(該命令會把該目錄scp到所有的節點上)
./bin/alluxio copyDir .
此時執行(官網推薦是all Mount 不過沒關系.)
$ ./bin/alluxio format $ ./bin/alluxio-start.sh all NoMount
(期間會要你輸入很多密碼,原理就是它會ssh到各個機器上去啟動worker 不過沒關系,我們可以百度ssh免密碼登陸,這個帖子太多,但是有兩個小細節 第一就是 authoried_keys權限必須是600 而且你的用戶比如我是imdb 那么 /home/imdb的權限必須是700 網上博客都沒說!!!!!) 之后可以jps一下 發現master端多了AlluxioWorker和AlluxioMaster slave端多了AlluxioWorker. 可以用去測試.應該是通過的.
$ ./bin/alluxio runTests
打開瀏覽器輸入http://master:19999/home

就搞定了.在本地模式的API官網上有,只需把 alluxio中assembly/target/alluxio-assemblies-1.0.1-jar-with-dependencies.jar加到eclipse里面API官網有就不多講.
但是,不得不說,分布式的讀寫API我官網上沒有找到文檔,博客也都是非常老舊.唯一辦法是從它文件夾里的Test案例自己摸索...網上的文章太少,所以特此寫一下,有錯誤請大家糾正.
