Alluxio實戰手冊之設置(Configuration)篇
為了適配不同的生產環境和業務需求, Alluxio為運維Alluxio的管理員用戶以及使用Alluxio的任務用戶提供了豐富的設置選項. 但是這兩者配置Alluxio時使用的方式是不一樣的. 本文分別介紹在Alluxio 1.7里如何來正確的設置選項, 以及最常用的一些選項.
常用鏈接
- Alluxio項目官網
- Alluxio Inc網站
- Alluxio在各大廠用例
- 關注Alluxio微信公眾號
管理員用戶
對於啟動, 運行和維護Alluxio server進程(包括master以及worker進程)的管理員來說, 推薦修改設置方法是修改Alluxio安裝目錄下的conf/alluxio-site.properties文件. 最常見的server端的Alluxio設置包括
# master節點的主機名alluxio.master.hostname=mymaster# Alluxio根目錄對應的UFS的地址alluxio.underfs.address=hdfs://nn:9000/# 是否激活worker進程分層存儲的非同步evictionalluxio.worker.tieredstore.reserver.enabled=true# 設置worker的多級分層存儲的, 每台worker分配了2GB的內存和10GB的硬碟, 並且制定水位線.# 每層容量使用超過90%激發, 低於70%停止非同步evictionalluxio.worker.tieredstore.levels=2alluxio.worker.tieredstore.level0.alias=MEMalluxio.worker.tieredstore.level0.dirs.path=/Volumes/ramdiskalluxio.worker.tieredstore.level0.dirs.quota=2GB alluxio.worker.tieredstore.level0.watermark.high.ratio=0.9alluxio.worker.tieredstore.level0.watermark.low.ratio=0.7alluxio.worker.tieredstore.level1.alias=HDDalluxio.worker.tieredstore.level1.dirs.path=/tmpalluxio.worker.tieredstore.level1.dirs.quota=10GBalluxio.worker.tieredstore.level1.watermark.high.ratio=0.9alluxio.worker.tieredstore.level1.watermark.low.ratio=0.7
如果需要調整Alluxio master或者worker進程的JVM參數, 修改安裝目錄下的的conf/alluxio-env.sh文件. 常見設置調整包括:
# 設置ALLUXIO_MASTER_JAVA_OPTS作用於master JVM# 設置ALLUXIO_WORKER_JAVA_OPTS作用於worker JVM# 以及ALLUXIO_JAVA_OPTS同時作用於master以及worker JVM# 增加worker JVM GC事件的logging, 輸出寫至worker節點的logs/worker.out文件中ALLUXIO_WORKER_JAVA_OPTS=" -XX:+PrintGCDetails -XX:+PrintTenuringDistribution -XX:+PrintGCTimestamps"# 設置master JVM的的heap sizeALLUXIO_MASTER_JAVA_OPTS=" -Xms2048M -Xmx4096M"
注意事項1
每一個Alluxio server進程都會去讀取本地安裝目錄下的conf/alluxio-site.properties以及conf/alluxio-env.sh文件, 所以對某一項設置做修改後, 需要在所有安裝master和worker的節點上都更新這一文件. 一個簡單的方法是在master節點上做過修改以後, 使用我們提供的"bin/alluxio copyDir"這個腳本, 自動的根據conf/workers的內容, 把master節點上的配置文件rsync到所有的worker節點上.
$ bin/alluxio copyDir conf
注意事項2
在Alluxio server節點的conf/alluxio-site.propertie里設置Alluxio客戶端屬性(如以"alluxio.user"開頭的這些選項), 對於那些使用Alluxio作為存儲層的計算引擎(比如Spark, MapReduce)無效果. 如果需要讓計算引擎正確的設置來和Alluxio交互, 請看本文的第二部分.
任務用戶
對使用Alluxio的任務用戶(比如在Spark, Hive等訪問Alluxio的計算任務)來說, 它們運行的節點可能並沒有Alluxio的安裝, 從而也沒有conf/alluxio-site.properties或者conf/alluxio-env.sh等的配置文件. 除此之外這些計算任務的代碼常把Alluxio作為一個HDFS compatible的文件系統來讀取和訪問, 也沒有在代碼層面對Alluxio做特殊的處理, 所以對於任務用戶來說, Alluxio使用不一樣的方法來設置Alluxio的客戶端的選項設置.
每一個Alluxio client jar會在初始化Alluxio client的時候掃描所見的JVM的system properties, 所有Alluxio支持的選項被掃描到以後會對於這一個JVM生效. 對於很多分散式計算系統來說, 最有挑戰的部分是如何把想要修改的選項傳遞到所有的task里. 這裡我們以Spark和MapReduce為例子介紹如何在提交任務的時候, 讓這些計算引擎把Alluxio的客戶端選項傳遞到每一個運行任務的節點上.
Spark任務
可以在提交spark任務的時候指定driver和executor的Java Opts:
$ spark-submit --conf spark.driver.extraJavaOptions=-Dalluxio.user.file.writetype.default=CACHE_THROUGH --conf spark.executor.extraJavaOptions=-Dalluxio.user.file.writetype.default=CACHE_THROUGH ...
如果在Spark shell, 也可以載入Java Opts
val conf = new SparkConf() .set("spark.driver.extraJavaOptions", "-Dalluxio.user.file.writetype.default=CACHE_THROUGH") .set("spark.executor.extraJavaOptions", "-Dalluxio.user.file.writetype.default=CACHE_THROUGH")val sc = new SparkContext(conf)
MapReduce任務
對於MapReduce任務來說, 可以通過提交MR任務時候的-D選項來告訴這個任務所有的task, 索要使用的Alluxio客戶端選項.
$ bin/hadoop jar libexec/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount -Dalluxio.user.file.writetype.default=CACHE_THROUGH -libjars /<PATH_TO_ALLUXIO>/client/alluxio-1.7.1-client.jar <INPUT FILES> <OUTPUT DIRECTORY>
總結
- Server端和Client端採用不同的方法設置. Server端推薦使用conf/alluxio-site.properties和conf/alluxio-env.sh, 而Client端則根據具體的計算引擎的不同而有不同的方式傳遞.
- 針對Alluxio 1.7的設置選項包括默認值可以在網頁"配置屬性 - Docs | Alluxio Open Source "中查詢到.
推薦閱讀:
※數據產品經理之道
※滴滴拼車路徑的優化
※又到求職黃金季,這些技能助你一臂之力【阿里直聘優先錄取】
※測試一下:你適合學習大數據嗎
※基於 MaxCompute 的極速的基因測序分析