用户 CLI

Alluxio的命令行界面为用户提供了对各种操作的访问,例如:

  • 启动或停止进程

  • 文件系统操作

  • 管理命令

调用可执行文件以查看可能的子命令:

$ ./bin/alluxio
Usage:
  bin/alluxio [command]

Available Commands:
  cache-filter Operations to manage cache filters
  conf         Get, set, and validate configuration settings, primarily those defined in conf/alluxio-site.properties
  exec         Run the main method of an Alluxio class, or end-to-end tests on an Alluxio cluster.
  fs           Operations to interface with the Alluxio filesystem
  help         Help about any command
  index        Commands to manage the Index Service
  info         Retrieve and/or display info about the running Alluxio cluster
  job          Command line tool for interacting with the job service.
  license      Check and manage license status
  mount        Operations to manage mount points
  priority     Commands to manage the priority eviction rules
  process      Start/stop cluster processes or remove workers
  quota        Operations to manage quota definitions
  ttl          Operations to manage TTL policy definitions

Flags:
      --debug-log   True to enable debug logging

Use "bin/alluxio [command] --help" for more information about a command.

要将JVM系统属性作为命令的一部分进行设置,请以-Dproperty=value的形式设置-D标志。

要附加由$ALLUXIO_USER_ATTACH_OPTS指定的调试java选项,请设置--attach-debug标志。

请注意,作为Alluxio部署的一部分,当从${ALLUXIO_HOME}的Alluxio安装中运行时,Alluxio shell也将采用${ALLUXIO_HOME}/conf/alluxio-site.properties中的配置。

cache-filter

cache-filter命令管理缓存过滤器规则

cache-filter add

用法: bin/alluxio cache-filter add [flags]

add命令可用于添加缓存过滤器规则定义。

标志:

  • --pattern: (必需) 匹配路径的正则表达式模式

  • --rule: (必需) immutable/skipCache/maxAge

  • --time: maxAge规则的时间 (默认: "")

  • --type: (必需) 元数据/数据

示例:

# 添加一个缓存过滤器规则
$ ./bin/alluxio cache-filter add --rule immutable --type metadata --pattern "s3://bucket/data/"
# 如果规则是maxAge,则需要指定maxAge时间
$ ./bin/alluxio cache-filter add --rule maxAge --type metadata --pattern "s3://bucket/auto-refresh/ --time 1h"

cache-filter list

用法: bin/alluxio cache-filter list

列出当前的缓存过滤器规则

示例:

$ bin/alluxio cache-filter list

cache-filter remove

用法: bin/alluxio cache-filter remove [flags]

remove命令可用于移除缓存过滤器规则。

标志:

  • --pattern: (必需) 要从缓存过滤器定义中移除的模式

  • --rule: (必需) immutable/skipCache/maxAge

  • --type: (必需) 元数据/数据

示例:

# 移除与指定规则和模式匹配的现有缓存过滤器规则
$ bin/alluxio cache-filter remove --type metadata --rule immutable --pattern "s3://bucket/data/"
# 无需指定maxAge时间
$ bin/alluxio cache-filter remove --type metadata --rule maxAge --pattern "s3://bucket/auto-refresh/"

cache-filter updateDefault

用法: bin/alluxio cache-filter updateDefault [flags]

updateDefault命令更新默认的缓存过滤器定义。

标志:

  • --rule: (必需) immutable/skipCache/maxAge

  • --time: maxAge规则设置的时间 (默认: "")

  • --type: (必需) 元数据/数据

示例:

# 将默认缓存过滤器定义设置为maxAge=12m
$ bin/alluxio cache-filter updateDefault --type metadata --rule maxAge --time 12m

conf

获取、设置和验证配置设置,主要是在conf/alluxio-site.properties中定义的那些配置项

conf get

用法: bin/alluxio conf get [key] [flags]

get命令打印给定键的配置值。如果键无效,它将返回一个非零退出代码。如果键有效但未设置,则会打印出空字符串。如果未指定键,则打印完整的配置。

注意:此命令不需要Alluxio集群正在运行。

标志:

  • --master: 显示主节点使用的配置属性 (默认: false)

  • --source: 显示配置属性的来源而不是值 (默认: false)

  • --unit: 返回值的单位,转换为与给定单位相对应。例如,使用"--unit KiB",配置值"4096B"将返回4。可能的选项包括B, KiB, MiB, GiB, TiB, PiB, MS, S, M, H, D (默认: "")

示例:

# 显示所有当前节点的配置
$ ./bin/alluxio conf get
# 显示属性键的值
$ ./bin/alluxio conf get alluxio.master.hostname
# 显示当前正在运行的Alluxio主master节点的配置
$ ./bin/alluxio conf get --master
# 显示配置的来源
$ ./bin/alluxio conf get --source
# 以给定单位显示值
$ ./bin/alluxio conf get alluxio.user.block.size.bytes.default --unit KiB
$ ./bin/alluxio conf get alluxio.master.journal.flush.timeout --unit S

exec

运行Alluxio类的main方法,或在Alluxio集群上运行端到端测试。

exec edgeTest

用法: bin/alluxio exec edgeTest [flags]

测试 edge 是否成功运行。

标志:

  • --no-cluster: 仅与edge 和ufs交互,不访问Dora集群。(默认: false)

  • --path: (必需) 路径可以是:

    1. Alluxio 路径,如 'alluxio:///data' (仅当未设置 '--no-cluster' 标志时)。

    2. 无 scheme 的路径,如'/'或'/s3'。这是Alluxio路径的语法糖。

    3. 带 scheme 的UFS路径,如's3://bucket/data'。该路径必须存在于Alluxio命名空间的某个挂载点中。

exec ufsIOTest

用法: bin/alluxio exec ufsIOTest [flags]

