Alluxio
ProductsLanguageHome
  • Alluxio概览
  • 用户指南
    • 快速上手指南
    • 架构
    • FAQ
    • 作业服务器
    • 应用场景
  • 核心功能
    • 缓存
    • 统一命名空间
  • 部署 Alluxio
    • 在Kubernetes上部署Alluxio
    • 本地运行Alluxio
    • 在集群上独立运行Alluxio
    • 在Docker上运行Alluxio
    • 在具有HA的群集上部署Alluxio
    • 使用Docker部署AlluxioFuse加速深度学习训练(试验)
    • 基本要求
  • 云源生
    • Tencent EMR
  • 计算应用
    • Apache Spark
    • Presto
    • Spark on Kubernetes
    • Apache Flink
    • Apache Hadoop MapReduce
    • Presto on Iceberg (Experimental)
    • Trino
    • Apache Hive
    • 深度学习框架
    • Tensorflow
  • 底层存储系统
    • Alluxio集成Amazon AWS S3作为底层存储
    • Alluxio集成GCS作为底层存储
    • Alluxio集成Azure Blob Store作为底层存储
    • Azure Data Lake Storage Gen2
    • Azure 数据湖存储
    • Alluxio集成HDFS作为底层存储
    • Alluxio集成COS作为底层存储
    • Alluxio集成COSN作为底层存储
    • Alluxio集成Ceph Object Storage作为底层存储
    • Alluxio集成NFS作为底层存储
    • Alluxio集成Kodo作为底层存储
    • Alluxio集成Swift作为底层存储
    • Alluxio集成WEB作为底层存储
    • Alluxio集成Minio作为底层存储
    • 阿里云对象存储服务
    • Alluxio集成Ozone作为底层存储
    • Alluxio集成CephFS作为底层存储
  • 安全设置
    • 安全性
  • 运维指南
    • 配置项设置
    • 命令行接口
    • 管理员命令行接口
    • Web界面
    • 日志
    • 度量指标系统
    • 远程记录日志
  • 管理
    • 升级
    • 异常诊断与调试
  • APIs
    • Filesystem API
    • S3 Client
    • POSIX API
    • REST API
    • Python Client
    • 兼容Hadoop的Java
    • Go 客户端
  • 开发者资源
    • 编译Alluxio源代码
    • 开发指南
    • 代码规范
    • 如何开发单元测试
    • 文档规范
  • 参考
    • 配置项列表
    • List of Metrics
  • REST API
    • Master REST API
    • Worker REST API
    • Proxy REST API
    • Job REST API
  • Javadoc
Powered by GitBook
On this page
  • 前期准备
  • 安装 SSH (Mac OS X)
  • 下载 Alluxio
  • 配置 Alluxio
  • [加分项] AWS 相关配置
  • 验证 Alluxio 运行环境
  • 启动 Alluxio
  • 使用 Alluxio Shell
  • [加分项] Alluxio 中的挂载功能
  • [加分项] 用 Alluxio 加速数据访问
  • 关闭 Alluxio
  • 总结
  • 部署 Alluxio
  • 底层存储系统
  • 计算框架和应用
  1. 用户指南

快速上手指南

Last updated 6 months ago

在这个快速上手指南里,我们会引导你在本地机器上安装 Alluxio。 快速上手指南包括以下任务:

  • 下载和配置 Alluxio

  • 验证 Alluxio 运行环境

  • 本地启动 Alluxio

  • 通过 Alluxio Shell 进行基本的文件操作

  • [加分项] 挂载一个公开的 Amazon S3 bucket 到 Alluxio 上

  • 关闭 Alluxio

[加分项] 如果你有一个,你可以完成额外的任务。需要你 AWS 账户信息的章节都有**[加分项]**这一标签。

注意 本指南旨在让你快速开始与 Alluxio 系统进行交互。Alluxio 在运行大数据工作负载的分布式环境中表现最好。这些特性都难以适用于本地环境。如果你有兴趣运行一个更大规模的、能够突出 Alluxio 性能优势的例子,可以请求一个来一键免费部署Spark、Alluxio和S3。

前期准备

