Alluxio的命令行接口

一、命令行接口——普通用户命令fs

命令行接口 - Alluxio v2.6.0 Documentation

Alluxio命令行接口为用户提供了基本的文件系统操作,可以使用以下命令来得到所有子命令:

$ ./bin/alluxio fs
Usage: alluxio fs [generic options]
       [cat <path>]
       [checkConsistency [-r] <Alluxio path>]
       ...

对于用Alluxio URI(如lsmkdir)作为参数的fs子命令来说,参数应该要么是完整的Alluxio URI alluxio://<master-hostname>:<master-port>/<path>,要么是省略了头部信息的/<path>,以使用conf/allluxio-site.properties中设置的默认的主机名和端口。

1.copyFromLocal复制本地文件到Alluxio

copyFromLocal命令将本地文件系统中的文件拷贝到Alluxio中,如果你运行该命令的机器上有Alluxio worker,那么数据便会存放在这个worker上,否则,数据将会随机地复制到一个运行Alluxio worker的远程节点上。如果该命令指定的目标是一个文件夹,那么这个文件夹及其所有内容都会被递归复制到Alluxio中。

使用举例:使用copyFromLocal命令可以快速将数据复制到alluxio系统中以便后续处理:

(base) [root@clu00 alluxio-2.6.0]# ./bin/alluxio fs copyFromLocal /root/datatest /
Copied file:///root/datatest to /

image-20211011203739110

2.copyToLocal复制Alluxio文件到本地

copyToLocal命令将Alluxio中的文件复制到本地文件系统中,如果该命令指定的目标是一个文件夹,那么该文件夹及其所有内容都会被递归地复制。

使用举例:使用copyToLocal命令可以快速将输出数据下载下来从而进行后续研究或调试:

(base) [root@clu00 alluxio-2.6.0]# alluxio fs copyToLocal /t00.txt t00.txt
Copied /t00.txt to file:///root/alluxio-2.6.0/t00.txt
(base) [root@clu00 alluxio-2.6.0]# wc -l t00.txt

3.rm删除

(base) [root@clu00 alluxio-2.6.0]# ./bin/alluxio fs rm '/test.txt'
/test.txt has been removed
(base) [root@clu00 alluxio-2.6.0]# ./bin/alluxio fs rm -R /default_tests_files
/default_tests_files has been removed
#-R 参数 代表递归删除目录


#此处路径中的/代指alluxio挂载的根目录
#Alluxio的根目录必须是一个挂载点

4.checkConsistency对比Alluxio与底层存储(同步问题)

checkConsistency命令会对比Alluxio和底层存储系统在给定路径下的元数据。如果该路径是一个目录,那么目录下的所有内容都会被对比。该命令会返回所有不一致的文件和目录的列表,系统管理员决定是否对这些不一致数据进行调整。为了避免Alluxio与底层存储系统的元数据不一致,你的系统应该尽量通过Alluxio来修改文件和目录,避免直接访问底层存储系统进行修改。

如果使用了-r选项,那么checkConsistency命令会去修复不一致的文件或目录,如果不一致的文件或者文件夹只存在于底层存储系统,那么相应的元数据会被加载到Alluxio中。如果不一致文件的元数据和具体数据已经存在Alluxio中,那么Alluxio会删除具体数据,并且将该文件的元数据重新载入。

注意:该命令需要请求将要被检查的目录子树的读锁,这意味着在该命令完成之前无法对该目录子树的文件或者目录进行写操作或者更新操作。

例如,checkConsistency命令可以用来周期性地检查命名空间的完整性:

# 列出不一致的文件或者目录
$ ./bin/alluxio fs checkConsistency /
#
# 修复不一致的文件或者目录
$ ./bin/alluxio fs checkConsistency -r /

问题:直接在底层存储HDFS中新增文件后,Alluxio中检测一致性检测不到不一致,Alluxio与底层存储不同步

解决方案:

1)按需同步,强制刷新

alluxio fs ls -R -Dalluxio.user.file.metadata.sync.interval=0 /xxxx
#使用命令直接刷新某目录
#系统默认alluxio.user.file.metadata.sync.interval=-1,是关闭自动刷新的

2)主动同步

#指定目录开启主动同步
$ alluxio fs startSync /XXX

#关闭主动同步
$ alluxio fs stopSync /XX


问题:不支持hdfs

Active Syncing is not supported on this UFS type: hdfs

5.元数据同步功能

默认情况下,* Alluxio预期所有对底层文件系统修改都是通过Alluxio 来进行的*。 这样Alluxio只需扫描每个UFS目录一次,从而在UFS元数据操作很慢情况下显著提高性能。 当出现在Alluxio之外对UFS进行更改的情况下, 就需要用元数据同步功能用于同步两个命名空间。

当Alluxio扫描UFS目录并加载其子目录元数据时, 它将创建元数据的副本,以便将来无需再从UFS加载。 元数据的缓存副本将根据 alluxio.user.file.metadata.sync.interval客户端属性配置的间隔段刷新。 此属性适用于客户端操作。 例如,如果客户执行一个命令基于间隔设置为一分钟的配置, 如果最后一次刷新是在一分钟之前,则相关元数据将据UFS刷新。 设值为0表示针对每个操作都会进行实时元数据同步, 而默认值-1表示在初始加载后不会再重新同步元数据。

低间隔值使Alluxio客户端可以快速发现对UFS的外部修改, 但由于导致调用UFS的次数增加,因此是以降低性能为代价的。

元数据同步会保留每个UFS文件的指纹记录,以便Alluxio可以在文件更改时做出相应更新。 指纹记录包括诸如文件大小和上次修改时间之类的信息。 如果在UFS中修改了文件,Alluxio将通过指纹检测到该修改,释放现有文件 元数据,然后重新加载更新文件的元数据。 如果在UFS中添加或删除了文件,Alluxio还将更新对其命名空间中的元数据做出相应刷新。

1)定期元数据同步

如果UFS按计划的间隔更新,可以在更新后手动触发sync命令。 运行以下命令将同步间隔设置为0:(即强制刷新同步)

$ ./bin/alluxio fs ls -R -Dalluxio.user.file.metadata.sync.interval=0 /path/to/sync

集中配置

对于使用来自频繁更新的UFS数据的集群作业, 每个客户端指定一个同步间隔很不方便。 如果在master配置中设置了同步间隔,所有请求都将以默认的同步间隔来处理。

在master点上的alluxio-site.properties中设置:

alluxio.user.file.metadata.sync.interval=1m

注意,需要重新启动master节点以便启用新配置。

2)HDFS元数据主动同步

在2.0版中,引入了一项新功能,用于在UFS为HDFS时保持Alluxio空间与UFS之间的同步。 该功能称为主动同步,可监听HDFS事件并以master上后台任务方式定期在UFS和Alluxio命名空间之间同步元数据。 由于主动同步功能取决于HDFS事件,因此仅当UFS HDFS版本高于2.6.1时,此功能才可用。 你可能需要在配置文件中更改alluxio.underfs.version的值。 有关所支持的Hdfs版本的列表,请参考HDFS底层存储

要在一个目录上启用主动同步,运行以下Alluxio命令。

$ ./bin/alluxio fs startSync /syncdir

可以通过更改alluxio.master.ufs.active.sync.interval选项来控制主动同步间隔,默认值为30秒。

要在一个目录上停止使用主动同步,运行以下Alluxio命令。

$ ./bin/alluxio fs stopSync /syncdir

注意:发布startSync时,就预定了对同步点进行完整扫描。 如果以Alluxio超级用户身份运行,stopSync将中断所有尚未结束的完整扫描。 如果以其他用户身份运行,stopSync将等待完整扫描完成后再执行。

可以使用以下命令检查哪些目录当前处于主动同步状态。

$ ./bin/alluxio fs getSyncPathList

问题:alluxio.exception.AlluxioException: Active Syncing is not supported on this UFS type: hdfs

image-20211012223835791

6.alluxio与底层存储的数据加载与释放load、free、persist

  • free:释放数据是指从Alluxio缓存中删除数据,而不是从底层UFS中删除数据。 释放操作后,数据仍然可供用户使用,但对Alluxio释放文件后尝试访问该文件 的客户端来讲性能可能会降低。

  • load:加载数据意味着将其从UFS复制到Alluxio缓存中。如果Alluxio使用 基于内存的存储,加载后用户可能会看到I/O性能的提高。

  • persist:持久数据是指将Alluxio存储中可能被修改过或未被修改过的数据写回UFS。 通过将数据写回到UFS,可以保证如果Alluxio节点发生故障数据还是可恢复的。

  • TTL(Time to Live):TTL属性设置文件和目录的生存时间,以 在数据超过其生存时间时将它们从Alluxio空间中删除。还可以配置 TTL来删除存储在UFS中的相应数据。

1)上传文件到alluxio

(通过Alluxio上传文件)

alluxio fs copyFromLocal anaconda-ks.cfg /

2) alluxio文件固化到HDFS

(写入到底层存储HDFS中)

alluxio fs persist /anaconda-ks.cfg

hadoop fs -ls /alluxio

persist命令将Alluxio中的数据持久化到底层文件系统中。该命令是对数据的操作,因而其执行时间取决于该文件的大小。在持久化结束后,该文件即在底层文件系统中有了备份,因而该文件在Alluxio中的数据块被剔除甚至丢失的情况下,仍能够访问。

使用举例:在从一系列临时文件中过滤出包含有用数据的文件后,便可以使用persist命令对其进行持久化。

3) 释放alluxio的文件

(free alluxio中的文件,并不会删除底层存储上的文件,只是释放Alluxio的存储)

alluxio fs free /anaconda-ks.cfg

free命令请求Alluxio master将一个文件的所有数据块从Alluxio worker中剔除,如果命令参数为一个文件夹,那么会递归作用于其子文件和子文件夹。该请求不保证会立即产生效果,因为该文件的数据块可能正在被读取。free命令在被master接收后会立即返回。注意该命令不会删除底层文件系统中的任何数据,而只会影响存储在Alluxio中的数据。另外,该操作也不会影响元数据,这意味着如果运行ls命令,该文件仍然会被显示。

4)重新加载HDFS文件到alluxio文件

alluxio fs load /anaconda-ks.cfg

load 命令将底层文件系统中的数据载入到Alluxio中。如果运行该命令的机器上正在运行一个Alluxio worker,那么数据将移动到该worker上,否则,数据会被随机移动到一个worker上。 如果该文件已经存在在Alluxio中,设置了--local选项,并且有本地worker,则数据将移动到该worker上。 否则该命令不进行任何操作。如果该命令的目标是一个文件夹,那么其子文件和子文件夹会被递归载入。

使用举例:使用load 命令能够获取用于数据分析作用的数据。

5) 删除alluxio的文件

(通过Alluxio来操作删除底层存储系统的文件,底层存储系统的文件会被删除)

alluxio fs rm /anaconda-ks.cfg

6.设置文件到期时间

例如,要3分钟后删除由runTests创建的文件:

$ ./bin/alluxio runTests -Dalluxio.user.file.create.ttl=3m \
  -Dalluxio.user.file.create.ttl.action=DELETE

Alluxio客户端可以配置为只要在Alluxio命名空间添加新文件时就添加TTL属性。 当预期用户是临时使用文件情况下,被动TTL很有用 ,但它不灵活,因为来自同一客户端的所有请求将继承 相同的TTL属性。

被动TTL通过以下选项配置:

  • alluxio.user.file.create.ttl-在Alluxio中文件上设置的TTL持续时间。 默认情况下,未设置TTL持续时间。
  • alluxio.user.file.create.ttl.action-对文件设置的TTL到期后的操作 在Alluxio中。注意:默认情况下,此操作为“DELETE”,它将导致文件永久被删除。

TTL默认情况下处于不使用状态,仅当客户有严格数据访问模式才启用

例如,要3分钟后删除由runTests创建的文件:

$ ./bin/alluxio runTests -Dalluxio.user.file.create.ttl=3m \
  -Dalluxio.user.file.create.ttl.action=DELETE

对于这个例子,确保alluxio.master.ttl.checker.interval被设定为短 间隔,例如一分钟,以便master能快速识别过期文件。

1)setTtl

setTtl命令设置一个文件或者文件夹的ttl时间,单位为毫秒。如果当前时间大于该文件的创建时间与ttl时间之和时,行动参数将指示要执行的操作。delete操作(默认)将同时删除Alluxio和底层文件系统中的文件,而free操作将仅仅删除Alluxio中的文件。

使用举例:管理员在知道某些文件经过一段时间后便没用时,可以使用带有delete操作的setTtl命令来清理文件;如果仅仅希望为Alluxio释放更多的空间,可以使用带有free操作的setTtl命令来清理Alluxio中的文件内容。

# After 1 day, delete the file in Alluxio and UFS
$ ./bin/alluxio fs setTtl /data/good-for-one-day 86400000
# After 1 day, free the file from Alluxio
$ ./bin/alluxio fs setTtl --action free /data/good-for-one-day 86400000

实例:

#时间不带单位,默认是毫秒
#Sets a new TTL value for the file at path, performing an action, delete(default)/free after TTL expiry. The TTL to set can be in one of the unit: ms, millisecond, s, second, m, min, minute, h, hour, d, day, default to ms

(base) [root@clu00 alluxio-2.6.0]# alluxio fs setTtl --action free /t00.txt 1m
TTL of path '/t00.txt' was successfully set to 60000 milliseconds, with expiry action set to FREE
(base) [root@clu00 alluxio-2.6.0]# alluxio fs setTtl --action free /t00.txt 1000sec
TTL of path '/t00.txt' was successfully set to 1000000 milliseconds, with expiry action set to FREE
(base) [root@clu00 alluxio-2.6.0]# alluxio fs setTtl --action free /t00.txt 1h
TTL of path '/t00.txt' was successfully set to 3600000 milliseconds, with expiry action set to FREE
(base) [root@clu00 alluxio-2.6.0]# alluxio fs setTtl --action free /t00.txt 1d
TTL of path '/t00.txt' was successfully set to 86400000 milliseconds, with expiry action set to FREE


2)unsetTtl

unsetTtl命令删除Alluxio中一个文件的TTL。该命令仅作用于元数据,不会剔除或者删除Alluxio中的数据块。该文件的TTL值可以由setTtl命令重新设定。

使用举例:在一些特殊情况下,当一个原本自动管理的文件需要手动管理时,可以使用unsetTtl命令。

$ ./bin/alluxio fs unsetTtl /data/yesterday/data-not-yet-analyzed

7.检查Alluxio缓存容量和使用情况

Alluxio shell命令fsadmin report提供可用空间的简短摘要 以及其他有用的信息。输出示例如下:

$ ./bin/alluxio fsadmin report
Alluxio cluster summary:
    Master Address: localhost/127.0.0.1:19998
    Web Port: 19999
    Rpc Port: 19998
    Started: 09-28-2018 12:52:09:486
    Uptime: 0 day(s), 0 hour(s), 0 minute(s), and 26 second(s)
    Version: 2.0.0
    Safe Mode: true
    Zookeeper Enabled: false
    Live Workers: 1
    Lost Workers: 0
    Total Capacity: 10.67GB
        Tier: MEM  Size: 10.67GB
    Used Capacity: 0B
        Tier: MEM  Size: 0B
    Free Capacity: 10.67GB

Alluxio shell还允许用户检查Alluxio缓存中多少空间可用和在用。

获得Alluxio缓存总使用字节数运行:

$ ./bin/alluxio fs getUsedBytes

获得Alluxio缓存以字节为单位的总容量

$ ./bin/alluxio fs getCapacityBytes

8.checksum计算md5值

checksum命令输出某个Alluxio文件的md5值。

例如,checksum可以用来验证Alluxio中的文件内容与存储在底层文件系统或者本地文件系统中的文件内容是否匹配:

$ ./bin/alluxio fs checksum /LICENSE
md5sum: bf0513403ff54711966f39b058e059a3
md5 LICENSE
MD5 (LICENSE) = bf0513403ff54711966f39b058e059a3

MD5值,简单地来说,就是文件的“指纹”。如果原始文件被修改了,那么MD5值也就会跟着发生变化,所以我们可以根据MD5是否变化来判断文件是否被改动

9.chgrp改变文件的所属组

chgrp命令可以改变Alluxio中的文件或文件夹的所属组,Alluxio支持POSIX标准的文件权限,组在POSIX文件权限模型中是一个授权实体,文件所有者或者超级用户可以执行这条命令从而改变一个文件或文件夹的所属组。

加上-R选项可以递归的改变文件夹中子文件和子文件夹的所属组。

使用举例:使用chgrp命令能够快速修改一个文件的所属组:

$ ./bin/alluxio fs chgrp alluxio-group-new /input/file1

10.chmod改变文件访问权限

chmod命令修改Alluxio中文件或文件夹的访问权限,目前可支持八进制模式:三位八进制的数字分别对应于文件所有者、所属组以及其他用户的权限。以下是数字与权限的对应表:

NumberPermissionrwx
7read, write and executerwx
6read and writerw-
5read and executer-x
4read onlyr–
3write and execute-wx
2write only-w-
1execute only–x
0none

加上-R选项可以递归的改变文件夹中子文件和子文件夹的权限。

使用举例:使用chmod命令可以快速修改一个文件的权限:

$ ./bin/alluxio fs chmod 755 /input/file1

11.chown改变文件所有者

chown命令用于修改Alluxio中文件或文件夹的所有者,出于安全方面的考虑,只有超级用户能够更改一个文件的所有者。

加上-R选项可以递归的改变文件夹中子文件和子文件夹的所有者。

使用举例:使用chown命令可以快速修改一个文件的所有者。

$ ./bin/alluxio fs chown alluxio-user /input/file1
$ ./bin/alluxio fs chown alluxio-user:alluxio-group /input/file2

12.cat查看Alluxio中的文件

(base) [root@clu00 alluxio-2.6.0]# ./bin/alluxio fs cat /datatest
Hello World!
hi
hello
hi
hello
world

13.cp

cp命令拷贝Alluxio文件系统中的一个文件或者目录,也可以在本地文件系统和Alluxio文件系统之间相互拷贝。

filescheme表示本地文件系统,alluxioscheme或不写scheme表示Alluxio文件系统。

如果使用了-R选项,并且源路径是一个目录,cp将源路径下的整个子树拷贝到目标路径。

例如,cp可以在底层文件系统之间拷贝文件。

$ ./bin/alluxio fs cp /hdfs/file1 /s3/

14.count

count命令输出Alluxio中所有名称匹配一个给定前缀的文件及文件夹的总数,以及它们总的大小,该命令对文件夹中的内容递归处理。当用户对文件有预定义命名习惯时,count命令很有用。

使用举例:若文件是以它们的创建日期命名,使用count命令可以获取任何日期、月份以及年份的所有文件的数目以及它们的总大小:

$ ./bin/alluxio fs count /data/2014

15.du输出文件大小

du命令输出一个文件的大小,如果指定的目标为文件夹,该命令输出该文件夹下所有子文件及子文件夹中内容的大小总和。

使用举例:如果Alluxio空间被过分使用,使用du命令可以检测到哪些文件夹占用了大部分空间:

# Shows the size information of all the files in root directory
$ ./bin/alluxio fs du /
File Size     In Alluxio       Path
1337          0 (0%)           /alluxio-site.properties
4352          4352 (100%)      /testFolder/NOTICE
26847         0 (0%)           /testDir/LICENSE
2970          2970 (100%)      /testDir/README.md

# Shows the in memory size information
$ ./bin/alluxio fs du --memory /
File Size     In Alluxio       In Memory        Path
1337          0 (0%)           0 (0%)           /alluxio-site.properties
4352          4352 (100%)      4352 (100%)      /testFolder/NOTICE
26847         0 (0%)           0 (0%)           /testDir/LICENSE
2970          2970 (100%)      2970 (100%)      /testDir/README.md

# Shows the aggregate size information in human-readable format
$ ./bin/alluxio fs du -h -s /
File Size     In Alluxio       In Memory        Path
34.67KB       7.15KB (20%)     7.15KB (20%)     /

# Can be used to detect which folders are taking up the most space
$ ./bin/alluxio fs du -h -s /\\*
File Size     In Alluxio       Path
1337B         0B (0%)          /alluxio-site.properties
29.12KB       2970B (9%)       /testDir
4352B         4352B (100%)     /testFolder

16.ls

ls命令列出一个文件夹下的所有子文件和子文件夹及文件大小、上次修改时间以及文件的内存状态。对一个文件使用ls命令仅仅会显示该文件的信息。 ls命令也将任意文件或者目录下的子目录的元数据从底层存储系统加载到Alluxio命名空间,如果Alluxio还没有这部分元数据的话。 ls命令查询底层文件系统中匹配给定路径的文件或者目录,然后会在Alluxio中创建一个该文件的镜像文件。只有元数据,比如文件名和大小,会以这种方式加载而不发生数据传输

选项:

  • -d 选项将目录作为普通文件列出。例如,ls -d /显示根目录的属性。
  • -f 选项强制加载目录中的子目录的元数据。默认方式下,只有当目录首次被列出时,才会加载元数据。
  • -h 选项以可读方式显示文件大小。
  • -p 选项列出所有固定的文件。
  • -R 选项可以递归的列出输入路径下的所有子文件和子文件夹,并列出从输入路径开始的所有子树。
  • --sort 按给定的选项对结果进行排序。可能的值:size|creationTime|inMemoryPercentage|lastModificationTime|path
  • -r 反转排序的顺序。

使用举例:使用ls命令可以浏览文件系统。

$ ./bin/alluxio fs mount /s3/data s3://data-bucket/
# Loads metadata for all immediate children of /s3/data and lists them.
$ ./bin/alluxio fs ls /s3/data/
#
# Forces loading metadata.
$ aws s3 cp /tmp/somedata s3://data-bucket/somedata
$ ./bin/alluxio fs ls -f /s3/data
#
# Files are not removed from Alluxio if they are removed from the UFS (s3 here) only.
$ aws s3 rm s3://data-bucket/somedata
$ ./bin/alluxio fs ls -f /s3/data