一个用于Alluxio和UFS之间I/O的基准测试工具。此测试将测量Alluxio工作节点和指定UFS路径之间的I/O吞吐量。每个工作节点将创建并发客户端,首先生成指定大小的测试文件,然后读取这些文件。在此过程中将测量写/读I/O吞吐量。

标志:

  • --io-size: 指定每个线程写入/读取的数据量。(默认: "")

  • --java-opt: 添加到任务命令行的java选项。可以重复使用。选项必须用引号括起来并以空格为前缀。例如:--java-opt " -Xmx4g" --java-opt " -Xms2g"。(默认: [])

  • --path: (必需) 指定写入/读取临时数据的路径。

  • --threads: 指定在每个工作节点上并发使用的线程数。(默认: 4)

示例:

# 这将在您的本地进程中运行到HDFS的I/O基准测试
$ ./bin/alluxio exec ufsIOTest --path hdfs://<hdfs-address>
# 这将在Alluxio工作节点中调用到HDFS的I/O基准测试
# 每个工作节点上将创建2个线程
# 每个线程正在写入然后读取512m的数据
$ ./bin/alluxio exec ufsIOTest --path hdfs://<hdfs-address> --io-size 512m --threads 2

exec ufsTest

用法: bin/alluxio exec ufsTest [标志]

测试Alluxio和给定UFS之间的集成,以验证UFS语义

标志:

  • --path: (必需) 要运行测试的完整UFS路径。

  • --test: 测试名称,此选项可以多次传递以指示多个测试 (默认: [])

fs

与Alluxio文件系统交互的操作。对于接受Alluxio URI作为参数的命令,如ls或mkdir,参数应为下述之一:

  • 完整的Alluxio URI,例如alluxio://<masterHostname>:<masterPort>/<path>

  • 没有scheme header 的路径,例如/path,以便使用在alluxio-site.properties中设置的默认主机名和端口

注意:所有fs命令都需要Alluxio集群正在运行。

大多数需要路径组件的命令都允许使用通配符参数以便于使用。例如,命令bin/alluxio fs rm '/data/2014*'会删除data目录中任何以2014为前缀的内容。

某些shell会尝试对输入路径进行通配符扩展,导致奇怪的错误。作为一种变通方法,您可以禁用通配符扩展(取决于shell类型;例如,set -f)或通过转义通配符。例如,命令bin/alluxio fs cat /\\*使用了两次转义反斜杠字符。这是因为shell脚本最终会调用一个java程序,该程序应该有最终的转义参数cat /\\*

fs cat

用法: bin/alluxio fs cat [path]

cat命令将Alluxio中文件的内容打印到shell。

示例:

# 打印/output/part-00000的内容
$ ./bin/alluxio fs cat /output/part-00000

fs check-cached

用法: bin/alluxio fs check-cached --path|--index-file <path> [--limit <limit-size>] [--sample <sample-size>] [flags]

此命令检查指定的文件是否缓存在Alluxio中。它支持检查指定路径下的文件或从本地索引文件中提供的列表。此命令支持多可用区,但不支持文件分段功能。

输出包括统计摘要和按缓存状态分类的文件样本。每个文件被分类为以下之一:

项目名称
描述

检查的总文件数

扫描的文件总数

在所有副本上完全缓存的文件数

在所有副本上完全缓存的文件

在至少1个副本上完全缓存的文件数

在至少一个副本上完全缓存的文件

部分缓存的文件数

在工作节点之间部分缓存但未完全缓存的文件

未缓存的文件数

完全未缓存的文件

失败的文件数

评估失败的文件

检查的总字节数

所有检查文件的总逻辑大小

近似唯一缓存字节数

估计的唯一缓存字节数(不包括复制)

近似缓存字节数(计算所有副本)

估计的总缓存字节数,包括所有副本

注意:此命令从路径中均匀抽样文件,直到达到"--limit"选项指定的数量,并检查抽样文件的缓存状态。每个类别都会显示样本路径(数量上限由 --sample 指定)。当目录中的文件数少于样本大小时,将对所有文件进行抽样。当检查一个大目录并设置了"--recursive"时,抽样是在递归列出指定路径下所有文件生成的总文件集中进行的,而不是在每个子目录中多次抽样。这意味着,如果子目录的文件数多于父目录,则子目录中的缓存使用量可能会显得比其父目录多。

标志:

  • --index-file: 本地索引文件,包含要检查的文件路径列表。每行应包含一个ufs文件路径。(默认: "")

  • --limit: 限制要检查的文件数 (默认: 1000)

  • --path: 要检查缓存状态的路径。路径可以是Alluxio路径或UFS路径。(默认: "")

  • --recursive: 是否递归检查给定路径中的文件 (默认: false)

  • --sample: 在输出中打印的文件数 (默认: 100)

示例:

# 检查目录下的缓存状态
$ alluxio fs check-cached --path /s3/test --recursive
# 使用索引文件进行检查
$ alluxio fs check-cached --index-file s3:///my-bucket/index.txt --limit 500 --sample 50
# 示例输出:
Total files checked: 3
Fully cached on all replicas files count: 3
Fully cached on at least 1 replica files count: 0
Partially cached files count: 0
Not cached files count: 0
Failed files count: 0
Total bytes checked: 30.00MB
Approximate unique bytes cached: 30.00MB
Approximate bytes cached (all replica counted): 120.00MB
--------------Fully cached on all replicas files samples (up to 100)------------------
file:///home/yimin/alluxio/ufs/to_load_test2/10mb_1
file:///home/yimin/alluxio/ufs/to_load_test2/10mb_2
file:///home/yimin/alluxio/ufs/to_load_test2/10mb_3
--------------Fully cached on at least 1 replica files samples (up to 100)------------------
--------------Partially cached files samples (up to 100)-----------------
--------------Not cached files samples (up to 100)------------------
--------------Failed files samples (up to 100)------------------

fs checksum