为了接下来的快速上手指南,你需要:

  • Mac OS X 或 Linux

  • [加分项] AWS 账户和密钥

安装 SSH (Mac OS X)

如果你使用 Mac OS X,你必须能够 ssh 到 localhost。远程登录开启方法:打开系统偏好设置,然后打开共享,确保远程登录已开启。

下载 Alluxio

接着,你可以用如下命令解压下载包。

$ tar -xzf alluxio-{{site.ALLUXIO_VERSION_STRING}}-bin.tar.gz
$ cd alluxio-{{site.ALLUXIO_VERSION_STRING}}

这会创建一个包含所有的 Alluxio 源文件和 Java 二进制文件的文件夹alluxio-{{site.ALLUXIO_VERSION_STRING}}。在本教程中,这个文件夹的路径将被引用为${ALLUXIO_HOME}。

配置 Alluxio

在${ALLUXIO_HOME}/conf目录下,根据模板文件创建conf/alluxio-env.sh配置文件。

$ cp conf/alluxio-env.sh.template conf/alluxio-env.sh

在conf/alluxio-env.sh文件中为 JAVA_HOME 增加配置.例如:

$ echo "JAVA_HOME=/path/to/java/home" >> conf/alluxio-env.sh

在${ALLUXIO_HOME}/conf目录下,根据模板文件创建conf/alluxio-site.properties配置文件。

$ cp conf/alluxio-site.properties.template conf/alluxio-site.properties

在conf/alluxio-site.properties文件中将 alluxio.master.hostname设置为 localhost。

$ echo "alluxio.master.hostname=localhost" >> conf/alluxio-site.properties

[加分项] AWS 相关配置

为了配置 Alluxio 与 Amazon S3 交互,请在conf/alluxio-site.properties文件中向 Alluxio 配置添加 AWS 访问信息。以下命令将更新该配置。

$ echo "s3a.accessKeyId=<AWS_ACCESS_KEY_ID>" >> conf/alluxio-site.properties
$ echo "s3a.secretKey=<AWS_SECRET_ACCESS_KEY>" >> conf/alluxio-site.properties

你必须将**<AWS_ACCESS_KEY_ID>替换成你的 AWS access key id,将<AWS_SECRET_ACCESS_KEY>**替换成你的 AWS secret access key。

验证 Alluxio 运行环境

在启动 Alluxio 前,我们要保证当前系统环境下 Alluxio 可以正常运行。我们可以通过运行如下命令来验证 Alluxio 的本地运行环境:

$ ./bin/alluxio validateEnv local

该命令将汇报在本地环境运行 Alluxio 可能出现的问题。

启动 Alluxio

在启动 Alluxio 进程前,需要进行格式化。如下命令会格式化 Alluxio 的日志和 worker 存储目录。

$ ./bin/alluxio format

默认配置下,本地运行 Alluxio 会启动一个 master 和一个 worker。我们可以用如下命令在 localhost 启动 Alluxio:

$ ./bin/alluxio-start.sh local SudoMount

使用 Alluxio Shell

$ ./bin/alluxio fs

你可以通过ls命令列出 Alluxio 里的文件。比如列出根目录下所有文件:

$ ./bin/alluxio fs ls /

目前 Alluxio 里没有文件。copyFromLocal命令可以拷贝本地文件到 Alluxio 中。

$ ./bin/alluxio fs copyFromLocal LICENSE /LICENSE
Copied LICENSE to /LICENSE

再次列出 Alluxio 里的文件,可以看到刚刚拷贝的LICENSE文件:

$ ./bin/alluxio fs ls /
-rw-r--r-- staff  staff     26847 NOT_PERSISTED 01-09-2018 15:24:37:088 100% /LICENSE

输出显示 LICENSE 文件在 Alluxio 中,也包含一些其他的有用信息,比如文件的大小、创建的日期、文件的所有者和组以及 Alluxio 中这个文件的缓存占比。

cat命令可以打印文件的内容。

$ ./bin/alluxio fs cat /LICENSE
                                Apache License
                          Version 2.0, January 2004
                       http://www.apache.org/licenses/

  TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
...

默认设置中,Alluxio 使用本地文件系统作为底层文件系统 (UFS)。默认的 UFS 路径是./underFSStorage。我们可以查看 UFS 中的内容:

$ ls ./underFSStorage/

然而,这个目录不存在!这是由于 Alluxio 默认只写入数据到 Alluxio 存储空间,而不会写入 UFS。

但是,我们可以告诉 Alluxio 将文件从 Alluxio 空间持久化到 UFS。shell 命令persist可以做到。

$ ./bin/alluxio fs persist /LICENSE
persisted file /LICENSE with size 26847

如果我们现在再次检查 UFS,文件就会出现。

$ ls ./underFSStorage
LICENSE

[加分项] Alluxio 中的挂载功能

这个特性允许用户挂载不同的存储系统到 Alluxio 命名空间中并且通过 Alluxio 命名空间无缝地跨存储系统访问文件。

首先,我们在 Alluxio 中创建一个目录作为挂载点。

$ ./bin/alluxio fs mkdir /mnt
Successfully created directory /mnt

接着,我们挂载一个已有的 S3 bucket 到 Alluxio。本指南使用alluxio-quick-startS3 bucket。

$ ./bin/alluxio fs mount --readonly alluxio://localhost:19998/mnt/s3 s3://alluxio-quick-start/data
Mounted s3://alluxio-quick-start/data at alluxio://localhost:19998/mnt/s3

我们可以通过 Alluxio 命名空间列出 S3 中的文件。使用熟悉的ls命令列出 S3 挂载目录下的文件。

$ ./bin/alluxio fs ls /mnt/s3
-r-x------ staff  staff    955610 PERSISTED 01-09-2018 16:35:00:882   0% /mnt/s3/sample_tweets_1m.csv
-r-x------ staff  staff  10077271 PERSISTED 01-09-2018 16:35:00:910   0% /mnt/s3/sample_tweets_10m.csv
-r-x------ staff  staff     89964 PERSISTED 01-09-2018 16:35:00:972   0% /mnt/s3/sample_tweets_100k.csv
-r-x------ staff  staff 157046046 PERSISTED 01-09-2018 16:35:01:002   0% /mnt/s3/sample_tweets_150m.csv

通过 Alluxio 统一命名空间,你可以无缝地从不同存储系统中交互数据。举个例子,使用ls -R命令,你可以递归地列举出一个目录下的所有文件。

$ ./bin/alluxio fs ls -R /
-rw-r--r-- staff  staff     26847 PERSISTED 01-09-2018 15:24:37:088 100% /LICENSE
drwxr-xr-x staff  staff         1 PERSISTED 01-09-2018 16:05:59:547  DIR /mnt
dr-x------ staff  staff         4 PERSISTED 01-09-2018 16:34:55:362  DIR /mnt/s3
-r-x------ staff  staff    955610 PERSISTED 01-09-2018 16:35:00:882   0% /mnt/s3/sample_tweets_1m.csv
-r-x------ staff  staff  10077271 PERSISTED 01-09-2018 16:35:00:910   0% /mnt/s3/sample_tweets_10m.csv
-r-x------ staff  staff     89964 PERSISTED 01-09-2018 16:35:00:972   0% /mnt/s3/sample_tweets_100k.csv
-r-x------ staff  staff 157046046 PERSISTED 01-09-2018 16:35:01:002   0% /mnt/s3/sample_tweets_150m.csv

输出显示了 Alluxio 文件系统根目录下来源于挂载存储系统的所有文件。/LICENSE文件在本地文件系统中,/mnt/s3/目录在 S3 中。

[加分项] 用 Alluxio 加速数据访问

由于 Alluxio 利用内存存储数据,它可以加速数据的访问。首先,我们看一看之前从 S3 挂载到 Alluxio 中的一个文件的状态:

$ ./bin/alluxio fs ls /mnt/s3/sample_tweets_150m.csv
-r-x------ staff  staff 157046046 PERSISTED 01-09-2018 16:35:01:002   0% /mnt/s3/sample_tweets_150m.csv

输出显示了文件 Not In Memory(不在内存中)。该文件是推特的样本。我们统计一下有多少推文提到了单词"kitten",并计算该操作的耗时。

$ time ./bin/alluxio fs cat /mnt/s3/sample_tweets_150m.csv | grep -c kitten
889

real	0m22.857s
user	0m7.557s
sys	0m1.181s

取决于你的网络连接状况,该操作可能会超过20秒。如果读取文件时间过长,你可以选择一个小一点的数据集。该目录下的其他文件是该文件的更小子集。 通过将数据放在内存中,Alluxio 可以提高访问该数据的速度。

在通过cat命令获取文件后,你可以用ls命令查看文件的状态:

$ ./bin/alluxio fs ls /mnt/s3/sample_tweets_150m.csv
-r-x------ staff  staff 157046046 PERSISTED 01-09-2018 16:35:01:002 100% /mnt/s3/sample_tweets_150m.csv

输出显示文件已经 100% 被加载到 Alluxio 中,既然如此,那么再次访问该文件的速度应该会快很多。

现在让我们来统计一下拥有"puppy"这个单词的推文数目。

$ time ./bin/alluxio fs cat /mnt/s3/sample_tweets_150m.csv | grep -c puppy
1553

real	0m1.917s
user	0m2.306s
sys	0m0.243s

如你所见,因为数据已经存放到了 Alluxio 内存中了,后续读这个相同文件的速度非常快。

现在让我们来统计一下有多少推文包含"bunny"这个词。

$ time ./bin/alluxio fs cat /mnt/s3/sample_tweets_150m.csv | grep -c bunny
907

real	0m1.983s
user	0m2.362s
sys	0m0.240s

恭喜!你在本地安装了 Alluxio 并且通过 Alluxio 加速了数据访问!

关闭 Alluxio

你可以使用如下命令关闭 Alluxio:

$ ./bin/alluxio-stop.sh local

总结

恭喜你完成了 Alluxio 的快速上手指南!你成功地在本地电脑上下载和安装 Alluxio,并且通过 Alluxio shell 进行了基本的交互。这是一个如何上手 Alluxio 的简单例子。

除此之外还有很多可以学习的内容。你可以通过我们的文档学到 Alluxio 的各种特性。下面的资源详细介绍了 Alluxio 各种部署方式、如何挂载现有存储系统,以及如何配置现有应用程序与 Alluxio 交互。

部署 Alluxio

Alluxio 可以部署在很多不同的环境下。

底层存储系统

有很多可以通过 Alluxio 访问的底层存储系统。

计算框架和应用

不同的计算框架和应用与 Alluxio 的集成。

首先,从下载 Alluxio。

你可以在查看更多关于validateEnv命令的信息。

恭喜!Alluxio 已经启动并运行了!你可以访问 查看 Alluxio master 的运行状态,访问 查看 Alluxio worker 的运行状态。

包含多种与 Alluxio 交互的命令行操作。如果要查看文件系统操作命令列表,运行:

如果我们在 中浏览 Alluxio 文件系统,我们可以看见 LICENSE 文件以及其它有用的信息。其中,Persistence State 栏显示文件为 PERSISTED。

Alluxio 通过统一命名空间的特性统一了对存储系统的访问。你可以阅读和获取更详细的解释。

新挂载的文件和目录也可以在 中看到。

包含 access key id 和 secret accsee key 的 AWS 账户
沙箱集群
Java 8 或更新版本
这里
这里
http://localhost:19999
http://localhost:30000
Alluxio shell
master webUI
统一命名空间的博客
统一命名空间文档
Alluxio web UI
本地运行 Alluxio
在集群上独立运行 Alluxio
在 Docker 上运行 Alluxio
Alluxio 使用 Azure Blob Store
Alluxio 使用 S3
Alluxio 使用 GCS
Alluxio 使用 Minio
Alluxio 使用 CephFS
Alluxio 使用 CephObjectStorage
Alluxio 使用 Swift
Alluxio 使用 HDFS
Alluxio 使用 OSS
Alluxio 使用 NFS
Apache Spark 使用 Alluxio
Apache Hadoop MapReduce 使用 Alluxio
Apache Hive 使用 Alluxio
Presto 使用 Alluxio