BOS-AlluxioExtension工具
更新时间:2021-12-29
Alluxio是什么
Alluxio是一个开源的基于内存的分布式存储系统(a memory speed virtual distributed storage system)。
在大数据生态系统中,Alluxio 位于数据驱动框架或应用(如 Apache Spark等)和各种持久化存储系统(如BOS、HDFS、S3等)之间。Alluxio 统一了存储在这些不同存储系统中的数据,为其上层数据驱动型应用提供统一的客户端 API 和全局命名空间。
通过Alluxio使用BOS的优势
Alluxio内存至上的层次化架构使得对BOS数据的访问能够更便捷,对于频繁访问的数据,大幅减少对BOS接口的请求次数。
读
- 内存级的 I/O 吞吐率,Alluxio的层次化存储机制能够充分利用缓存的频繁访问的数据
- 有效降低对象存储中的一些操作(如列出目录、重命名)的时延
- 简化数据管理,Alluxio支持对多源数据的单点访问
- 兼容性,现有的数据分析应用程序,如 Spark 和 MapReduce 程序,无需更改任何代码就能在 Alluxio 上运行
写
智能缓存,可根据需要配置写策略:
- MUST_CACHE:只写cache,适用于不需要保存的临时数据,虽然丢失数据风险高,但性能最好
- THROUGH:对于近期不会使用的数据可以直接写进BOS,在Alluxio中为其他频繁读取的数据留出更多的内存空间
- CACHE_THROUGH: 同步写Alluxio和BOS,数据很快会被其他Alluxio应用使用
- ASYNC_THROUGH:默认模式,写cache,异步写BOS,适用于需要持久化,并且不需要立即使用的数据
快速开始
部署
- 下载Alluxio、预编译的BOS底层存储alluxio-underfs-bos并解压
- 安装alluxio-underfs-bos的jar包
$ cd {ALLUXIO_HOME}
$ ./bin/alluxio extensions install <path>/alluxio-underfs-bos-0.1.0.jar
- 在${ALLUXIO_HOME}/conf目录下,根据模板文件创建conf/alluxio-site.properties配置文件,配置BOS的AK/SK,并支持临时授权访问STS。
$ cp conf/alluxio-site.properties.template conf/alluxio-site.properties
fs.bos.accessKey=<BOS_AK>
fs.bos.secretKey=<BOS_SK>
fs.bos.endpoint=<BOS_ENDPOINT>
alluxio.user.file.writetype.default=CACHE_THROUGH
Alluxio挂载BOS
- 格式化 Alluxio 的日志和 worker 存储目录。
$ ./bin/alluxio format
- 在 localhost 启动 Alluxio
$ ./bin/alluxio-start.sh local
- 创建一个目录,并挂载BOS,BOS上需要有一个bucket,此处以"test-979"桶为例
$ ./bin/alluxio fs mkdir /mnt
Successfully created directory /mnt
$ ./bin/alluxio fs mount /mnt/bos bos://test-979
Mounted bos://test-979 at /mnt/bos
- 复制本地文件到Alluxio
$ ./bin/alluxio fs copyFromLocal LICENSE /mnt/bos
Copied file:///alluxio-2.0.0/LICENSE to /mnt/bos
- 使用list命令查看刚刚复制过去的文件,回显的各参数含义:权限、文件大小、是否被持久化到BOS、创建日期、Alluxio中这个文件的缓存占比、文件名
$ ./bin/alluxio fs ls /mnt/bos/LICENSE
-rwxrwxrwx 27040 PERSISTED 07-21-2020 15:06:46:000 100% /mnt/bos/LICENSE
- 停止Alluxio
$ ./bin/alluxio-stop.sh local
体验Alluxio加速访问BOS数据
Alluxio利用内存存储数据,通过它可以更快地访问BOS数据。体验一下:
- list查看/mnt/bos目录下文件列表,0%表示该文件不在Alluxio内存中
$ time ./bin/alluxio fs ls /mnt/bos
-rwxrwxrwx 27040 PERSISTED 07-21-2020 15:06:46:000 0% /mnt/bos/LICENSE
-rwxrwxrwx 51307896 PERSISTED 07-21-2020 15:05:49:000 0% /mnt/bos/alluxio-underfs-bos-0.1.0.jar
real 0m2.297s
user 0m2.703s
sys 0m0.269s
- 统计单词"the"在文件/mnt/bos/LICENSE中出现的次数
$ time ./bin/alluxio fs cat /mnt/bos/LICENSE | grep -c the
200
real 0m3.357s
user 0m2.974s
sys 0m0.289s
- 读取过的BOS数据会放在内存中,再次读取时可以更快访问到,100%表示该文件已全部被加载到Alluxio内存中
$ ./bin/alluxio fs ls //mnt/bos/LICENSE
-rwxrwxrwx 27040 PERSISTED 07-21-2020 15:06:46:000 100% /mnt/bos/LICENSE
- 再次统计单词"the"在文件/mnt/bos/LICENSE中出现的次数,3.357s → 2.189s,第二次无需从BOS拉取数据,耗时明显缩短
$ time ./bin/alluxio fs cat /mnt/bos/LICENSE | grep -c the
200
real 0m2.189s
user 0m2.835s
sys 0m0.286s
- 再次list查看/mnt/bos目录下文件列表,2.297s → 1.793s,也会更快
$ time ./bin/alluxio fs ls /mnt/bos
-rwxrwxrwx 27040 PERSISTED 07-21-2020 15:06:46:000 100% /mnt/bos/LICENSE
-rwxrwxrwx 51307896 PERSISTED 07-21-2020 15:05:49:000 0% /mnt/bos/alluxio-underfs-bos-0.1.0.jar
real 0m1.793s
user 0m2.630s
sys 0m0.238s