用法: bin/alluxio fs checksum [path]

checksum命令输出Alluxio中文件的md5值。这可用于验证存储在Alluxio中的文件的内容。

示例:

# 比较校验和值
# 来自Alluxio文件系统的值
$ ./bin/alluxio fs checksum /LICENSE
md5sum: bf0513403ff54711966f39b058e059a3
# 来自本地文件系统的值
md5 LICENSE
MD5 (LICENSE) = bf0513403ff54711966f39b058e059a3

fs compact

用法: bin/alluxio fs compact [path] [flags]

compact命令用于压缩位置写文件(position write file)。

标志:

  • --commitTimeout: 默认为1d。未提交的文件(mtime大于manifest的mtime的文件)在压缩期间会保留。您可以配置此值以删除未提交的文件。例如,我们可以将其设置为8h,这意味着mtime早于当前时间8小时以上的文件将被删除,而mtime在8小时内的文件将被保留。(默认: "")

  • --deleteOrphanFrameFiles: 默认为false。是否删除孤立的帧文件。(默认: false)

  • --deleteOrphanFrameListFiles: 默认为false。是否删除孤立的帧列表文件。(默认: false)

  • --deleteSnapshotsReferencedFiles: 默认为false。是否删除快照引用的文件。如果删除,文件将无法回滚到以前的版本。(默认: false)

  • --exportPath: 默认为null。如果指定了路径,在压缩期间,帧将被合并成一个完整的文件并输出到给定路径。(默认: "")

  • --fileLifecycle: 默认为0。未引用的文件将在压缩期间被删除。您可以配置此值以保留一些最近创建的文件。例如,我们可以将其设置为8h,这意味着mtime(修改时间)早于当前时间8小时以上的文件将被删除,而mtime在8小时内的文件将被保留。(默认: "")

  • --maxRetainedSnapshots: 默认为4。要保存的最大快照数。当快照数超过此限制时,将删除最旧的快照。(默认: "")

  • --parallelism: 默认为1。压缩任务的并发度。(默认: "")

  • --recursive: 默认为false。是否递归压缩给定路径。(默认: false)

示例:

# 压缩文件 /log.txt
$ ./bin/alluxio fs compact [--deleteOrphanFrameListFiles] [--deleteOrphanFrameFiles] [--fileLifecycle 6h] [--commitTimeout 1h] [--maxRetainedSnapshots 4] [--deleteSnapshotsReferencedFiles] [--exportPath /log.compaction.txt] [--recursive] [--parallelism 8] /log.txt

fs cp

用法: bin/alluxio fs cp [srcPath] [dstPath] [flags]

在Alluxio文件系统内或本地与Alluxio文件系统之间复制文件或目录。file://方案表示本地文件系统路径,alluxio://方案或无方案表示Alluxio文件系统路径。

标志:

  • --buffer-size: 从本地复制或复制到本地时,以字节数表示的读取缓冲区大小,默认为64MiB和8MiB (默认: 0)

  • --forced,-f: 如果目标路径存在,则覆盖它 (默认: false)

  • --recursive,-R: 将目录子树复制到目标目录 (默认: false)

  • --thread: 用于并行复制文件的线程数,默认为2 * CPU核心数 (默认: 0)

示例:

# 在Alluxio文件系统内复制
$ ./bin/alluxio fs cp /file1 /file2
# 将本地文件复制到Alluxio文件系统
$ ./bin/alluxio fs cp file:///file1 /file2
# 将Alluxio中的文件复制到本地
$ ./bin/alluxio fs cp alluxio:///file1 file:///file2
# 在Alluxio文件系统内递归复制目录
$ ./bin/alluxio fs cp -R /dir1 /dir2

fs head

用法: bin/alluxio fs head [path] [flags]

head命令将文件的前1KiB数据打印到shell。指定-c标志可设置要打印的字节数。

标志:

  • --bytes,-c: 要打印的字节大小 (默认: "")

示例:

# 打印文件的前2048字节
$ ./bin/alluxio fs head -c 2048 /output/part-00000

fs location

用法: bin/alluxio fs location path [--full-scan | --segments <segments> [--segment-size <size>]] [flags]

该命令显示存储指定文件的主机列表以及缓存百分比。

响应以json格式返回。当未指定--segments时,该命令将整个文件作为一个整体进行检查,并返回负责缓存该文件的工作节点。json包含两个列表。cacheWorkers列表仅在指定--full-scan时填充,而expectedWorkers始终填充。cachedWorkers包含缓存该文件的所有工作节点。expectedWorkers包含所有候选工作节点(通过一致性哈希计算),无论它们是否缓存该文件。如果工作节点成员资格发生变化,可能会有工作节点缓存数据但不是预期的工作节点。列表中的每个元素都包含工作节点信息以及文件缓存百分比。

当指定--segments时,该命令检查工作节点对文件每个分段的缓存情况。返回的json包含一个分段列表和expectedWorkers列表。分段没有'cachedWorkers'列表,因为目前Alluxio不支持查询单个分段的缓存状态。

注意:此命令支持多可用区。

标志:

  • --full-scan: 此参数通常用于调试缓存未命中问题。如果指定,该命令将扫描所有工作节点而不是候选工作节点。否则,该命令将只扫描预期的工作节点(通过一致性哈希计算)。(默认: false)

  • --segment-size: 覆盖Alluxio配置中设置的分段大小,例如 "2MB"。(默认: "")

  • --segments: 要查找其位置的文件分段的ID。可以是一个分段或一个分段范围,例如 "0" 表示仅第一个分段,"0-2" 表示分段 "0"、"1" 和 "2"。省略范围的末尾表示从指定的分段开始到文件末尾,例如 "0-" 是文件的所有分段。(默认: "")

示例:

