配置项设置

本页面介绍Alluxio的配置项,并提供了在不同环境下的推荐配置。

Alluxio配置

Alluxio在运行时期会加载三种类型的配置源:

  1. 应用配置,这类配置是跟具体应用相关的,并且在每次运行一个应用(例如一个Spark作业)时都需要对其进行配置。
  2. 环境变量,这是用于设置基本属性从而管理Alluxio服务器以及运行Alluxio shell命令最简单快速的方式。注意,通过环境变量设置的配置项可能不会被应用加载。
  3. 属性文件,这是自定义Alluxio支持的配置属性最一般的方法,通过这些属性文件设置的配置项可以被Alluxio服务器以及应用加载。

加载配置属性值的优先级从高到低依次为:应用配置(如果有),环境变量,属性文件以及默认值。

应用配置

Alluxio shell用户可以通过在命令行中添加-Dkey=property来指定某一个Alluxio配置项,例如

$ bin/alluxio fs -Dalluxio.user.file.writetype.default=MUST_CACHE touch /foo

Spark用户可以在conf/spark-env.sh中将"-Dkey=property"添加到${SPARK_DAEMON_JAVA_OPTS}中,或者添加到spark.executor.extraJavaOptions(对于Spark executors)以及spark.driver.extraJavaOptions(对于Spark drivers)。

Hadoop MapReduce用户可以在hadoop jar命令中添加-Dkey=property将配置项传递给Alluxio:

$ hadoop jar -Dalluxio.user.file.writetype.default=MUST_CACHE foo.jar

注意,这类配置是跟具体应用相关的,并且在每次运行一个应用或者命令(例如一个Spark作业)时都需要对其进行配置。

环境变量

有许多常用的Alluxio配置项可以通过以下的环境变量进行配置:

环境变量意义
ALLUXIO_MASTER_HOSTNAME Alluxio master的主机名,默认为localhost
ALLUXIO_MASTER_ADDRESS 从1.1版本开始被ALLUXIO_MASTER_HOSTNAME替代,并将在2.0版本中移除
ALLUXIO_UNDERFS_ADDRESS 底层存储系统地址,默认为 ${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_USER_JAVA_OPTS 对Alluxio Shell配置的额外Java虚拟机配置选项
ALLUXIO_CLASSPATH Alluxio进程的额外classpath入口. 默认为空

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

$ export ALLUXIO_MASTER_HOSTNAME="localhost"
$ export ALLUXIO_UNDERFS_ADDRESS="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文件:

$ ./bin/alluxio bootstrapConf <ALLUXIO_MASTER_HOSTNAME> [local|hdfs|s3|gcs|glusterfs|swift]

除此之外,还可以运行以下命令从我们提供的一个模板文件中生成它:

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

注意,conf/alluxio-env.sh是在你启动Alluxio系统或者运行Alluxio命令时被加载,而不是被应用加载。

属性文件

除了以上这些提供基本设置的环境变量之外,Alluxio还为用户提供了一种更一般的方式,即通过属性文件来自定义所有支持的配置项。对于每个Alluxio部署站点,Alluxio服务器以及应用客户端都可以通过alluxio-site.properties文件覆盖默认属性值。在启动时,Alluxio会检查是否存在属性配置文件,如果存在,便会加载这些文件,并覆盖默认的属性值。启动程序将依次在${HOME}/.alluxio//etc/alluxio/(可以通过更改alluxio.site.conf.dir的默认值进行自定义)以及运行Alluxio的Java虚拟机的classpath中搜索该属性文件。

举个例子,用户可以复制${ALLUXIO_HOME}/conf目录下的属性模板保存到${HOME}/.alluxio/目录下,并且根据用户需求来调整配置属性的值。

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

注意,一旦设置了,这些属性文件的配置项将在Alluxio服务器以及使用Alluxio客户端的作业中共享。

附录

所有Alluxio配置属性都属于以下六类之一: 共有配置项(由Master和Worker共享), Master配置项Worker配置项用户配置项集群管理配置项(用于在诸如Mesos和YARN的集群管理器上运行Alluxio) 以及安全性配置项(由Master,Worker和用户共享)。

共有配置项

共有配置项包含了不同组件共享的常量。

属性名默认值意义
alluxio.conf.dir ${alluxio.home}/conf 包含Alluxio配置文件的目录。
alluxio.debug false 设置为true后即可启用debug模式,会记录更多日志,且在Web UI中会显示更多信息。
alluxio.extensions.dir ${alluxio.home}/extensions
alluxio.fuse.cached.paths.max 500
alluxio.fuse.debug.enabled false
alluxio.fuse.fs.name alluxio-fuse
alluxio.fuse.fs.root /
alluxio.fuse.maxwrite.bytes 128KB
alluxio.fuse.mount.default /mnt/alluxio
alluxio.home /opt/alluxio Alluxio安装目录。
alluxio.logger.type Console
alluxio.logs.dir ${alluxio.work.dir}/logs 存放日志文件的路径。
alluxio.logserver.hostname
alluxio.logserver.logs.dir ${alluxio.work.dir}/logs
alluxio.logserver.port 45600
alluxio.logserver.threads.max 2048
alluxio.logserver.threads.min 512
alluxio.metrics.conf.file ${alluxio.conf.dir}/metrics.properties 度量系统配置文件路径,默认是`conf`文件夹下的`metrics.properties`文件。
alluxio.network.host.resolution.timeout 5sec
alluxio.network.netty.heartbeat.timeout 30sec
alluxio.network.thrift.frame.size.bytes.max 16MB
alluxio.proxy.s3.deletetype ALLUXIO_AND_UFS
alluxio.proxy.s3.multipart.temporary.dir.suffix _s3_multipart_tmp
alluxio.proxy.s3.writetype CACHE_THROUGH
alluxio.proxy.stream.cache.timeout 1hour
alluxio.proxy.web.bind.host 0.0.0.0
alluxio.proxy.web.hostname
alluxio.proxy.web.port 39999
alluxio.site.conf.dir ${alluxio.conf.dir}/ 加载配置文件时默认的搜索路径
alluxio.test.mode false 设置在测试过程中是否启用某些特殊行为。
alluxio.underfs.address ${alluxio.work.dir}/underFSStorage Alluxio在底层文件系统中的文件夹。
alluxio.underfs.allow.set.owner.failure false
alluxio.underfs.gcs.owner.id.to.username.mapping 可选配置项,指定一个预设的gcs拥有者ID到Alluxio用户名的静态映射,格式为“id1=user1;id2=user2”。谷歌云存储的ID可以在控制台地址https://console.cloud.google.com/storage/settings找到。请使用“Owners”选项。
alluxio.underfs.hdfs.configuration ${alluxio.conf.dir}/core-site.xml:${alluxio.conf.dir}/hdfs-site.xml hdfs配置文件的位置。
alluxio.underfs.hdfs.impl org.apache.hadoop.hdfs.DistributedFileSystem 作为底层存储系统的hdfs的实现类。
alluxio.underfs.hdfs.prefixes hdfs:// 可选配置项,指定以哪些前缀开头的文件应该存放在Apache Hadoop底层文件系统。分隔符为任何空白符或者','。
alluxio.underfs.hdfs.remote false 底层存储系统的worker节点对于Alluxio worker节点来说是否是远程的。如果该值为true,那么Alluxio将不会尝试从底层存储系统获取locality相关信息,因为这种情况下不可能存在任何locality,这样做可以提高性能。默认值为false。
alluxio.underfs.listing.length 1000 底层文件系统在一次查询中可以列出的目录条目的最大数量。如果条目数量大于指定长度,则需要多次查询才能列出。
alluxio.underfs.object.store.mount.shared.publicly false 是否对所有Alluxio用户共享挂载的对象存储系统。 注意,该配置对HDFS或者本地文件系统没有任何影响。默认值是false。
alluxio.underfs.object.store.service.threads 20 存储底层文件系统操作的并行对象在执行程序池中的线程数。
alluxio.underfs.oss.connection.max 1024
alluxio.underfs.oss.connection.timeout 50sec
alluxio.underfs.oss.connection.ttl -1
alluxio.underfs.oss.socket.timeout 50sec
alluxio.underfs.s3.admin.threads.max 20 与S3通信时进行元数据操作所使用的最大线程数目,这些操作会并发且频繁执行,但不会花费太多时间。默认值为20。
alluxio.underfs.s3.disable.dns.buckets false
alluxio.underfs.s3.endpoint 可选配置项,在组织AWS服务请求的时候可以指定某个区域地址来降低数据延迟或者访问某些隔离在不同AWS Region的资源。 一个endpoint是某个服务的一个入口地址。举例,s3.cn-north-1.amazonaws.com.cn 就是一个北京区域的亚马逊S3服务的一个endpoing。
alluxio.underfs.s3.owner.id.to.username.mapping 可选配置项,指定一个预设的s3规范ID到Alluxio用户名的静态映射,格式为“id1=user1;id2=user2”。AWS的s3规范ID可以在控制台地址https://console.aws.amazon.com/iam/home?#security_credential找到。请展开“Account Identifiers”选项卡,并参考“Canonical User ID”。
alluxio.underfs.s3.proxy.host 可选配置项,指定与S3通信的代理主机。
alluxio.underfs.s3.proxy.port 可选配置项,指定与S3通信的代理端口。
alluxio.underfs.s3.threads.max 40 与S3通信时使用的最大线程数目和最大并发连接数。包括数据上载以及元数据操作线程。该数目至少要等于最大管理线程与最大上传线程数目之和。默认值为40,即默认管理线程与默认上传线程池大小之和。
alluxio.underfs.s3.upload.threads.max 20 进行多部分上传时上传数据到S3所使用的最大线程数目,这些操作会相对耗时,然而由于某些线程会引起错误,过多线程会导致带宽饥饿。默认值为2。
alluxio.underfs.s3a.consistency.timeout 1min
alluxio.underfs.s3a.directory.suffix / S3会把目录表示为0字节的对象,名字以指定后缀结尾。默认值为“/”。
alluxio.underfs.s3a.inherit_acl true
alluxio.underfs.s3a.list.objects.v1 false 是否使用GET Bucket(列出对象)API。默认为"false"。
alluxio.underfs.s3a.request.timeout 1min
alluxio.underfs.s3a.secure.http.enabled false 是否使用HTTPS协议与S3进行通信。默认值为false。
alluxio.underfs.s3a.server.side.encryption.enabled false 是否加密存储在S3中的数据。默认值为false。
alluxio.underfs.s3a.signer.algorithm
alluxio.underfs.s3a.socket.timeout 50sec
alluxio.version 1.6.0-SNAPSHOT
alluxio.web.resources ${alluxio.home}/core/server/common/src/main/webapp web应用资源路径。
alluxio.web.threads 1 web服务器的线程数目。
alluxio.work.dir ${alluxio.home}
alluxio.zookeeper.address ZooKeeper地址。
alluxio.zookeeper.election.path /election ZooKeeper的选举文件夹。
alluxio.zookeeper.enabled false 若为true,则使用zooKeeper启动master容错机制。
alluxio.zookeeper.leader.inquiry.retry 10 从ZooKeeper申请leader的最大请求次数。
alluxio.zookeeper.leader.path /leader ZooKeeper的leader文件夹。
aws.accessKeyId
aws.secretKey
fs.gcs.accessKeyId
fs.gcs.secretAccessKey
fs.oss.accessKeyId
fs.oss.accessKeySecret
fs.oss.endpoint
fs.swift.apikey
fs.swift.auth.method
fs.swift.auth.url
fs.swift.password
fs.swift.region
fs.swift.simulation
fs.swift.tenant
fs.swift.use.public.url
fs.swift.user

Master配置项

Master配置项指定master节点的信息,例如地址和端口号。

属性名默认值意义
alluxio.master.audit.logging.enabled false
alluxio.master.audit.logging.queue.capacity 10000
alluxio.master.bind.host 0.0.0.0 Alluxio master绑定的主机名。参考多宿主网络
alluxio.master.connection.timeout 0ms
alluxio.master.file.async.persist.handler alluxio.master.file.async.DefaultAsyncPersistHandler 处理异步持久化请求的处理类。
alluxio.master.format.file_prefix _format_ 当journal被格式化时,在joural文件夹下生成的文件的文件名前缀。当判断journal是否被格式化时master会查找文件名以该前缀开头的文件。
alluxio.master.heartbeat.interval 1sec
alluxio.master.hostname Alluxio master主机名。
alluxio.master.journal.checkpoint.period.entries 2000000
alluxio.master.journal.flush.batch.time 5ms
alluxio.master.journal.flush.timeout 5min
alluxio.master.journal.folder ${alluxio.work.dir}/journal 存储master journal日志的路径。
alluxio.master.journal.formatter.class alluxio.master.journalv0.ProtoBufJournalFormatter 序列化journal的类。
alluxio.master.journal.gc.period 2min
alluxio.master.journal.gc.threshold 5min
alluxio.master.journal.log.size.bytes.max 10MB 如果一个日志文件大小超过该值,会产生下一个文件。
alluxio.master.journal.tailer.shutdown.quiet.wait.time 5sec
alluxio.master.journal.tailer.sleep.time 1sec
alluxio.master.journal.temporary.file.gc.threshold 30min
alluxio.master.journal.type UFS
alluxio.master.journal.ufs.option
alluxio.master.keytab.file Alluxio master的Kerberos密钥表文件。
alluxio.master.lineage.checkpoint.class alluxio.master.lineage.checkpoint.CheckpointLatestPlanner 用于生成lineage文件的checkpoint策略的类名,默认的策略是将最新的完整的lineage作为检查点,即所有输出文件都完成了的lineage。
alluxio.master.lineage.checkpoint.interval 5min
alluxio.master.lineage.recompute.interval 5min
alluxio.master.lineage.recompute.log.path ${alluxio.logs.dir}/recompute.log 执行重新计算任务时将日志的标准输出重定向到该配置项指定的路径。
alluxio.master.mount.table.root.alluxio /
alluxio.master.mount.table.root.option
alluxio.master.mount.table.root.readonly false
alluxio.master.mount.table.root.shared true
alluxio.master.mount.table.root.ufs ${alluxio.underfs.address}
alluxio.master.port 19998 Alluxio master的运行端口。
alluxio.master.principal Alluxio master的Kerberos主体。
alluxio.master.retry ${alluxio.user.rpc.retry.max.num.retry} client尝试与master相连的最大重试次数。(注意:该配置项目前不推荐使用,建议使用`alluxio.user.rpc.retry.max.num.retry`替代该项)
alluxio.master.startup.consistency.check.enabled true 当Alluxio启动时是否检查与底层存储系统的一致性,在该检查过程中,Alluxio会进入只读模式。该检查默认开启。
alluxio.master.tieredstore.global.level0.alias MEM 整个系统中最高存储层的名称。
alluxio.master.tieredstore.global.level1.alias SSD 整个系统中第二存储层的名称。
alluxio.master.tieredstore.global.level2.alias HDD 整个系统中第三存储层的名称。
alluxio.master.tieredstore.global.levels 3 系统中存储层的总数目。
alluxio.master.ttl.checker.interval 1hour
alluxio.master.ufs.path.cache.capacity 100000 UFS路径缓存的容量。此缓存用来近似`一次性`元数据加载行为。(查看 `alluxio.user.file.metadata.load.type`)。更大的缓存将耗费更大的内存,但是能够更好地近似`一次性`行为。
alluxio.master.ufs.path.cache.threads 64 线程池(可异步处理路径,用于缓存UFS路径)的最大容积。更多的线程数将减少异步缓存中的staleness数量,但可能会影响性能。 如果设置为0,缓存将被禁用,而alluxio.user.file.metadata.load.type = Once将表现为“Always”。
alluxio.master.web.bind.host 0.0.0.0 Alluxio master web UI绑定的主机名。参考多宿主网络
alluxio.master.web.hostname 提供Alluxio Master web UI的主机名。
alluxio.master.web.port 19999 Alluxio web UI运行端口。
alluxio.master.whitelist / 以该配置中的前缀开头的路径是可缓存的,这些前缀用分号隔开。Alluxio在第一次读这些文件时会尝试缓存这些可缓存的文件。
alluxio.master.worker.threads.max 2048 Alluxio master能处理的最大RPC并发请求数目,该值用于配置master的Thrift线程池的最大线程数。
alluxio.master.worker.threads.min 512 Alluxio master用于处理RPC请求的最小线程数,该值用于配置master的Thrift线程池的最小线程数。
alluxio.master.worker.timeout 5min

Worker配置项

Worker配置项指定worker节点的信息,例如地址和端口号。

属性名默认值意义
alluxio.worker.allocator.class alluxio.worker.block.allocator.MaxFreeAllocator worker在特定存储层上分配不同存储目录空间的策略,有效值包括:`alluxio.worker.block.allocator.MaxFreeAllocator`, `alluxio.worker.block.allocator.GreedyAllocator`, `alluxio.worker.block.allocator.RoundRobinAllocator`。
alluxio.worker.bind.host 0.0.0.0 Alluxio worker节点绑定的主机名,参考多宿主网络
alluxio.worker.block.heartbeat.interval 1sec
alluxio.worker.block.heartbeat.timeout 5min
alluxio.worker.block.master.client.pool.size 11
alluxio.worker.block.threads.max 2048 worker能处理的最大RPC并发请求数目,该值用于配置worker的Thrift线程池的最大线程数。
alluxio.worker.block.threads.min 256 worker用于处理RPC请求的最小线程数,该值用于配置worker的Thrift线程池的最小线程数。
alluxio.worker.data.bind.host 0.0.0.0 运行Alluxio worker数据服务的主机名,参考多宿主网络
alluxio.worker.data.folder /alluxioworker/ 每个存储目录中的一个相对路径,该路径被Alluxio worker用作层次化存储中存放数据的文件夹。
alluxio.worker.data.folder.tmp .tmp_blocks 相对于 alluxio.worker.data.folder 的路径, 用于存放临时数据.
alluxio.worker.data.hostname
alluxio.worker.data.port 29999 运行Alluxio worker数据服务的端口。
alluxio.worker.data.server.class alluxio.worker.netty.NettyDataServer 选择运行worker的网络栈,可选值为:`alluxio.worker.netty.NettyDataServer`。
alluxio.worker.data.server.domain.socket.address domain socket 路径。如果设置,Alluxio worker 通过这个路径读写数据。
alluxio.worker.data.tmp.subdir.max 1024 在 alluxio.worker.data.folder.tmp 中可以创建的文件夹的最大数目.
alluxio.worker.evictor.class alluxio.worker.block.evictor.LRUEvictor 当某个存储层空间不足时,worker剔除块文件的策略。可选值包括`alluxio.worker.block.evictor.LRFUEvictor`、 `alluxio.worker.block.evictor.GreedyEvictor`、 `alluxio.worker.block.evictor.LRUEvictor`。
alluxio.worker.evictor.lrfu.attenuation.factor 2.0 在[2, INF)之间的一个衰减因子,用于控制LRFU策略行为。
alluxio.worker.evictor.lrfu.step.factor 0.25 在[0, 1]之间的一个因子,用于控制LRFU策略行为:较小值使LRFU更接近于LFU,较大值更接近于LRU。
alluxio.worker.file.buffer.size 1MB
alluxio.worker.file.persist.pool.size 64 在worker上用于异步存储ASYNC_THROUGH类型文件的线程池大小。每个线程会存储一个文件。
alluxio.worker.file.persist.rate.limit 2GB 异步存储时每秒最大写入速度。
alluxio.worker.file.persist.rate.limit.enabled false 是否在异步存储时启用限流功能。
alluxio.worker.filesystem.heartbeat.interval 1sec
alluxio.worker.hostname Alluxio worker的主机名。
alluxio.worker.keytab.file Alluxio worker的Kerberos密钥对文件。
alluxio.worker.memory.size 1GB 每个worker节点的内存容量。
alluxio.worker.network.netty.backlog
alluxio.worker.network.netty.block.reader.threads.max 2048 处理读数据块的线程数目。
alluxio.worker.network.netty.block.writer.threads.max 1024 处理写数据块的线程数目。
alluxio.worker.network.netty.boss.threads 1 收到新的请求时启用的线程数目。
alluxio.worker.network.netty.buffer.receive
alluxio.worker.network.netty.buffer.send
alluxio.worker.network.netty.channel
alluxio.worker.network.netty.file.transfer MAPPED 当将文件返回给用户时,该配置项用于选择数据如何传输,有效值为`MAPPED` (使用java MappedByteBuffer)以及`TRANSFER` (使用Java FileChannel.transferTo)
alluxio.worker.network.netty.file.writer.threads.max 1024 处理往底层文件系统写文件的线程数目。
alluxio.worker.network.netty.reader.buffer.size.packets 16
alluxio.worker.network.netty.rpc.threads.max 2048 处理RPC的线程数目。
alluxio.worker.network.netty.shutdown.quiet.period 2sec 沉默期时间长度(单位:秒)。当netty服务器正终止时,要确保在该时间段内不会产生RPC调用。如果出现了RPC调用,那么在该netty服务器终止时会该沉默期会重新开始。
alluxio.worker.network.netty.shutdown.timeout 15sec 等待netty服务器终止的最长时间(单位:秒)(忽略沉默期)。
alluxio.worker.network.netty.watermark.high 32KB 在切换到不可写状态之前,写队列中可存放的最大字节数。
alluxio.worker.network.netty.watermark.low 8KB 一旦写队列中的high watermark达到了,该队列在切换到可写状态之前必须刷新到该配置项指定的low watermark。
alluxio.worker.network.netty.worker.threads 0 处理请求的线程数目,0表示#cpuCores * 2
alluxio.worker.network.netty.writer.buffer.size.packets 16
alluxio.worker.port 29998 Alluxio worker节点运行端口。
alluxio.worker.principal Alluxio worker的Kerberos主体。
alluxio.worker.session.timeout 1min
alluxio.worker.tieredstore.block.lock.readers 1000 一个Alluxio数据块锁最大允许的并行读数目。
alluxio.worker.tieredstore.block.locks 1000 一个Alluxio数据块worker的数据块锁数目。较大值会达到更好的锁粒度,但会使用更多空间。
alluxio.worker.tieredstore.level0.alias MEM 在worker上最高存储层的别名,该值一定要对应master配置项中全局存储层之一。禁止将全局继承结构中较低级别存储层的别名放在worker中较高级别,因此默认情况下,在任何worker上SSD都不能在MEM之前。
alluxio.worker.tieredstore.level0.dirs.path /mnt/ramdisk 顶层存储层在存储目录中的路径。注意对于MacoS该值应为`/Volumes/`。
alluxio.worker.tieredstore.level0.dirs.quota ${alluxio.worker.memory.size} 顶层存储层容量。
alluxio.worker.tieredstore.level0.reserved.ratio
alluxio.worker.tieredstore.level0.watermark.high.ratio 0.95 在顶层存储层中的高水位比例 (取值为0到1之间)。
alluxio.worker.tieredstore.level0.watermark.low.ratio 0.7 在顶层存储层中的低水位比例 (取值为0到1之间)。
alluxio.worker.tieredstore.level1.alias
alluxio.worker.tieredstore.level1.dirs.path
alluxio.worker.tieredstore.level1.dirs.quota
alluxio.worker.tieredstore.level1.reserved.ratio
alluxio.worker.tieredstore.level1.watermark.high.ratio 0.95
alluxio.worker.tieredstore.level1.watermark.low.ratio 0.7
alluxio.worker.tieredstore.level2.alias
alluxio.worker.tieredstore.level2.dirs.path
alluxio.worker.tieredstore.level2.dirs.quota
alluxio.worker.tieredstore.level2.reserved.ratio
alluxio.worker.tieredstore.level2.watermark.high.ratio 0.95
alluxio.worker.tieredstore.level2.watermark.low.ratio 0.7
alluxio.worker.tieredstore.levels 1 worker上的存储层数目。
alluxio.worker.tieredstore.reserver.enabled false 是否启用层次化存储空间预留服务。
alluxio.worker.tieredstore.reserver.interval 1sec
alluxio.worker.tieredstore.retry 3 worker在处理每个存储层block操作时的最大重试次数。
alluxio.worker.ufs.block.open.timeout 5min
alluxio.worker.web.bind.host 0.0.0.0 Alluxio worker web服务绑定的主机名,参考See 多宿主网络
alluxio.worker.web.hostname Alluxio worker web UI绑定的主机名。
alluxio.worker.web.port 30000 Alluxio worker web UI运行的端口号。

用户配置项

用户配置项指定了文件系统访问的相关信息。

属性名默认值意义
alluxio.user.block.master.client.threads 10 数据块master client与数据块master通信使用的线程数目。
alluxio.user.block.remote.read.buffer.size.bytes 8MB 从远程Alluxio worker读取数据时的缓冲区大小。它决定了一个Alluxio client和一个Alluxio worker之间Thrift connections的最大数量
alluxio.user.block.remote.reader.class alluxio.client.netty.NettyRemoteBlockReader 选择运行client使用的网络栈,目前只支持`alluxio.client.netty.NettyRemoteBlockReader`(使用netty远程读取数据)。 这个设置已经不推荐使用,将在2.0.0版本中删除。
alluxio.user.block.remote.writer.class alluxio.client.netty.NettyRemoteBlockWriter 选择运行写数据块的client使用的网络栈。 这个设置已经不推荐使用,将在2.0.0版本中删除。
alluxio.user.block.size.bytes.default 512MB Alluxio文件的默认大小。
alluxio.user.block.worker.client.pool.gc.threshold 300sec
alluxio.user.block.worker.client.pool.size.max 128 数据块worker client池中缓存的worker client的最大数目。
alluxio.user.block.worker.client.threads 10 数据块worker client向worker发送心跳的线程池大小,如果某些worker宕机会影响client与其他正常worker的通信,那就增大该值。
alluxio.user.date.format.pattern MM-dd-yyyy HH:mm:ss:SSS 以指定的日期格式,在Cli命令和Web页面中显示日期。
alluxio.user.failed.space.request.limits 3 从文件系统请求空间的尝试次数。
alluxio.user.file.buffer.bytes 8MB 在文件系统中进行读写操作时使用的缓冲区大小。
alluxio.user.file.cache.partially.read.block true 当读取类型是 `CACHE` 或者 `CACHE_PROMOTE` 的时候, 如果设置这个变量为真, 没有完全读取的数据块也会被存到Alluxio内.
alluxio.user.file.copyfromlocal.write.location.policy.class alluxio.client.file.policy.RoundRobinPolicy 使用copyFromLocal命令时,选择worker进行写文件数据块所使用的默认定位机制。
alluxio.user.file.delete.unchecked false 在尝试以递归方式删除持久化目录之前,检查底层文件系统中的内容是否与Alluxio同步。
alluxio.user.file.master.client.threads 10 文件master client与文件master通信时使用的线程数目。
alluxio.user.file.metadata.load.type Once 从UFS中加载元数据的行为。当访问关于路径的信息,但该路径在Alluxio中不存在时,元数据能够从UFS中加载。合法的选项有`Always`,`Never`,`Once`。`Always`将总是访问UFS来看路径是否存在于UFS中。`Never`表示从来不会访问UFS。`Once`表示在”首次“的时候会访问UFS(根据缓存),但是以后都不会在访问。默认值为`Once`。
alluxio.user.file.passive.cache.enabled true
alluxio.user.file.readtype.default CACHE_PROMOTE 创建Alluxio文件时的默认读类型。可选值为`CACHE_PROMOTE` (如果数据已经在Alluxio存储内,将其移动到最高存储层,如果数据需要从底层存储进行读取,将其写到本地Alluxio的最高存储层)、`CACHE` (如果数据需要从底层存储进行读取,将其写到本地Alluxio的最高存储层), `NO_CACHE` (数据不与Alluxio交互,如果是从Alluxio中进行读取,将不会发生数据块迁移或者剔除)。
alluxio.user.file.seek.buffer.size.bytes 1MB 在文件seek操作中使用的缓存大小。这个选项只在 `alluxio.user.file.cache.partially.read.block` 打开的时候有效。
alluxio.user.file.waitcompleted.poll 1sec
alluxio.user.file.write.avoid.eviction.policy.reserved.size.bytes 0MB 当用户选择LocalFirstAvoidEvictionPolicy作为写文件数据块的定位机制时,用户需要配置worker预留一些数据量来保证数据的存储,默认是0MB。
alluxio.user.file.write.location.policy.class alluxio.client.file.policy.LocalFirstPolicy 选择worker进行写文件数据块时的默认定位机制。
alluxio.user.file.write.tier.default 0 数据块写入的默认存储层。可选值为整型数值。非负值代表从高层到底层的存储层(0代表第一层存储层,1代表第二层存储层,以此类推)。如果给定值大于存储层数量,这个数字代表最底层的存储层。负值代表从底层到高层的存储层(-1代表最底层存储层,-2代表次底层存储层,以此类推)如果给定值的绝对值大于存储层数量,这个数字代表最高层存储层。
alluxio.user.file.writetype.default MUST_CACHE 创建Alluxio文件时的默认写类型。可选值为`MUST_CACHE` (数据仅仅存储在Alluxio中,并且必须存储在其中), `CACHE_THROUGH` (尽量缓冲数据,同时同步写入到底层文件系统), `THROUGH` (不缓冲数据,同步写入到底层文件系统)。
alluxio.user.heartbeat.interval 1sec
alluxio.user.hostname 给alluxio客户端使用的主机名。
alluxio.user.lineage.enabled false 是否启用lineage。
alluxio.user.lineage.master.client.threads 10 lineage master client与lineage master通信所使用的线程数目。
alluxio.user.local.reader.packet.size.bytes 8MB
alluxio.user.local.writer.packet.size.bytes 64KB
alluxio.user.network.netty.channel
alluxio.user.network.netty.channel.pool.disabled false 禁用netty网络通道池特性。设置这个选项为真如果客户端的版本 >= 1.3.0 但是服务器版本 <= 1.2.x。
alluxio.user.network.netty.channel.pool.gc.threshold 300sec
alluxio.user.network.netty.channel.pool.size.max 1024 netty网络通道池的最大容量。
alluxio.user.network.netty.reader.buffer.size.packets 16
alluxio.user.network.netty.reader.packet.size.bytes 64KB
alluxio.user.network.netty.timeout 30sec
alluxio.user.network.netty.worker.threads 0 远程数据块worker client从远程数据块worker读取数据使用的线程数目。
alluxio.user.network.netty.writer.buffer.size.packets 16
alluxio.user.network.netty.writer.close.timeout 5min
alluxio.user.network.netty.writer.packet.size.bytes 64KB
alluxio.user.rpc.retry.base.sleep 50ms
alluxio.user.rpc.retry.max.num.retry 20 在遇到一些错误的时候,Alluxio客户端的RPC会基于指数级的延迟进行重试。这个配置决定了重试的最大次数。
alluxio.user.rpc.retry.max.sleep 30sec
alluxio.user.short.circuit.enabled true 是否允许用户绕过Alluxio读取数据。
alluxio.user.ufs.block.read.concurrency.max 2147483647
alluxio.user.ufs.block.read.location.policy alluxio.client.file.policy.LocalFirstPolicy
alluxio.user.ufs.block.read.location.policy.deterministic.hash.shards 1
alluxio.user.ufs.delegation.read.buffer.size.bytes 8MB 通过Alluxio worker从ufs读取数据时使用的缓存大小,每个读取操作至少会读取该数量的字节,除非已经到文件结束位置。
alluxio.user.ufs.delegation.write.buffer.size.bytes 2MB 通过Alluxio worker写入数据到ufs时使用的缓存大小,每个写入操作至少会写入该数量的字节,除非已经到文件结束位置。
alluxio.user.ufs.file.reader.class alluxio.client.netty.NettyUnderFileSystemFileReader 选择通过worker的data server从底层文件系统读取数据的client所使用的网络栈。目前只支持 `alluxio.client.netty.NettyUnderFileSystemFileReader` (远程读取使用netty)
alluxio.user.ufs.file.writer.class alluxio.client.netty.NettyUnderFileSystemFileWriter 选择通过worker的data server向底层文件系统写入数据的client所使用的网络栈。目前只支持 `alluxio.client.netty.NettyUnderFileSystemFileWriter` (远程读取使用netty)

集群管理配置项

如果使用诸如Mesos和YARN的集群管理器运行Alluxio,还有额外的配置项。

属性名默认值意义

安全性配置项

安全性配置项指定了安全性相关的信息,如安全认证和文件权限。 安全认证相关的配置同时适用于master、worker和用户。 文件权限相关的配置只对master起作用。 更多安全性相关的信息详见安全性页面。

属性名默认值意义
alluxio.security.authentication.custom.provider.class 当alluxio.security.authentication.type被设为CUSTOM时,实现安全认证功能的类。 该类必须实现'alluxio.security.authentication.AuthenticationProvider'接口。
alluxio.security.authentication.socket.timeout 10min
alluxio.security.authentication.type SIMPLE 安全认证模式。目前支持三种模式:NOSASL、SIMPLE和CUSTOM。 默认为NOSASL,即不启用安全认证功能。
alluxio.security.authorization.permission.enabled true 是否启用文件权限访问控制功能。
alluxio.security.authorization.permission.supergroup supergroup Alluxio文件系统的超级用户组。所有该组下的用户拥有超级权限。
alluxio.security.authorization.permission.umask 022 创建文件和目录时的文件权限掩码。初始化的创建权限为777,目录和文件之间相差111。 因此,当默认文件权限掩码为022时,新建目录的权限为755,新建文件的权限为644。
alluxio.security.group.mapping.cache.timeout 1min
alluxio.security.group.mapping.class alluxio.security.group.provider.ShellBasedUnixGroupsMapping 提供“用户-用户组”映射服务的实现类。Master可以通过该服务得到指定用户所在组的组成员。 该类必须实现'alluxio.security.group.GroupMappingService'接口。 默认的实现类通过执行'groups'命令得到指定用户所在组的组成员。
alluxio.security.login.username 当alluxio.security.authentication.type被设为SIMPLE或CUSTOM时,用户应用使用此配置项 作为连接Alluxio的用户名。若未设置该项,则使用系统登录用户名。

配置多宿主网络

Alluxio提供了一种使用多宿主网络的方式。如果你有多个NIC,并且想让Alluxio master监听所有的NIC,那么你可以将alluxio.master.bind.host设置为0.0.0.0,这样Alluxio client就可以通过任何一个NIC访问到master。其他以bind.host结尾的配置项也是类似的。

Need help? Ask a Question