mount命令可以说是Alluxio最有特色的命令之一. 它类似于Linux里的mount命令---Linux用户可以通过Linux mount把硬盘, SSD等存储设备加载到这台Linux系统的本地文件系统中. 而在Alluxio系统当中, mount的概念进一步被扩展到了分布式系统一层: 用户可以通过Alluxio mount把一个或多个其他的存储系统/云存储服务(诸如HDFS, S3, Azure等), 挂载到Alluxio这个分布式文件系统当中去. 从而运行在Alluxio上的分布式应用, 诸如Spark, Presto或者MapReduce等, 不需要去适配甚至了解具体的数据访问协议和路径, 而只需要知道数据对应在Alluxio 文件系统的路径就已足够. 从而极大的方便了应用的开发和维护.
常用链接
- Alluxio项目官网
- Alluxio Inc网站
- Alluxio在各大厂用例
- 关注Alluxio微信公众号: Alluxio_China
基本用法
这里我们用一个简单的例子来演示mount命令的基本用法. 假设我们有HDFS和S3两个不同的存储系统, 分别存储了用户信息(hdfs://localhost:9000/users
)和文档信息(s3a://apc999/docs
). 现在我们可以把两套系统同时挂载到Alluxio当中, 使得用户和文档信息看起来只是保存在同一个文件系统的不同目录里, 如下图所示.
设定根目录挂载
Alluxio的根目录必须是一个挂载点. 所以启动Alluxio之前, 在conf/alluxio-site.properties
当中设置:
# 指定Alluxio根目录对应HDFS
alluxio.underfs.address=hdfs://localhost:9000/users/
# 访问S3的credentials
aws.accessKeyId=<S3_ACCESS_KEY>
aws.secretKey=<S3_SECRET_KEY>
设定其他目录挂载
待Alluxio启动完毕, 再挂载S3 bucket到挂载点 alluxio:///docs
$ bin/alluxio fs mount /docs s3a://apc999/docs
Mounted s3a://apc999/docs at /docs
至此, Alluxio应用就可以在alluxio://docs/下访问S3里的文档数据, 以及在alluxio:///users/
下访问HDFS里的用户数据.
查看当前所有的挂载点
不附加参数的mount
命令可以查看当前所有的挂载点
$ bin/alluxio fs mount
s3a://apc999/data on /docs (s3, capacity=-1, used bytes=-1, not read-only, not shared, properties={aws.secretKey=<S3_SECRET_KEY>, aws.accessKeyId=<S3_ACCESS_KEY>})
hdfs://localhost:9000/ on / (hdfs, capacity=500068036608, used bytes=8192, not read-only, not shared, properties={})
取消挂载点
$ bin/alluxio fs unmount /docs
Unmounted /docs
高级用法: 挂载点的参数设置
设置普通挂载点
比如我们有另一个S3 bucket, 使用和之前设定不一样的key. 那么我们可以在mount的时候通过加上--option
的选项来指定只作用于这个挂载点的参数, 比如:
$ bin/alluxio fs mount /docs2 s3a://other_bucket/docs
--option aws.accessKeyId=<S3_ACCESS_KEY_OTHER_BUCKET>
--option aws.secretKey=<S3_SECRET_KEY_OTHER_BUCKET>
Mounted s3a://other_bucket/docs at /docs2
这个功能另外一个常见的用处是当我们挂载不同的HDFS且他们的设置不同的时候, 可以特别指定每一个HDFS所对应的设置(core-site.xml
, hdfs-site.xml
)
$ bin/alluxio fs mount /hdfs2 hdfs://host:port/
--option alluxio.underfs.hdfs.configuration=/path/core-site.xml:/path/hdfs-site.xml
设置根目录挂载点
根目录挂载点的额外参数可以通过conf/alluxio-site.properties
来设置. 比如我们需要设置根目录挂载点的alluxio.foo.bar
参数, 那么我们就在alluxio.foo.bar
前加上alluxio.master.mount.table.root.option
以表示这是作用于根目录挂载点的参数, 最终添加如下文本到conf/alluxio-site.properties
当中:
alluxio.master.mount.table.root.option.alluxio.foo.bar=<value>