配置项设置

Slack Docker Pulls GitHub edit source

可以通过设置受支持的系统配置参数来配置Alluxio。了解用户如何定制应用程序 (例如,Spark或MapReduce作业)与Alluxio交互,参见如何配置引用应用程序;要了解冲浪者管理员如何定制冲浪者服务,请参见如何配置Alluxio集群

配置应用

自定义应用程序作业如何与Alluxio服务交互是面向不同应用程序的。这里我们为一些常见的应用程序提供建议。

Alluxio Shell 命令

fs 命令和子命令之前(例如,copyFromLocal),可以将JVM系统属性 -Dproperty=value放入到命令行中,以指定引用属性。例如,下面的Alluxio shell命令在将文件复制到Alluxio时将写入类型设置为CACHE_THROUGH:

$ ./bin/alluxio fs -Dalluxio.user.file.writetype.default=CACHE_THROUGH \
copyFromLocal README.md /README.md

Spark 作业

Spark用户可以通过对Spark executor的spark.executor.extraJavaOptions和Spark drivers的spark.driver.extraJavaOptions 添加"-Dproperty=value"向Spark job传递JVM环境参数。例如,当提交Spark jobs时设置向Alluxio写入方式为CACHE_THROUGH

$ 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中可以这样实现:

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)

Hadoop MapReduce 作业

Hadoop MapReduce用户可以在hadoop jar或”yarn jar命令后添加"-Dproperty=value"。 属性将被传播到这个作业的所有任务中。例如,下面的 MapReduce任务中设置wordcount集写入Alluxio类型为CACHE_THROUGH

$ ./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-2.10.0-SNAPSHOT-client.jar \
<INPUT FILES> <OUTPUT DIRECTORY>

配置Alluxio集群

使用 Site-Property 文件 (推荐)

Alluxio管理员可以创建和定制属性文件alluxio-site.properties来配置一个Alluxio集群。 如果该文件不存在,可以从模板文件${ALLUXIO_HOME}/conf:中创建:

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

确保在启动集群之前该文件上被分发到每个Alluxio节点(master和worker)的${ALLUXIO_HOME}/conf

使用集群默认

从v1.8开始,每个Alluxio客户端都可以使用从master节点获取的集群范围的配置值初始化其配置。 具体来说,当不同的客户端应用程序(如Alluxio Shell命令、Spark作业或MapReduce作业)连接到一个Alluxio服务时, 它们将使用master节点提供的默认值初始化自己的Alluxio配置属性,这些默认值是基于master节点的${ALLUXIO_HOME}/conf/alluxio-site.properties属性文件。因此,集群管理员可以放置客户端设置(例如,alluxio.user.*)或网络传输设置(如alluxio.security.authentication.type)在master节点的${ALLUXIO_HOME}/conf/alluxio-site.properties。 它将被分布并成为集群范围内的默认值,用于新的Aluxio客户端。

例如,一个常见的Alluxio属性alluxio.user.file.writetype.default 是设置写方式为默认的 MUST_CACHE ,只写到Alluxio空间。在一个Alluxio集群中 如果首选的是数据持久性的部署,所有的作业都需要写到UFS和Alluxio,那么就可以使用Alluxio v1.8或更高版本的admin命令来简单地添加alluxio.user.file.writetype.default=CACHE_THROUGH 到master端${ALLUXIO_HOME}/conf/alluxio-site.properties。重新启动集群后,所有新的作业都将自动将属性alluxio.user.file.writetype.default设置为CACHE_THROUGH

客户端仍然可以忽略或覆盖集群范围内的默认值,通过指定属性alluxio.user.conf.cluster.default.enabled=false, 以更改加载集群范围内的默认值,或者遵循前面描述的方法为应用程序配置文件覆盖相同的属性。

注意到,在v1.8之前,${ALLUXIO_HOME}/conf/alluxio-site.properties属性的文件只被加载Alluxio服务器 进程,并将被应用程序通过Alluxio客户端与Alluxio服务交互所忽略, 除非${ALLUXIO_HOME}/conf在应用程序的类路径中。

使用环境变量

Alluxio通过环境变量来支持一些常用的配置设置,包括:

环境变量意义
ALLUXIO_CONF_DIR Alluxio配置目录的路径.
ALLUXIO_LOGS_DIR Alluxio logs目录的路径.
ALLUXIO_MASTER_HOSTNAME Alluxio master的主机名,默认为localhost
ALLUXIO_MASTER_ADDRESS 从1.1版本开始被ALLUXIO_MASTER_HOSTNAME替代,并将在2.0版本中移除
ALLUXIO_MASTER_MOUNT_TABLE_ROOT_UFS 底层存储系统地址,默认为 ${ALLUXIO_HOME}/underFSStorage,即本地文件系统
ALLUXIO_RAM_FOLDER Alluxio worker保存in-memory数据的目录,默认为/mnt/ramdisk.
ALLUXIO_JAVA_OPTS Alluxio Master、Worker以及Shell中的Java虚拟机配置选项,注意,默认情况下ALLUXIO_JAVA_OPTS将被包含在 ALLUXIO_MASTER_JAVA_OPTSALLUXIO_WORKER_JAVA_OPTSALLUXIO_USER_JAVA_OPTS中。
ALLUXIO_MASTER_JAVA_OPTS 对Master配置的额外Java虚拟机配置选项
ALLUXIO_WORKER_JAVA_OPTS 对Worker配置的额外Java虚拟机配置选项
ALLUXIO_JOB_MASTER_JAVA_OPTS 对Job Master配置的额外Java虚拟机配置选项
ALLUXIO_JOB_WORKER_JAVA_OPTS 对Job Worker配置的额外Java虚拟机配置选项
ALLUXIO_USER_JAVA_OPTS 对Alluxio Shell配置的额外Java虚拟机配置选项
ALLUXIO_CLASSPATH Alluxio进程的额外classpath入口. 默认为空
ALLUXIO_LOGSERVER_HOSTNAME log server的主机名.默认为空.
ALLUXIO_LOGSERVER_PORT log server的端口名.默认为45600.
ALLUXIO_LOGSERVER_LOGS_DIR Alluxio log服务器存储从Alluxio服务器接收的log的本地目录路径.

例如,如果你希望将Alluxio master运行在localhost上,其底层存储系统HDFS的namenode也运行在localhost上,并且在7001端口启用Java远程调试,可以使用:

$ export ALLUXIO_MASTER_HOSTNAME="localhost"
$ export ALLUXIO_MASTER_MOUNT_TABLE_ROOT_UFS="hdfs://localhost:9000"
$ export ALLUXIO_MASTER_JAVA_OPTS="$ALLUXIO_JAVA_OPTS -agentlib:jdwp=transport=dt_socket,server=y, suspend=n,address=7001"

用户可以通过shell命令或者conf/alluxio-env.sh设置这些环境变量。如果该文件不存在,可以通过运行以下命令令Alluxio自动生成conf/alluxio-env.sh文件:

$ cp conf/alluxio-env.sh.template conf/alluxio-env.sh

配置资源

Alluxio属性可以在多个资源中配置。在这种情况下,它的最终值由列表中最早的资源配置决定:

  1. JVM系统参数 (i.e., -Dproperty=key)
  2. 环境变量
  3. 参数配置文件. 当Alluxio集群启动时, 每一个Alluxio服务端进程(包括master和worke) 在目录${HOME}/.alluxio/, /etc/alluxio/ and ${ALLUXIO_HOME}/conf下顺序读取 alluxio-site.properties , 当 alluxio-site.properties 文件被找到,将跳过剩余路径的查找.
  4. 集群默认值. Alluxio客户端可以根据master节点提供的集群范围的默认配置初始化其配置。

如果没有为属性找到上面用户指定的配置,那么会回到它的默认参数值

要检查特定配置属性的值及其值的来源,用户可以使用以下命令行:

$ ./bin/alluxio getConf alluxio.worker.rpc.port
29998
$ ./bin/alluxio getConf --source alluxio.worker.rpc.port
DEFAULT

列出所有配置属性的来源:

$ ./bin/alluxio getConf --source
alluxio.conf.dir=/Users/bob/alluxio/conf (SYSTEM_PROPERTY)
alluxio.debug=false (DEFAULT)
...

用户还可以指定--master选项来通过master节点列出所有的集群默认配置属性 。注意,使用--master选项 getConf将查询master,因此需要主节点运行;没有--master 选项,此命令只检查本地配置。

$ ./bin/alluxio getConf --master --source
alluxio.conf.dir=/Users/bob/alluxio/conf (SYSTEM_PROPERTY)
alluxio.debug=false (DEFAULT)
...