本文主要介绍alluxio 挂载s3 作为默认ufs,以集群方式启动alluxio,且进行mount的内容,默认mount后,会有一些权限问题,需要额外处理。

默认ufs 配置

复制 conf/alluxio-site.properties.templateconf/alluxio-site.properties,并且做如下修改 :

alluxio.worker.ramdisk.size=1GB
alluxio.worker.tieredstore.levels=1
alluxio.worker.tieredstore.level0.alias=SSD
alluxio.worker.tieredstore.level0.dirs.path=/data01/alluxio/cache

# User properties
# alluxio.user.file.readtype.default=CACHE
# alluxio.user.file.writetype.default=ASYNC_THROUGH
alluxio.master.hostname=master-1
alluxio.master.mount.table.root.ufs=s3a://bucket/

s3a.accessKeyId=AK
s3a.secretKey=SK
alluxio.underfs.s3.endpoint=http://xxx.com
alluxio.underfs.s3.disable.dns.buckets=false

## 按需修改,如果有hadoop的话,会和hadoop的端口冲突
alluxio.job.worker.web.port=30004
alluxio.job.worker.data.port=30005
alluxio.job.worker.rpc.port=30006

修改conf/workers将其他非master节点配置进去。

配置集群

参考官方文档:https://docs.alluxio.io/os/user/stable/cn/deploy/Running-Alluxio-on-a-Cluster.html

Alluxio mount

alluxio有两种mount方式,分别为alluxio fs mount 和 os mount,alluxio fs mount是把一个ufs path mount到alluxio里面,作为alluxio文件系统的一个目录。
而os mount则是把alluxio path mount到物理操作系统上,成为服务操作系统的一个目录。

alluxio fs mount的语法如下:

./bin/alluxio fs mount \
--option s3a.accessKeyId=<AWS_ACCESS_KEY_ID> \
--option s3a.secretKey=<AWS_SECRET_KEY_ID> \
/mnt/s3 s3://<S3_BUCKET>/<S3_DIRECTORY>

比如一个例子:

alluxio fs mount \
--option s3a.accessKeyId=admin \
--option s3a.secretKey=baifachuan \
--option s3a.endpoint=http://127.0.0.1:9000 \
/s3mn2 s3a://fcbai/fcbai

这个命令可以把对应的bucket的path mount到alluxio的/s3mn2下,可实现统一套alluxio的fs背后支持多个异构文件系统。

另一种是可以把alluxio的path,mount成一个本地的操作系统的path,也就是:

./bin/alluxio-fuse mount  /tmp/m2  alluxio:///

这个命令可以把alluxio的root目录mount到操作系统的/tmp/m2下,需要操作系统存在fuse的能力,关于操作系统的依赖,可以参考 hdfs挂载到本地

但是通过这样的默认挂载,会有一个问题,就是只允许执行mount命令的用户对目录可见,可读,可写,其他用户都没有权限,不但没有权限,连看见mount挂载点的权限都没有,ls的时候会显示这样:

d?????????  ? ?          ?                  ?            ? m2

如果要让其他用户也能看到,需要做额外设置,先看看官方文档:

By default, Alluxio-FUSE mount point can only be accessed by the user
mounting the Alluxio namespace to the local filesystem.

For Linux, add the following line to file /etc/fuse.conf to allow other users
or allow root to access the mounted directory:

user_allow_other

Only after this step that non-root users have the permission to specify the allow_other or allow_root mount options.

For MacOS, follow the osxfuse allow_other instructions
to allow other users to use the allow_other and allow_root mount options.

After setting up, pass the allow_other or allow_root mount options when mounting Alluxio-FUSE:

# All users (including root) can access the files.
$ integration/fuse/bin/alluxio-fuse mount -o allow_other mount_point [alluxio_path]
# The user mounting the filesystem and root can access the files.
$ integration/fuse/bin/alluxio-fuse mount -o allow_root mount_point [alluxio_path]

Note that only one of the allow_other or allow_root could be set.

总结下里,就是两点,首先需要修改/etc/fuse.conf文件添加user_allow_other,这样非root用户在mount的时候,才可以设置allow_other。

其次对于挂载的用户,通过-o参数设置allow_other,这样挂载后的目录,就能对其他用户可写可读。

也就是:

./bin/alluxio-fuse mount -o allow_other  /tmp/m2  alluxio:///

对于2.9.3的alluxio,-o 必须在mount 后,因为这是mount的参数。


扫码手机观看或分享: