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發行版的一部分。html
以上這段概要從官網摘下,本身再總結一下:java
首先,它是和Hadoop兼容的,因此不少Spark,MapReduce程序能夠直接跑,那爲何還要用到Alluxio呢? git
答:由於它是基於內存的,能夠把中間結果文件,或者一些文件緩存起來,能夠選擇刷到磁盤上或者其餘不少讀寫方式,簡化了分佈式系統中內存的管理,減小讀寫磁盤.github
第二,該文件系統對於一個文件只能寫一次,就是在你建立的時候能夠寫,以後你就只能讀了.(在官方的文檔上有)centos
第三,該文件系統能夠和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案例本身摸索...網上的文章太少,因此特此寫一下,有錯誤請你們糾正.