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 的極速的基因測序分析

TAG:分散式計算 | 分散式存儲 | 大數據 |