alluxio 数据同步问题
命令刷新底层存储的一致性
1 |
./bin/alluxio fs checkConsistency / [-R] |
定期UFS元数据同步
不通过alluxio,直接在底层存储中写入的数据,会导致数据不一致。
默认情况下,* Alluxio预期所有对底层文件系统修改都是通过Alluxio 来进行的*。 这样Alluxio只需扫描每个UFS目录一次,从而在UFS元数据操作很慢情况下显著提高性能。 当出现在Alluxio之外对UFS进行更改的情况下, 就需要用元数据同步功能用于同步两个命名空间。
如果UFS按计划的间隔更新,可以在更新后手动触发sync命令。 运行以下命令将同步间隔设置为0:
1 |
./bin/alluxio fs ls -R -Dalluxio.user.file.metadata.sync.interval=0 /path/to/sync |
其他加载新UFS方法
alluxio.user.file.metadata.load.type
:此客户端属性可以设置为 ALWAYS
,ONCE
或NEVER
。此属性类似alluxio.user.file.metadata.sync.interval
, 但有注意事项:
-
- 它只会发现新文件,不会重新加载修改或删除的文件。
- 它仅适用于
exists
,list
和getStatus
RPC
-
- ALWAYS 配置意味者总会检查UFS中是否有新文件,
- ONCE 将使用默认值 仅扫描每个目录一次,
- NEVER 配置下Alluxio根本不会 扫描新文件。
alluxio fs ls -f /path
:ls
的-f
选项相当于设置 alluxio.user.file.metadata.load.type
为ALWAYS
。
它将发现新文件,但 不检测修改或删除的UFS文件。
要检测修改或删除的UFS文件的唯一方法是通过传递 -Dalluxio.user.file.metadata.sync.interval=0
选项给ls