17.test

test命令测试路径的属性,如果属性为真,返回0,否则返回1。 可以使用-d选项测试路径是否是目录,使用-f选项测试路径是否是文件,使用-e选项测试路径是否存在,使用-z选项测试文件长度是否为0,使用-s选项测试路径是否为空,

选项:

  • -d 选项测试路径是否是目录。
  • -e 选项测试路径是否存在。
  • -f 选项测试路径是否是文件。
  • -s 选项测试路径是否为空。
  • -z 选项测试文件长度是否为0。

使用举例:

(base) [root@clu00 alluxio-2.6.0]# alluxio fs test -d /datatest
(base) [root@clu00 alluxio-2.6.0]# echo $?
1
(base) [root@clu00 alluxio-2.6.0]# alluxio fs test -d /data
(base) [root@clu00 alluxio-2.6.0]# echo $?
0

18.pin

pin命令对Alluxio中的文件或文件夹进行标记。该命令只针对元数据进行操作,不会导致任何数据被加载到Alluxio中。如果一个文件在Alluxio中被标记了,该文件的任何数据块都不会从Alluxio worker中被剔除。如果存在过多的被锁定的文件,Alluxio worker将会剩余少量存储空间,从而导致无法对其他文件进行缓存。

使用举例:如果管理员对作业运行流程十分清楚,那么可以使用pin命令手动提高性能。

$ ./bin/alluxio fs pin /data/today

19.unpin

unpin命令将Alluxio中的文件或文件夹解除标记。该命令仅作用于元数据,不会剔除或者删除任何数据块。一旦文件被解除锁定,Alluxio worker可以剔除该文件的数据块。

使用举例:当管理员知道数据访问模式发生改变时,可以使用unpin命令。

$ ./bin/alluxio fs unpin /data/yesterday/join-table

20.stat

stat命令将一个文件或者文件夹的主要信息输出到控制台,这主要是为了让用户调试他们的系统。一般来说,在Web UI上查看文件信息要容易理解得多。

可以指定 -f <arg> 来按指定格式显示信息:

  • “%N”: 文件名;
  • “%z”: 文件大小(bytes);
  • “%u”: 文件拥有者;
  • “%g”: 拥有者所在组名;
  • “%y” or “%Y”: 编辑时间, %y shows ‘yyyy-MM-dd HH:mm:ss’ (the UTC date), %Y 为自从 January 1, 1970 UTC 以来的毫秒数;
  • “%b”: 为文件分配的数据块数

例如,使用stat命令能够获取到一个文件的数据块的位置,这在获取计算任务中的数据局部性时非常有用。

# Displays file's stat
$ ./bin/alluxio fs stat /data/2015/logs-1.txt
#
# Displays directory's stat
$ ./bin/alluxio fs stat /data/2015
#
# Displays the size of file
$ ./bin/alluxio fs stat -f %z /data/2015/logs-1.txt

操作列表

操作语法描述
catcat “path”将Alluxio中的一个文件内容打印在控制台中
checkConsistencycheckConsistency “path”检查Alluxio与底层存储系统的元数据一致性
checksumchecksum “path”计算一个文件的md5校验码
chgrpchgrp “group” “path”修改Alluxio中的文件或文件夹的所属组
chmodchmod “permission” “path”修改Alluxio中文件或文件夹的访问权限
chownchown “owner” “path”修改Alluxio中文件或文件夹的所有者
copyFromLocalcopyFromLocal “source path” “remote path”将“source path”指定的本地文件系统中的文件拷贝到Alluxio中"remote path"指定的路径 如果"remote path"已经存在该命令会失败
copyToLocalcopyToLocal “remote path” “local path”将"remote path"指定的Alluxio中的文件复制到本地文件系统中
countcount “path”输出"path"中所有名称匹配一个给定前缀的文件及文件夹的总数
cpcp “src” “dst”在Alluxio文件系统中复制一个文件或目录
dudu “path”输出一个指定的文件或文件夹的大小
fileInfofileInfo “path”输出指定的文件的数据块信息
freefree “path”将Alluxio中的文件或文件夹移除,如果该文件或文件夹存在于底层存储中,那么仍然可以在那访问
getCapacityBytesgetCapacityBytes获取Alluxio文件系统的容量
getfaclgetfacl “path”
getUsedBytesgetUsedBytes获取Alluxio文件系统已使用的字节数
helphelp “cmd”打印给定命令的帮助信息,如果没有给定命令,打印所有支持的命令的帮助信息
leaderleader打印当前Alluxio leader master节点主机名
loadload “path”将底层文件系统的文件或者目录加载到Alluxio中
loadMetadataloadMetadata “path”将底层文件系统的文件或者目录的元数据加载到Alluxio中
locationlocation “path”输出包含某个文件数据的主机
lsls “path”列出给定路径下的所有直接文件和目录的信息,例如大小
masterInfomasterInfo打印Alluxio master容错相关的信息,例如leader的地址、所有master的地址列表以及配置的Zookeeper地址
mkdirmkdir “path1” … “pathn”在给定路径下创建文件夹,以及需要的父文件夹,多个路径用空格或者tab分隔,如果其中的任何一个路径已经存在,该命令失败
mountmount “path” “uri”将底层文件系统的"uri"路径挂载到Alluxio命名空间中的"path"路径下,"path"路径事先不能存在并由该命令生成。 没有任何数据或者元数据从底层文件系统加载。当挂载完成后,对该挂载路径下的操作会同时作用于底层文件系统的挂载点。
mvmv “source” “destination”将"source"指定的文件或文件夹移动到"destination"指定的新路径,如果"destination"已经存在该命令失败。
persistpersist “path1” … “pathn”将仅存在于Alluxio中的文件或文件夹持久化到底层文件系统中
pinpin “path”将给定文件锁定到内容中以防止剔除。如果是目录,递归作用于其子文件以及里面新创建的文件
reportreport “path”向master报告一个文件已经丢失
rmrm “path”删除一个文件,如果输入路径是一个目录该命令失败
setfaclsetfacl “newACL” “path”
setTtlsetTtl “path” “time”设置一个文件的TTL时间,单位毫秒,注意,默认动作为 DELETE,会将文件从Alluxio命名空间和底层存储中删除
statstat “path”显示文件和目录指定路径的信息
tailtail “path”将指定文件的最后1KB内容输出到控制台
testtest “path”测试路径的属性,如果属性正确,返回0,否则返回1
touchtouch “path”在指定路径创建一个空文件
unmountunmount “path”卸载挂载在Alluxio中"path"指定路径上的底层文件路径,Alluxio中该挂载点的所有对象都会被删除,但底层文件系统会将其保留。
unpinunpin “path”将一个文件解除锁定从而可以对其剔除,如果是目录则递归作用
unsetTtlunsetTtl “path”删除文件的ttl值

二、命令行接口——管理员命令fsadmin

管理员命令行接口 - Alluxio v2.6.0 Documentation

Alluxio的管理员命令行接口为管理员提供了管理Alluxio文件系统的操作。 您可以调用以下命令行来获取所有子命令:

$ ./bin/alluxio fsadmin
Usage: alluxio fsadmin [generic options]
       [report]
       [ufs --mode <noAccess/readOnly/readWrite> <ufsPath>]
       ...

以UFS URI作为参数的fsadmin ufs子命令,参数应该是像hdfs://<name-service>/这样的根UFS URI,而不是hdfs://<name-service>/<folder>

1.backup备份

backup命令创建Alluxio元数据的备份

1)备份到默认备份文件夹(由alluxio.master.backup.directory)配置

./bin/alluxio fsadmin backup
Successfully backed up journal to hdfs://mycluster/opt/alluxio/backups/alluxio-backup-2018-5-29-1527644810.gz

2)备份到下存储中的特定目录。

./bin/alluxio fsadmin backup /alluxio/special_backups
Successfully backed up journal to hdfs://mycluster/opt/alluxio/backups/alluxio-backup-2018-5-29-1527644810.gz

实例:

(base) [root@clu00 alluxio-2.6.0]# alluxio fsadmin backup /root/backup-alluxio
Backup Host        : clu00                                                 
Backup URI         : hdfs://clu00:9090/root/backup-alluxio/alluxio-backup-2021-10-14-1634196191864.gz
Backup Entry Count : 14368

[hadoop@clu00 ~]$ hdfs dfs -ls /root/backup-alluxio
Found 2 items
-rw-r--r--   3 root supergroup     288461 2021-10-14 15:23 /root/backup-alluxio/alluxio-backup-2021-10-14-1634196191864.gz
-rw-r--r--   3 root supergroup          0 2021-10-14 15:23 /root/backup-alluxio/alluxio-backup-2021-10-14-1634196191864.gz.complete

3)备份到主主机的本地文件系统的特定目录。

./bin/alluxio fsadmin backup /opt/alluxio/backups/ --local
Successfully backed up journal to file:///opt/alluxio/backups/alluxio-backup-2018-5-29-1527644810.gz on master Master2

实例:

(base) [root@clu00 alluxio-2.6.0]# alluxio fsadmin backup /root/backup-alluxio-new --local
Backup Host        : clu00                                                 
Backup URI         : file:///root/backup-alluxio/alluxio-backup-2021-10-14-1634196431506.gz
Backup Entry Count : 14368
(base) [root@clu00 alluxio-2.6.0]# ls /root/backup-alluxio/
alluxio-backup-2021-10-14-1634196431506.gz
alluxio-backup-2021-10-14-1634196431506.gz.complete

从备份文件中恢复元数据
#从备份文件中恢复元数据
$ ./alluxio-start.sh -i /opt/alluxio-backup-2019-11-13-1573637112922.gz masters

Executing the following command on all master nodes and logging to /usr/local/git/alluxio/logs/task.log: /usr/local/git/alluxio/bin/alluxio-stop.sh master
Waiting for tasks to finish...
All tasks finished
Executing the following command on all master nodes and logging to /usr/local/git/alluxio/logs/task.log: /usr/local/git/alluxio/bin/alluxio-start.sh -i /opt/alluxio-backup-2019-11-13-1573637112922.gz master
Waiting for tasks to finish...
All tasks finished

实例:

(base) [root@clu00 bin]# alluxio-start.sh -i /root/backup-alluxio/alluxio-backup-2021-10-14-1634196431506.gz masters
Executing the following command on all master nodes and logging to /root/alluxio-2.6.0/logs/task.log: /root/alluxio-2.6.0/bin/alluxio-stop.sh master
Waiting for tasks to finish...
All tasks finished
Executing the following command on all master nodes and logging to /root/alluxio-2.6.0/logs/task.log: /root/alluxio-2.6.0/bin/alluxio-start.sh -i /root/backup-alluxio/alluxio-backup-2021-10-14-1634196431506.gz -a master
Waiting for tasks to finish...
All tasks finished
-----------------------------------------
Starting to monitor all Alluxio masters.
-----------------------------------------
--- [ OK ] The master service @ clu00 is in a healthy state.

2.doctor显示运行错误与警告

doctor命令显示Alluxio错误和警告。

# shows server-side configuration errors and warnings
$ ./bin/alluxio fsadmin doctor configuration

实例:

(base) [root@clu00 alluxio-2.6.0]# alluxio fsadmin doctor --help
Failed to parse args for doctor: Unrecognized option: --help
Usage: doctor [category]
Show Alluxio errors and warnings.
Where [category] is an optional argument. If no arguments are passed in, all categories of errors/warnings will be printed out.
[category] can be one of the following:
    configuration    server-side configuration errors/warnings
    storage          worker lost storage warnings

(base) [root@clu00 alluxio-2.6.0]# alluxio fsadmin doctor configuration
No server-side configuration errors or warnings.
(base) [root@clu00 alluxio-2.6.0]# alluxio fsadmin doctor storage
All worker storage paths are in working state.

3.report报告集群信息

report命令提供了Alluxio运行中的集群信息。

# Report cluster summary
$ ./bin/alluxio fsadmin report

# Report worker capacity information
$ ./bin/alluxio fsadmin report capacity

# Report runtime configuration information 
$ ./bin/alluxio fsadmin report configuration

# Report metrics information
$ ./bin/alluxio fsadmin report metrics

# Report under file system information
$ ./bin/alluxio fsadmin report ufs

使用 -h 选项来获得更多信息。

4.ufs更新底层挂载的属性

ufs命令提供了选项来更新挂载的底层存储的属性。mode选项可用于将底层存储设置为维护模式。目前某些操作可能会受到限制。

例如,一个底层存储可以设为readOnly模式来禁止写入操作。 Alluxio将不会对底层存储尝试任何写入操作。

$ ./bin/alluxio fsadmin ufs --mode readOnly hdfs://ns

fsadmin ufs命令接受一个UFS URI作为参数。该参数需要是一个 UFS URI的根,类似hdfs://<name-service>/,而非hdfs://<name-service>/<folder>

操作列表

操作语法描述
backupbackup [directory] [–local]Back up all Alluxio metadata to the backup directory configured on master.
doctordoctor [category]Show Alluxio errors and warnings.
reportreport [category] [category args]Report Alluxio running cluster information.
ufsufs --mode <noAccess/readOnly/readWrite> “ufsPath”Update attributes for a mounted under storage system.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值