(二)Alluxio 挂载和 fs ls

本文详细介绍了如何在Linux环境下编译和运行Alluxio,包括设置挂载根目录、挂载底层存储系统(如RAMFS)以及使用fsls命令。挂载过程涉及bin/alluxio-mount.sh和fsmount两种方法,同时讨论了Alluxio与底层存储系统的区别和交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(一)Linux下 Alluxio 的编译和运行

(二)Alluxio 挂载和 fs ls

(三)Alluxio 的挂载和加载

(四)Alluxio 卸载挂载目录和删除文件

(五)编译中出现的向后兼容问题

在多次测试和各种奇奇怪怪的操作之后,我发现我设置的根挂载点 /tmp/ufs 中没有任何文件,但是通过 fs ls / 仍能查出来 Alluxio 空间中是有数据的。一顿凌乱之后,整理了一下目前自己理解的东西,期望能找寻蛛丝马迹。

在使用本地运行项目时,挂载的是 RAMFS文件系统,该系统是使用 RAM 作为文件存储系统,运行速度较快。

因为在本地运行 Alluxio 项目时,Alluxio 的一个 master 节点和一个 worker 节点都在本地,所以可能需要区分一下 worker 的本地缓存路径 /mnt/ramdisk 和存放所有文件元数据的 master 节点的空间(或者路径)。

Alluxio 和底层存储系统是两个独立的东西,底层存储系统是存储设备,可以永久的存放数据,数据需要放在 Alluxio 中,这样 Alluxio 才可以管理底层存储系统中的数据。

0. 底层存储系统和Alluxio

Alluxio 中,经常出现底层存储系统 UFS。这两个概念诶,

  • 底层存储系统:是实际存放文件(文件)的地方,存放的东西是实实在在的文件,这些文件(数据)是永久存在的,除非我们主动的删除。
  • Alluxio :存放的是文件的元数据,也就是文件的信息,并不是文件本身。

举个例子:

image-20220601163417016.png

1. Alluxio 中 fs ls 命令

ls命令列出一个文件夹下的所有子文件和子文件夹及文件大小、上次修改时间以及文件的内存状态。对一个文件使用ls命令仅仅会显示该文件的信息。

ls 命令也将任意文件或者目录下的子目录的元数据从底层存储系统加载到Alluxio命名空间,如果Alluxio还没有这部分元数据的话。

通过命令 fs ls [path] 显示某个文件夹下的所有文件信息。所查询出来的文件均是在 Alluxio 命名空间中的。

需要注意的是,路径 pathalluxio 空间中的路径,而不是底层存储系统中实际存放文件的路径。

  # 显示Alluxio根目录下的所有文件信息 
  bin/alluxio fs ls /

2. Alluxio 设置挂载根目录

在项目的配置文件 conf/alluxio-site.properties 中设置 Alluxio 空间(命名空间)的根目录(Alluxio 的根目录是 /)。

  alluxio.master.mount.table.root.ufs=/tmp/ufs

(这个路径是底层存储中的路径,如果是使用默认的配置启动本地运行,就会将该目录挂载到 Alluxio 的根目录)

每个挂载在 Alluxio 中的底层存储系统,有两个命名空间。

Alluxio 的命名空间中,有 Alluxio 给所有底层存储系统提供的统一的命名空间,使用统一的路径格式(alluxio://[path])就可以访问到不同底层存储系统中的文件。

此外,每个底层存储系统还有一个自己的命名空间,称为 ufs 命名空间。在这个空间中,不同类型的存储系统命名规则不同。

设置完 Alluxio 挂载目录,此时,底层的存储系统和 Alluxio 还是两个独立的个体,他们之间没有任何联系,即使想要使用本地的文件系统作为底层持久性的存储系统。下一步,需要将底层存储系统和 Alluxio 联系起来,联系的方式,就是挂载。

3. 挂载底层存储系统(UFS)

设置完 Alluxio 的根目录后,还没有将底层存储系统和 Alluxio 联系起来。下一步将本地的底层存储系统挂载在 Alluxio 根目录下。

3.1 方案一:bin/alluxio-mount.sh

使用以下命令将 RAMFS文件系统挂载到 Alluxio 空间中:

  ./bin/alluxio-mount.sh SudoMount

使用以下命令启动项目,运行

  bin/alluxio-start.sh local SudoMount
  # 该启动方式会使用RAMFS文件系统
  
  bin/alluxio-start.sh local NoMount
  # 该启动方式会使用配置文件中设置的路径,比如我设置的是 /tmp/ufs

3.2 方案二:fs mount

fs mount [alluxio 中的路径] [file://本地路径] 将本地存储系统中的路径挂载到 Alluxio 空间中。

注意:

  • 2个路径都是目录
  • 本地中的文件路径前添加 file:// ,是因为本地存储系统的访问路径。不同的存储系统,前面的访问标志不同。

以下例子是把 /tmp/ufs/apache-maven-3.8.4 挂载在 Alluxio 空间的 /apche 中。可以将 /tmp/ufs 挂载到 Alluxio 中的一个目录, 也挂载其他路径(/tmp/ufs 之外)的目录也可以。

fs mount.png

挂载成功之后会有提示信息,然后就可以在通过 fs ls / 查询 Alluxio 空间中是否有刚才挂载的路径。

3.3 其他

我试过把文件原件放在配置文件 conf/alluxio-site.properties 中设置的目录 /tmp/ufs 中,或者是 /mnt/ramdisk/alluxioworker/ ,并不行。

启动项目之后,就会在/mnt/ramdisk 下生成一个目录 alluxioworker/ ,这个目录是本机作为一个 worker 节点的存储路径,所以把文件原件放在这个路径下,不会在 Alluxiomaster 节点中生成元数据。

我之前使用的方式是

  • 命令fs copyFromLocal 从本地复制数据到 Alluxio
  • 命令 fs load /Alluxio 根目录下的文件加载到 Alluxio

这种方式并不是挂载底层存储系统。使用的场景是将挂载的底层存储系统之外的数据文件(不在底层存储系统中)复制到 Alluxio 的指定目录下,然后加载到 Alluxio 空间中。因为这些数据文件不在底层存储系统中永久存储,所以之后如果想永久保存这些数据文件,需要将这些数据设置持久化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值