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
  • 先决条件
  • 设置MinIO
  • 配置Alluxio
  • 测试MinIO配置
  • 故障排除
  • 指定的存储桶不存在
  • DNS解析-无法执行HTTP请求
  • 连接被拒绝-无法执行HTTP请求
  • 请求禁止
  1. 底层存储系统

Alluxio集成Minio作为底层存储

本指南介绍了如何配置Alluxio用MinIO 做为底层存储系统。 Alluxio提供了原生s3://支持方案(建议使用以获得更好的性能)。 可以使用此方案把Alluxio与一个MinIO服务器链接起来。

先决条件

必须在机器上安装了Alluxio二进制文件才能继续。 可以 从源代码编译Alluxio, 或在本地下载二进制文件。

设置MinIO

MinIO是为云应用和DevOps构建的对象存储。 MinIO提供了一个开源的AWS S3对象存储替代方案。 使用此处步骤启动MinIO服务器实例。 然后,创建一个新的存储桶或使用现有的存储桶。 一旦启动MinIO服务器后,请记下服务器endpoint,accessKey和secretKey。

你还应该记录要在该存储桶中使用的目录, 可以在存储桶中新建一个目录或使用一个现有目录。 在本指南中,MinIO存储桶名称为MINIO_BUCKET,存储桶中的目录名称为MINIO_DIRECTORY。

配置Alluxio

你需要通过修改conf/alluxio-site.properties来配置Alluxio用MinIO做为底层存储系统。第一个修改是指定一个现存MinIO存储桶和目录作为底层存储系统。 由于Minio支持s3协议,因此可以将Alluxio配置为 仿佛指向一个AWS S3 endpoint。

此处列出了conf/alluxio-site.properties文件中所有要修改的字段:

alluxio.master.mount.table.root.ufs=s3://<MINIO_BUCKET>/<MINIO_DIRECTORY>
alluxio.underfs.s3.endpoint=http://<MINIO_ENDPOINT>/
alluxio.underfs.s3.disable.dns.buckets=true
alluxio.underfs.s3.inherit.acl=false
s3a.accessKeyId=<MINIO_ACCESS_KEY_ID>
s3a.secretKey=<MINIO_SECRET_KEY_ID>

对于这些参数,将<MINIO_ENDPOINT>替换为你的MinIO服务的主机名和端口, 例如http://localhost:9000/。 如果未设置端口值,则默认为http端口为80,https端口为443。

测试MinIO配置

通过如下命令格式化并启动Alluxio

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

要确认Alluxio在运行,可以通过访问http://localhost:19999网址或检查日志以确保进程正在运行。

之后,要使用一些基本的Alluxio操作运行测试,执行以下命令:

$ ./bin/alluxio runTests

如果没有错误,则说明MinIO配置正确!

故障排除

如果Alluxio配置不正确,可能会出现几类不同错误。 有关一些常见错误案例及其解决方案,请参见下文。

指定的存储桶不存在

如果返回了类似这样的消息,则需要再次检查alluxio-site.properties文件中存储桶的名称,并确保该存储桶存在于MinIO中。 存储桶名称的属性由alluxio.master.mount.table.root.ufs控制。

Exception in thread "main" alluxio.exception.DirectoryNotEmptyException: Failed to delete /default_tests_files (com.amazonaws.services.s3.model.AmazonS3Exception: The specified bucket does not exist (Service: Amazon S3; Status Code: 404; Error Code: NoSuchBucke
t; Request ID: 158681CA87E59BA0; S3 Extended Request ID: 2d47b54e-7dd4-4e32-bc6e-48ffb8e2265c), S3 Extended Request ID: 2d47b54e-7dd4-4e32-bc6e-48ffb8e2265c) from the under file system
        at alluxio.client.file.BaseFileSystem.delete(BaseFileSystem.java:234)
        at alluxio.cli.TestRunner.runTests(TestRunner.java:118)
        at alluxio.cli.TestRunner.main(TestRunner.java:100)

DNS解析-无法执行HTTP请求

如果遇到这样的异常,则可能是Alluxio属性 alluxio.underfs.s3.disable.dns.buckets 设置为false。 为MinIO将此值设置为true将允许Alluxio解析正确的存储桶位置。

Exception in thread "main" alluxio.exception.DirectoryNotEmptyException: Failed to delete /default_tests_files (com.amazonaws.SdkClientException: Unable to execute HTTP request: {{BUCKET_NAME}}) from the under file system
        at alluxio.client.file.BaseFileSystem.delete(BaseFileSystem.java:234)
        at alluxio.cli.TestRunner.runTests(TestRunner.java:118)
        at alluxio.cli.TestRunner.main(TestRunner.java:100)

连接被拒绝-无法执行HTTP请求

如果发生客户端返回连接被拒绝错误的异常, 那么很可能是Alluxio无法连接MinIO服务器。 确保 alluxio.underfs.s3.endpoint 设值是正确的,并且运行Alluxio的master节点可以通过网络连接到MinIO endpoint。

Exception in thread "main" alluxio.exception.DirectoryNotEmptyException: Failed to delete /default_tests_files (com.amazonaws.SdkClientException: Unable to execute HTTP request: Connect to localhost:9001 [localhost/127.0.0.1] failed: Connection refused (Connect
ion refused)) from the under file system
        at alluxio.client.file.BaseFileSystem.delete(BaseFileSystem.java:234)
        at alluxio.cli.TestRunner.runTests(TestRunner.java:118)
        at alluxio.cli.TestRunner.main(TestRunner.java:100)

请求禁止

如果遇到包含有关禁止访问的消息的异常,则可能 Alluxio master凭证配置不正确。 检查s3a.accessKeyId 和s3a.secretKey。 如果出现此错误,请仔细检查这两个属性的设置是否正确。

ERROR CliUtils - Exception running test: alluxio.examples.BasicNonByteBufferOperations@388526fb
alluxio.exception.AlluxioException: com.amazonaws.services.s3.model.AmazonS3Exception: Forbidden (Service: Amazon S3; Status Code: 403; Error Code: 403 Forbidden; Request ID: 1586BF770688AB20; S3 Extended Request ID: null), S3 Extended Request ID: null
        at alluxio.exception.status.AlluxioStatusException.toAlluxioException(AlluxioStatusException.java:111)
        at alluxio.client.file.BaseFileSystem.createFile(BaseFileSystem.java:200)
        at alluxio.examples.BasicNonByteBufferOperations.createFile(BasicNonByteBufferOperations.java:102)
        at alluxio.examples.BasicNonByteBufferOperations.write(BasicNonByteBufferOperations.java:85)
        at alluxio.examples.BasicNonByteBufferOperations.call(BasicNonByteBufferOperations.java:80)
        at alluxio.examples.BasicNonByteBufferOperations.call(BasicNonByteBufferOperations.java:49)
        at alluxio.cli.CliUtils.runExample(CliUtils.java:51)
        at alluxio.cli.TestRunner.runTest(TestRunner.java:164)
        at alluxio.cli.TestRunner.runTests(TestRunner.java:134)
        at alluxio.cli.TestRunner.main(TestRunner.java:100)
Caused by: alluxio.exception.status.UnknownException: com.amazonaws.services.s3.model.AmazonS3Exception: Forbidden (Service: Amazon S3; Status Code: 403; Error Code: 403 Forbidden; Request ID: 1586BF770688AB20; S3 Extended Request ID: null), S3 Extended Request ID: null

Last updated 7 months ago