所有文档

          对象存储 BOS

          BOS Alluxio Extension

          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,适用于需要持久化,并且不需要立即使用的数据

          快速开始

          部署

          1. 下载Alluxio、预编译的BOS底层存储alluxio-underfs-bos并解压
          2. 安装alluxio-underfs-bos的jar包
          $ cd {ALLUXIO_HOME}
          $ ./bin/alluxio extensions install <path>/alluxio-underfs-bos-0.1.0.jar
          1. 在${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

          1. 格式化 Alluxio 的日志和 worker 存储目录。
          $ ./bin/alluxio format
          1. 在 localhost 启动 Alluxio
          $ ./bin/alluxio-start.sh local
          1. 创建一个目录,并挂载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
          1. 复制本地文件到Alluxio
          $ ./bin/alluxio fs copyFromLocal LICENSE /mnt/bos
          Copied file:///alluxio-2.0.0/LICENSE to /mnt/bos
          1. 使用list命令查看刚刚复制过去的文件,回显的各参数含义:权限、文件大小、是否被持久化到BOS、创建日期、Alluxio中这个文件的缓存占比、文件名
          $ ./bin/alluxio fs ls /mnt/bos/LICENSE
          -rwxrwxrwx       27040       PERSISTED 07-21-2020 15:06:46:000 100% /mnt/bos/LICENSE
          1. 停止Alluxio
          $ ./bin/alluxio-stop.sh local

          体验Alluxio加速访问BOS数据

          Alluxio利用内存存储数据,通过它可以更快地访问BOS数据。体验一下:

          1. 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
          1. 统计单词"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
          1. 读取过的BOS数据会放在内存中,再次读取时可以更快访问到,100%表示该文件已全部被加载到Alluxio内存中
          $ ./bin/alluxio fs ls //mnt/bos/LICENSE
          -rwxrwxrwx       27040       PERSISTED 07-21-2020 15:06:46:000 100% /mnt/bos/LICENSE
          1. 再次统计单词"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
          1. 再次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
          上一篇
          BOS HDFS
          下一篇
          BOSFTP