$/bin/alluxio fs location  s3://my-bucket/to_load_test/10mb_16
{
   "cachedWorkers":null,
   "expectedWorkers":[
      {
         "clusterName":"az1",
         "cachedPercentage":100,
         "candidateWorker":true,
         "id":"worker-e569d56b-bfe6-47a7-92f6-506fcc70a3cc",
         "host":"114.5.1.4"
      },
      {
         "clusterName":"az1",
         "cachedPercentage":100,
         "candidateWorker":true,
         "id":"worker-8dfe969b-3acc-4c07-9e06-e7d60c15748f",
         "host":"114.5.1.5"
      },
      {
         "clusterName":"az2",
         "cachedPercentage":100,
         "candidateWorker":true,
         "id":"worker-7094d68c-79fb-433b-a338-eed983758b0b",
         "host":"114.5.1.6"
      },
      {
         "clusterName":"az2",
         "cachedPercentage":100,
         "candidateWorker":true,
         "id":"worker-33569e48-e981-456e-9a7c-8bf173a1c1c0",
         "host":"114.5.1.7"
      }
   ],
   "fileName":"s3://my-bucket/to_load_test/10mb_16"
}

fs ls

用法: bin/alluxio fs ls [path] [flags]

ls命令列出目录中的所有直接子项并显示其文件信息。对文件使用ls只会显示该特定文件的信息。

标志:

  • --cache-filter,-c: 根据缓存过滤器配置显示文件的元数据和数据的可缓存性规则;如果未启用缓存过滤器,则显示“Disabled”。请注意,解析后的缓存规则基于命令行观察到的缓存过滤器。(默认: false)

  • --help: 此命令的帮助信息 (默认: false)

  • --human-readable,-h: 以人类可读的格式打印大小 (默认: false)

  • --list-dir-as-file,-d: 将目录列为文件 (默认: false)

  • --recursive,-R: 递归列出子目录 (默认: false)

示例:

# 列出/s3/data的直接子项
$ ./bin/alluxio fs ls /s3/data

fs mkdir

用法: bin/alluxio fs mkdir [path1 path2 ...]

mkdir命令在Alluxio文件系统中创建一个新目录。它是递归的,会创建任何不存在的父目录。请注意,创建的目录在底层存储系统中不会立即生成,只有当目录中的文件被持久化到底层存储时才会创建。对无效或已存在的路径使用mkdir将会失败。

示例:

# 创建文件夹结构
$ ./bin/alluxio fs mkdir /users
$ ./bin/alluxio fs mkdir /users/Alice
$ ./bin/alluxio fs mkdir /users/Bob

fs mv

用法: bin/alluxio fs mv [srcPath] [dstPath]

mv命令将文件或目录移动到Alluxio中的另一个路径。目标路径必须不存在或是一个目录。如果是目录,则源文件或目录将被放置为该目录的子项。该命令仅是元数据操作,不影响文件的数据块。

示例:

# 移动文件
$ ./bin/alluxio fs mv /data/2014 /data/archives/2014

fs pathmapping

用法: bin/alluxio fs pathmapping [path]

输入要测试的原始路径。返回值中的mapped字段表示映射后的路径,而null值表示没有匹配的映射规则。

示例:

# 测试/log.txt映射到哪个路径
$ ./bin/alluxio fs pathmapping /log.txt

fs rm

用法: bin/alluxio fs rm [path] [flags]

rm命令从Alluxio空间和底层存储系统中删除文件。此命令返回后,该文件将立即不可用,但实际数据可能会在一段时间后才被删除。

标志:

  • --recursive,-R: 是否递归删除指定目录子树中的文件 (默认: false)

  • --skip-ufs-check,-U: 是否跳过检查相应的UFS内容是否同步 (默认: false)

示例:

# 从Alluxio和底层存储系统中删除文件
$ ./bin/alluxio fs rm /tmp/unused-file

fs stat

用法: bin/alluxio fs stat [path] [flags]

stat命令将文件或目录的FileInfo表示形式转储到shell。

标志:

  • --format,-f: 以给定格式显示信息:"%N": 文件名 "%z": 文件大小(字节) "%u": 所有者 "%g": 所有者的组名 "%i": 文件ID "%y": UTC格式的修改时间 'yyyy-MM-dd HH:mm:ss' "%Y": Unix时间戳格式的修改时间(毫秒) "%b": 为文件分配的块数 (默认: "")

示例:

# 显示文件的状态
$ ./bin/alluxio fs stat /data/2015/logs-1.txt
# 显示目录的状态
$ ./bin/alluxio fs stat /data/2015
# 显示文件的大小
$ ./bin/alluxio fs stat -f %z /data/2015/logs-1.txt

fs tail

用法: bin/alluxio fs tail [path] [flags]

tail命令将文件的最后1KiB数据打印到shell。指定--bytes标志可设置要打印的字节数。

标志:

  • --bytes: 要打印的字节大小 (默认: "")

示例:

# 打印文件的最后2048字节
$ ./bin/alluxio fs tail --bytes 2048 /output/part-00000

fs test

用法: bin/alluxio fs test [path] [flags]

测试路径的属性,如果属性为真则返回0,否则返回1

标志:

  • --dir,-d: 测试路径是否为目录 (默认: false)

  • --exists,-e: 测试路径是否存在 (默认: false)

  • --file,-f: 测试路径是否为文件 (默认: false)

  • --not-empty,-s: 测试路径是否不为空 (默认: false)

  • --zero,-z: 测试路径是否为零长度 (默认: false)

fs touch

用法: bin/alluxio fs touch [path]

在指定路径创建一个0字节的文件,该文件也将在底层文件系统中创建

index

管理Alluxio索引服务的操作。

index invalidate

用法: bin/alluxio index invalidate [flags]

使Alluxio索引服务中的缓存目录列表失效。下次列出此目录时,Alluxio将从UFS加载最新的目录列表。

标志:

  • --R: 递归使缓存失效 (默认: false)

  • --path: (必需) 要使其缓存失效的目录路径。路径可以是Alluxio路径或UFS路径。

示例:

# 使/frequently_updated_directory上的列表缓存失效
$ bin/alluxio index invalidate --path /frequently_updated_directory
# 递归地使从/frequently_updated_directory开始的所有路径的列表缓存失效
# 注意,如果目录树很大,此递归操作可能需要很长时间才能完成。
# 如果可能,请尝试直接使目标目录失效,而不是使用-R。
$ bin/alluxio index invalidate -R --path /frequently_updated_directory

info

检索和/或显示有关正在运行的Alluxio集群的信息

info cluster

用法: bin/alluxio info cluster

打印绑定的集群信息

info nodes

用法: bin/alluxio info nodes

显示所有已注册工作节点的状态

info production

用法: bin/alluxio info production

打印生产ID

info version

用法: bin/alluxio info version

打印Alluxio版本。

job

与作业服务交互的命令行工具。

job free

用法: bin/alluxio job free [flags]

free命令触发调度程序作业来释放某个目录并释放所有工作节点中的缓存页面。

标志:

  • --batch-size: [提交] 每个工作节点每秒释放文件的速度。如果值为0或为空,则将设置为'alluxio.job.batch.size'的值 (默认: 0)

  • --format: [进度] 输出格式,可以是TEXT或JSON (默认: "")

  • --local-index-file: [所有] 释放操作的源本地索引文件 (默认: "")

  • --path: [所有] 释放操作的源路径。路径可以是Alluxio路径或UFS路径。(默认: "")

  • --progress: 查看已提交作业的进度 (默认: false)

  • --recursive: [提交] 递归释放所有文件 (默认: true)

  • --replicas: [提交] 要释放的副本数 (默认: 1)

  • --stop: 停止正在运行的作业 (默认: false)

  • --submit: 提交作业 (默认: false)

  • --sync: [提交] 作业是否需要同步运行并获取执行结果 (默认: false)

  • --ufs-index-file: [所有] 释放操作的源索引文件 (默认: "")

  • --verbose: [进度] 详细输出 (默认: false)

示例:

# 提交一个释放作业以释放路径缓存
$ ./bin/alluxio job free --path s3://bucket/path --submit
# 查看已提交作业的进度
$ ./bin/alluxio job free --path s3://alluxio/path --progress
Progress for Free path file 's3://alluxio/path':
	Job Id: b21ce9fb-f332-4d39-8bb4-554f9a4fa601
	Job Submitted: Fri Feb 02 21:28:56 CST 2024
	Job path: s3://alluxio/path
	Job State: SUCCEEDED, finished at Fri Feb 02 21:29:01 CST 2024
	Free Info :	totalFile:4 totalByte:3072.00KiB
	Free Files Failed: 0
	Free Bytes Failed: 0B
	Free Files Succeeded: 4
	Free Bytes Succeeded: 3072.00KiB
# 尝试停止已提交的作业。工作节点将尽快停止在指定路径下释放缓存。
$ ./bin/alluxio job free --path s3://alluxio/path --stop

job list

用法: bin/alluxio job list [flags]

根据作业类型和作业状态列出作业。

标志:

  • --count: 预期的列出作业数 (默认: -1)

  • --job-state: 作业状态。RUNNING|VERIFYING|STOPPED|SUCCEEDED|FAILED|ALL (默认: "")

  • --job-type: 作业类型。LOAD|FREE|COPY|MOVE|ALL (默认: "")

  • --last-key: 从上一个键开始列出作业 (默认: "")

示例:

$./bin/alluxio job list --job-type all --job-state all
List job type:ALL state:ALL
{"mJobId":"1c723247-8381-4d69-bd29-b0f4fb34fc8d","mFreePath":"s3://alluxio/test-dir/","mJobType":"free","mJobState":"SUCCEEDED","mFreeBytes":81920000,"mFreeFileNums":20000,"mFreeFailFileNums":0,"mFreeFailBytes":0,"mFailInfos":{},"mTasks":{"WorkerInfo{id=0, identity=worker-1, address=WorkerNetAddress{host=hostname, containerHost=, rpcPort=29999, dataPort=29997, webPort=30000, domainSocketPath=, secureRpcPort=0, httpServerPort=0}, lastContactSec=0, state=LIVE, capacityBytes=0, usedBytes=0, startTimeMs=0, capacityBytesOnTiers=null, usedBytesOnTiers=null, version=, revision=}":"SUCCESS"},"mVerbose":true,"mStartTime":1722490595894,"mEndTime":1722490606649}
{"mPath":"s3://alluxio/test-dir/","mIndexFile":"","mJobType":"load","mVerbose":true,"mJobState":"SUCCEEDED","mVerificationEnabled":false,"mSkippedByteCount":0,"mLoadedByteCount":81920000,"mScannedInodesCount":20000,"mLoadedNonEmptyFileCopiesCount":20000,"mTotalByteCount":81920000,"mThroughput":1462857,"mFailureFilesPercentage":0.0,"mFailureSubTasksPercentage":0.0,"mRetrySubTasksPercentage":0.0,"mFailedFileCount":0,"mRecentFailedSubtasksWithReasons":[],"mRecentRetryingSubtasksWithReasons":[],"mSkipIfExists":false,"mMetadataOnly":false,"mRunningStage":"","mRetryDeadLetterQueueSize":0,"mTimeElapsed":52693,"mSegmentEnabled":false}

job load

用法: bin/alluxio job load [flags]

load命令将数据从底层存储系统移动到Alluxio存储中。例如,load可用于为分析作业预取数据。如果在目录上运行load,目录中的文件将被递归加载。

标志:

  • --batch-size: [提交] 每个工作节点加载的批处理大小。如果值为0或为空,则将设置为alluxio.job.batch.size的值 (默认: 0)

  • --file-filter-regx: [提交] 跳过与正则表达式模式匹配的文件 (默认: "")

  • --format: [进度] 输出格式,可以是TEXT或JSON (默认: "")

  • --index-file: [所有] 加载操作的索引文件的源路径 (默认: "")

  • --load-policy: [提交] 目前仅支持IF_CHANGED。当缓存的文件发生变化时,重新检查元数据并更新。(默认: "")

  • --local-index-file: [所有] 加载操作的索引文件的源本地路径 (默认: "")

  • --metadata-only: [提交] 仅加载文件元数据 (默认: false)

  • --partial-listing: [提交] 使用部分目录列表,在读取整个目录之前初始化加载,但无法报告某些进度详细信息 (默认: false)

  • --path: [所有] 加载操作的源路径。路径可以是Alluxio路径或UFS路径。(默认: "")

  • --pre-scan-file: [提交] 预先遍历文件并获取文件总数 (默认: false)

  • --progress: 查看已提交作业的进度 (默认: false)

  • --replicas: [提交] 要加载的副本数 (默认: 0)

  • --skip-if-exists: [提交] 跳过已存在的完全缓存的文件 (默认: false)

  • --skip-quota-check: [提交] 跳过配额检查并强制提交加载作业 (默认: false)

  • --stop: 停止正在运行的作业 (默认: false)

  • --submit: 提交作业 (默认: false)

  • --sync: [提交] 作业是否需要同步运行并获取执行结果 (默认: false)

  • --verbose: [进度] 详细输出 (默认: false)

  • --verify: [提交] 加载完成后运行验证,并加载任何新文件 (默认: false)

示例:

# 提交一个加载任务
$ ./bin/alluxio job load --path <full-ufs-path> --submit
OR
$ ./bin/alluxio job load --index-file <full-ufs-path> --submit
OR
$ ./bin/alluxio job load --local-index-file <local-path> --submit
如果使用 --index-file,load 命令会读取该索引文件,并加载其中的文件路径。索引文件既支持文件也支持目录,每一行都代表一个 UFS 路径。
示例索引文件如下:
hdfs://cluster/root/file
s3://bucket/directory/
#file:///ignored
HDFS 路径会作为单个文件加载;S3 路径由于以分隔符 / 结尾,会作为目录递归加载;本地文件路径会被忽略,因为它以 # 开头,被视为注释行。
# 查看已提交作业的进度
$ ./bin/alluxio job load --path <full-ufs-path> --progress
OR
$ ./bin/alluxio job load --index-file <full-ufs-path> --progress
OR
$ ./bin/alluxio job load --local-index-file <local-path> --progress
# 示例输出
Progress for loading path '/path':
        Settings:       bandwidth: unlimited    verify: false
        Job State: SUCCEEDED
        Files Processed: 1000
        Bytes Loaded: 125.00MiB
        Throughput: 2509.80KiB/s
        Block load failure rate: 0.00%
        Files Failed: 0
# 停止已提交作业
$ ./bin/alluxio job load --path <full-ufs-path> --stop
OR
$ ./bin/alluxio job load --index-file <full-ufs-path> --stop
OR
$ ./bin/alluxio job load --local-index-file <local-path> --stop

job rebalance

用法: bin/alluxio job rebalance [flags]

rebalance命令触发调度程序作业在工作节点之间重新平衡数据

标志:

  • --force: [提交] 即使某些工作节点离线也触发重新平衡 (默认: false)

  • --format: [进度] 输出格式,可以是TEXT或JSON (默认: "")

  • --load-bandwidth: [提交] 每个工作节点每秒的加载带宽(字节),例如:1048574/5Mi/10GiB/... (默认: "")

  • --load-batch-size: [提交] 加载文件的批处理大小 (默认: 0)

  • --progress: 查看已提交作业的进度 (默认: false)

  • --prune-bandwidth: [提交] 每个工作节点每秒的修剪带宽(字节),例如:1048574/5Mi/10GiB/... (默认: "")

  • --skip-prune: [提交] 是否可以跳过修剪过程 (默认: false)

  • --stop: 停止正在运行的作业 (默认: false)

  • --submit: 提交作业 (默认: false)

  • --target: [所有] 重新平衡的目标,worker-表示特定工作节点,ALL表示所有工作节点 (默认: "")

  • --verbose: [进度] 详细输出 (默认: false)

示例:

# 提交一个重新平衡作业
 $ ./bin/alluxio job rebalance --submit --target [ALL|worker-.*]
 
 # 查看已提交作业的进度
 $ ./bin/alluxio job rebalance --progress --target [ALL|worker-.*]
	Progress for the rebalance job:
	Time Elapsed: 00:00:05
	Job started at: 2024-11-21 18:48:58
	Job State: SUCCEEDED
	Total workers: 1
	Succeeded workers: 1
	Failed workers: 0
	Running workers: 0
	Files pruned: 0
	Bytes pruned: 0B
	Files loaded: 0
	Bytes loaded: 0B
	Files preserved: 7
	Bytes preserved: 49B
	Files failed: 0
 
 # 尝试停止已提交的任务。工作节点会尽快停止正在执行的重新平衡操作。
 $ ./bin/alluxio job rebalance --stop --target [ALL|worker-.*]

license

检查和管理许可证状态

license allocate

用法: bin/alluxio license allocate [flags]

将给定的部署许可证分配给提供的ETCD集群

标志:

  • --clusters: Base64编码的集群配置JSON (默认: "")

  • --licenseString: 许可证字符串 (默认: "")

license show

用法: bin/alluxio license allocate [flags]

根据prod jar和配置显示许可证的详细信息

标志:

  • --output,-o: 输出格式,可以是json/yaml (默认: "")

license status

用法: bin/alluxio license status [flags]

列出许可证可能使用的集群的当前状态

标志:

  • --etcdPassword: 登录ETCD的密码,与'alluxio.etcd.username'配对时等同于'alluxio.etcd.password'的值,或与'license.etcd.username'配对时等同于'license.etcd.password'的值 (默认: "")

  • --raw: 输出原始JSON数据,而不是人类可读的字节、日期时间和持续时间格式。(默认: false)

license update

用法: bin/alluxio license update

使用当前站点属性文件中的许可证进行更新

mount

mount命令管理从底层存储路径到Alluxio路径的映射,在该 Alluxio 路径下创建的文件和文件夹,会对应地存储在底层存储路径中的相应文件或文件夹中。

mount add

用法: bin/alluxio mount add [flags]

add命令可用于使另一个存储系统中的数据在Alluxio中可用。

标志:

  • --master: 设置为true以创建由Alluxio主节点跟踪的挂载点 (默认: false)

  • --option: 与挂载点关联的配置选项,格式为=,例如凭据 (默认: [])

  • --path: (必需) 要挂载到的Alluxio路径

  • --shared: 将挂载点的权限位设置为所有Alluxio用户均可访问 (默认: false)

  • --ufs-uri: (必需) 要挂载的UFS URI

示例:

# 在/hdfs添加一个挂载点以访问hdfs://host1:9000/data/
# 注意,挂载点必须在根目录下
$ ./bin/alluxio mount add --path /hdfs --ufs-uri hdfs://host1:9000/data/
# 添加一个需要S3凭据才能访问的S3存储桶挂载
$ ./bin/alluxio mount add --path /s3 --ufs-uri s3://data-bucket/ --option s3a.accessKeyId=<accessKey> --option s3a.secretKey=<secretKey> --option alluxio.underfs.s3.region=us-east-1

mount list

用法: bin/alluxio mount list [flags]

列出Alluxio文件系统上设置的所有已知挂载点

标志:

  • --master: 设置为true以列出基于主节点注册的挂载点 (默认: false)

示例:

# 列出挂载点
$ ./bin/alluxio mount list

mount remove

用法: bin/alluxio mount remove [flags]

移除指定路径的挂载点

标志:

  • --master: 设置为true以删除基于主节点注册的挂载点 (默认: false)

  • --path: (必需) 要卸载的Alluxio路径

示例:

# 移除/mnt/hdfs处的挂载点
$ ./bin/alluxio mount remove --path /mnt/hdfs

priority

用于管理优先级驱逐规则的操作。您可以添加、删除或更新规则,也可以列出现有规则。规则由一个 UFS 路径和一个优先级组成。凡是路径前缀匹配该规则的文件,都会被分配该规则的优先级。当某个 worker 的缓存空间不足时,只有在低优先级文件全部被驱逐后,高优先级文件才会被驱逐。

priority add

用法: bin/alluxio priority add [flags]

添加一条包含路径和优先级的驱逐规则。

标志:

  • --path: (必需)需要添加规则的路径。可以是 Alluxio 路径或 UFS 路径。

  • --priority: (必需)规则的优先级。可选项:highmediumlow

示例:

# 为 s3://bucket/vip_data 添加一个优先级为 HIGH 的驱逐规则 
$ bin/alluxio priority add --path s3://bucket/vip_data --priority high

priority list

用法: bin/alluxio priority list

列出当前的优先级驱逐规则

示例:

$ bin/alluxio priority list

priority remove

用法: bin/alluxio priority remove [flags]

移除通过路径指定的优先级规则

标志:

  • --path:(必需)要移除规则的路径。该路径可以是 Alluxio 路径或 UFS 路径。

示例:

# 移除规则
$ bin/alluxio priority remove --path s3://bucket/vip_data

priority update

用法: bin/alluxio priority update [flags]

更新现有规则的优先级。例如,可以提高某个路径的优先级,这样在缓存空间不足时,该路径下的缓存文件更有可能被保留。请注意,更新后的规则需要一些时间才能生效,因为各个工作节点需要调整其相关文件的内部状态。

标志:

  • --path:(必需)要更新优先级的规则路径。该路径可以是 Alluxio 路径或 UFS 路径。

  • --priority: (必需)新的优先级。可选项:highmediumlow

示例:

# 将 s3://bucket/vip_data 的优先级更新为 medium 
$ bin/alluxio priority update --path s3://bucket/vip_data --priority medium

process

启动/停止集群进程或移除工作节点

process remove-worker

用法: bin/alluxio process remove-worker [flags]

将指定的工作节点从集群中移除,这样客户端和其他工作节点就不会再将其作为服务对象。在安全移除之前,必须先停止该工作节点。

标志:

  • --name,-n: (必需)工作节点 ID

process start

用法: bin/alluxio process start [flags]

在本地主机上启动单个进程,或在集群中启动一组相同类型的进程。 如果要启动一组进程,需确保本地主机可以无密码 SSH 访问集群中的其他节点。 该命令会根据进程类型,从 conf/coordinatorconf/workers 文件中解析出需要运行的主机名。

标志:

  • --async,-a: 异步启动进程,不监控启动完成状态(默认:false)

  • --console-log,-c: 除日志文件外,还将日志输出到 stdout(默认:false)

  • --direct,-d: (用于 Docker)直接运行启动命令,跳过其他步骤,并避免使用 nohup 启动(默认:false)

  • --skip-disk-check: 跳过磁盘空间检查(默认:false)

  • --skip-kill-prev,-N: 启动时避免终止之前运行的进程(默认:false)

  • --ssh-key: (用于启动远程进程)SSH 私钥路径,用于 SSH 登录到其他节点(默认:"")

process stop

用法: bin/alluxio process stop [flags]

在本地主机上停止单个进程,或在集群中停止一组相同类型的进程。如果要停止一组进程,需确保本地主机可以无密码 SSH 访问集群中的其他节点。该命令会根据进程类型,从 conf/coordinatorconf/workers 文件中解析需要运行的主机名。

标志:

  • --soft,-s: 仅执行软停止,不强制终止进程(默认:false)

  • --ssh-key:(用于停止远程进程)SSH 私钥路径,用于 SSH 登录到其他节点(默认:"")

quota

quota 命令用于管理 Alluxio 系统中的所有配额定义。Alluxio 支持在 Alluxio 路径的目录 上设置配额。

quota add

用法: bin/alluxio quota add [flags]

使用 add 命令可以在目录上设置新的配额定义。该配额定义将应用于所有 Alluxio worker 的总缓存。

标志:

  • --directory: (必需)要设置配额的路径。该路径可以是 Alluxio 路径或 UFS 路径。

  • --quota-size:(必需)配额大小,例如:10GiB、1TiB

示例:

# 在 Alluxio 命名空间中的 /s3/ 目录上添加 10GiB 的配额
# 所有 Alluxio worker 的缓存总量将被限制为 10GiB
$ bin/alluxio quota add --directory /s3/ --quota-size 10GiB

quota list

用法: bin/alluxio quota list [flags]

使用 list 命令可以列出 Alluxio 中已定义的所有配额的当前使用情况。您也可以使用 --interval参数来指定刷新配额使用信息的时间间隔。

标志:

  • --interval: 刷新配额使用信息的时间间隔。(默认:"")

  • --precise-bytes: 以字节数而非人类可读格式显示大小。(默认:false)

  • --verbose: 显示每个 worker 的详细配额使用情况。(默认:false)

示例:

# 列出当前配额使用情况
$ bin/alluxio quota list
Alluxio path                                    Capacity                    Used        State
/local                                          11.00MiB                10.00MiB        Available
/s3/data                                        10.00GiB             Calculating        Available
# 会持续运行,直到用户按下 Ctrl+C 中断
$ bin/alluxio quota list --interval 5s
Polling quota usage summary from the master every 5s
Alluxio path                                    Capacity                    Used        State
/local                                          11.00MiB                10.00MiB        Available
/s3/data                                        10.00GiB             Calculating        Available
Alluxio path                                    Capacity                    Used        State
/local                                          11.00MiB                10.00MiB        Available
/s3/data                                        10.00GiB             Calculating        Available
Alluxio path                                    Capacity                    Used        State
/local                                          11.00MiB                10.00MiB        Available
/s3/data                                        10.00GiB                10.00MiB        Available

quota remove

用法: bin/alluxio quota remove [flags]

使用 remove 命令可以移除某个路径上已存在的配额定义。

标志:

  • --directory: (必需)要移除配额的目录路径。该路径可以是 Alluxio 路径或 UFS 路径。

示例:

$ bin/alluxio quota remove --directory /s3/
Successfully removed quota definition for path /s3/data.

quota update

用法: bin/alluxio quota update [flags]

使用 update 命令可以更新某个路径上的已有配额定义。

标志:

  • --directory:(必需)要设置配额的路径。该路径可以是 Alluxio 路径或 UFS 路径。

  • --force: Whether to force the update of the quota, even if it violates the existing space usage (Default: false)是否强制更新配额,即使该更新可能违反当前空间的使用情况(默认:false)。

  • --quota-size: (必需)配额大小定义,例如:10GiB、1TiB

示例:

$ bin/alluxio quota update --directory /local/data/ --quota-size 100GiB

ttl

TTL 命令用于管理 Alluxio 系统中的所有 TTL(有效时间)策略定义。Alluxio 支持在 Alluxio 路径的目录 上设置 TTL 策略。

ttl add

用法: bin/alluxio ttl add [flags]

使用 add 命令可以在目录上设置新的 TTL 策略定义。在该目录下的缓存会在指定 TTL 到期后从 Alluxio 中移除。

标志:

  • --path:(必需)要设置 TTL 策略的路径。该路径可以是 Alluxio 路径或 UFS 路径。

  • --time: (必需)该路径的有效时间,例如: 1h、2d

示例:

# 在 Alluxio 命名空间中的 /s3/a 路径上添加 1 小时的 TTL 策略
$ bin/alluxio ttl add --path /s3/a --time 1h

ttl list

用法: bin/alluxio ttl list

使用 list 命令可以列出 Alluxio 中设置的所有 TTL 策略。

示例:

# 列出 Alluxio 命名空间中的 TTL 策略
$ bin/alluxio ttl list

ttl remove

用法: bin/alluxio ttl remove [flags]

使用 remove 命令可以移除目录上的 TTL 策略定义。

标志:

  • --path:(必需)要删除其 TTL 策略的路径。该路径可以是 Alluxio 路径或 UFS 路径。

示例:

# 移除 Alluxio 命名空间中 /s3/a 路径的 TTL 策略
$ bin/alluxio ttl remove --path /s3/a

ttl trigger

用法: bin/alluxio ttl trigger

该命令可用于强制所有 Alluxio 工作节点立即根据 TTL 规则驱逐过期缓存。扫描会立刻开始,但查找和驱逐过期缓存数据可能需要一些时间。当所有工作节点都被触发后命令会返回,驱逐操作会在后台异步执行。

示例:

# 强制触发所有工作节点按 TTL 规则扫描其缓存
$ bin/alluxio ttl trigger

ttl update

用法: bin/alluxio ttl update [flags]

使用 update 命令可以更新目录上的 TTL 策略定义。

标志:

  • --path:(必需)要更新 TTL 策略的路径。该路径可以是 Alluxio 路径或 UFS 路径。

  • --time: (必需)该路径的有效时间,例如:1h、2d

示例:

# 将 Alluxio 命名空间中 /s3/a 路径的 TTL 策略更新为 1 小时
$ bin/alluxio ttl update --path /s3/a --time 1h

Last updated