Alluxio集成Hadoop


准備工作

為了運行Alluxio集群在多個機器上,必須部署Alluxio服務到這些機器上。可以下載伴隨特定Hadoop版本的二進制AlLxio包,也可以從Alluxio源碼中編譯。
當從源碼中編譯時,Alluxio默認是伴隨着Apache HDFS的2.2.0版本編譯的。為了編譯其他的Hadoop版本,需要配置正確的Hadoop選項,在Alluxio安裝目錄下執行一下命令

mvn install -P<YOUR_HADOOP_PROFILE> -D<HADOOP_VERSION> -DskipTests

Alluxio提供預定義的構建配置包含hadoop-1,hadoo-2(默認開啟),hadoop-3分別對應Hadoop的1.x,2.x,3.x版本,如果你想構建Alluxio伴隨着特定的Hadoop版本,你可以在命令中配置版本,例如:

mvn install -Phadoop-2 -Dhadoop.version=2.7.1 -DskipTests
mvn install -Phadoop-3 -Dhadoop.version=3.0.0 -DskipTests

如果構建成功,應該能夠在${ALLUXIO_HOME}/assembly/server/target目錄中看到alluxio-assembly-server-1.8.1-jar-with-dependencies.jar。

基本安裝

為了配置Alluxio使用HDFS作為底層的存儲,你需要修改conf/alluxio-site.properties。如果文件不存在,從模板中創建這個配置文件

cp conf/alluxio-site.properties.template conf/alluxio-site.properties

編輯conf/alluxio-site.properties,設置底層的存儲地址為HDFS namenode地址和你想要掛在到Alluxio的HDFS目錄,例如,如果你想要映射HDFS根目錄到Alluxio中,可以設置存儲地址為hdfs://node-master:9000;如果你僅僅想掛載HDFS的/alluxio/data目錄到Alluxio,可以設置存儲地址為hdfs://node-master:9000/alluxio/data

運行伴隨着HDFS的本地Alluxio

首先確保你的HDFS集群正在運行,映射到Alluxio的目錄存在,開啟Alluxio服務

bin/alluxio format
bin/alluxio-start.sh local

如果你的ramdisk還沒有掛載,可能是因為你是第一次運行Alluxio,可能需要添加SudoMount選項。

bin/alluxio-start.sh local SudoMount

將會在本地開啟一個Alluxio master和一個Alluxio worker。你可以通過http://localhost:19999 進行訪問
一定要在alluxio-site.properties文件中解開alluxio.master.hostname的注釋,要不然啟動不了Alluxio worker
運行一個簡單的例子程序

bin/alluxio runTests

如果伴隨着權限錯誤的測試失敗,確保當前用戶有掛載到Alluxio的HDFS目錄的讀寫權限,默認登錄用戶是當前用戶,為了修改用戶,可以在conf/alluxio-site.properties文件中設置alluxio.security.login.username的值。
當運行例子成功之后,你可以訪問http://localhost:50070 來驗證由Alluxio創建的文件和目錄,在這個測試中,將會看到/default_tests_files/BASIC_CACHE_THROUGH的文件。
關閉Alluxio

bin/alluxio-stop.sh local

高級的設置

指定HDFS配置文件位置

當HDFS沒有默認的配置,你需要配置Alluxio服務能夠訪問正確的HDFS配置文件,只要這個被設置,使用Alluxio客戶端的應用不需要進行特定的配置了。
有兩種方法可以實現:

  • 復制或者做象征性鏈接從Hadoop安裝目錄中的hdfs-site.xml,core-site.xml到${ALLUXIO_HOME}/conf,確保這個設置是在所有運行Alluxio服務的機器上。
  • 可以在conf/alluxio-site.properties文件中設置alluxio.underfs.hdfs.configuration的值來指向hdfs-site.xml,core-site.xml。確保這個設置是在所有運行Alluxio服務的機器上。
alluxio.underfs.hdfs.configuration=/path/to/hdfs/conf/core-site.xml:/path/to/hdfs/conf/hdfs-site.xml

HDFS Namenode的高可用模式

為了配置Alluxio工作在HDFS namenodes的高可用模式下,首先指定HDFS配置文件位置
除此之外,設置底層的存儲地址是hdfs://nameservice(nameservice是在core-site.xml中設置的HDFS服務名字)。為了掛載HDFS的子目錄到Alluxio,而不是整個HDFS根目錄,修改底層的存儲地址為:hdfs://nameservice/alluxio/data.

alluxio.master.mount.table.root.ufs=hdfs://nameservice/

用戶權限映射

Alluxio支持POSIX-like文件的用戶和權限檢測,為了確保在HDFS上目錄,文件的權限和Alluxio保持一致(例如,在Alluxio,Foo用戶創建了一個文件,那么持久化到HDFS上,擁有者也是Foo)。開啟Alluxio master和worker進程的用戶必須滿足以下條件之一

  • HDFS super user: 那即是,使用開啟HDFS namenode進程的用戶來開啟Alluxio master和worker進程
  • 一個HDFS superuser group的成員,編輯hdfs-site.xml文件,檢查dfs.permissions.superusergroup的值,如果這個屬性被設置(例如,hdfs),添加開啟alluxio進程的用戶到這個組(hdfs),如果這個屬性沒有設置,添加一個group到這個屬性,運行Alluxio的用戶添加到這個新增的group。
    上面的用戶設置僅僅用來標識開啟Alluxio master和worker進程。只要Alluxio服務開啟,沒有必要使用這個用戶來運行Alluxio客戶端應用。

掛載特定版本的HDFS

有許多方法可以掛載特定版本的HDFS到Alluxio。在掛載特定HDFS版本之前,確保你構建了那個特定HDFS版本的客戶端,你可以在Alluxio安裝目錄中的lib下看是否存在對應的客戶端。
如果你從源碼中構建Alluxio,可以構建額外的客戶端jar包,通過在Alluxio源碼中的underfs目錄下執行mvn命令。例如執行下面的命令可以構建2.6.0版本的客戶端。

 mvn -T 4C clean install -Dmaven.javadoc.skip=true -DskipTests \
-Dlicense.skip=true -Dcheckstyle.skip=true -Dfindbugs.skip=true \
-Pufs-hadoop-2 -Dufs.hadoop.version=2.6.0

使用Mount命令

當使用mount Alluxio shell命令時,通過傳遞alluxio.underfs.version參數來指定掛載的HDFS版本,如果沒有版本被設置,默認Alluxio當做HDFS2.2版本。
例如,下面的命令可以掛載兩個HDFS部署,一個是HDFS1.2,另一個是HDFS2.7.分別掛載到/mnt/hdfs12和/mnt/hdfs27下面。

./bin/alluxio fs mount \
--option alluxio.underfs.version=1.2 \
/mnt/hdfs12 hdfs://namenode1:8020/
./bin/alluxio fs mount \
--option alluxio.underfs.version=2.7 \
/mnt/hdfs27 hdfs://namenode2:8020/

使用alluxio-site.properties

當掛載Alluxio的根目錄存儲為特定的HDFS版本,可以添加下面的行到alluxio-site.properties文件

alluxio.master.mount.table.root.ufs=hdfs://namenode1:8020
alluxio.master.mount.table.root.option.alluxio.underfs.version=1.2

支持的HDFS版本號

Alluxio v1.8.1支持下面的HDFS版本作為alluxio.underfs.version參數的值
Apache Hadoop: 1.0, 1.2, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 2.8, 2.9, 3.0, 3.1


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM