MinIO
This guide describes how to configure Alluxio with MinIO as the under storage system. Alluxio natively provides the s3://
scheme (recommended for better performance). You can use this scheme to connect Alluxio with a MinIO server.
Prerequisites
The Alluxio binaries must be on your machine to proceed. You can either compile Alluxio from source, or download the binaries locally.
Setup MinIO
MinIO is an object storage server built for cloud applications and DevOps. MinIO provides an open source alternative to AWS S3.
Launch a MinIO server instance using the steps mentioned here. Then, either create a new bucket or use an existing one. Once the MinIO server is launched, keep a note of the server endpoint, accessKey and secretKey.
You should also note the directory you want to use in that bucket, either by creating a new directory in the bucket or using an existing one. For the purposes of this guide, the MinIO bucket name is called MINIO_BUCKET
, and the directory in that bucket is called MINIO_DIRECTORY
.
Configuring Alluxio
You need to configure Alluxio to use MinIO as its under storage system by modifying conf/alluxio-site.properties
. The first modification is to specify an existing MinIO bucket and directory as the under storage system. Because Minio supports the s3
protocol, it is possible to configure Alluxio as if it were pointing to an AWS S3 endpoint.
All the fields to be modified in conf/alluxio-site.properties
file are listed here:
For these parameters, replace <MINIO_ENDPOINT>
with the hostname and port of your MinIO service, e.g., http://localhost:9000/
. If the port value is left unset, it defaults to port 80 for http
and 443 for https
.
Test the MinIO Configuration
Format and start Alluxio with
Verify Alluxio is running by navigating to http://localhost:19999 or by examining the logs to ensure the process is running.
Then, to run tests using some basic Alluxio operations execute the following command:
If there are no errors then MinIO is configured properly!
Troubleshooting
There are a few variations of errors which might appear if Alluxio is incorrectly configured. See below for a few common cases and their resolutions.
The Specified Bucket Does Not Exist
If a message like this is returned, then you'll need to double check the name of the bucket in the alluxio-site.properties
file and make sure that it exists in MinIO. The property for the bucket name is controlled by alluxio.master.mount.table.root.ufs
DNS Resolution - Unable to execute HTTP request
If an exception like this is encountered then it may be that the Alluxio property alluxio.underfs.s3.disable.dns.buckets
is set to false
. Setting this value to true
for MinIO will allow Alluxio to resolve the proper bucket location.
Connection Refused - Unable to execute HTTP request
If an exception occurs where the client returns an error with information about a refused connection then Alluxio most likely cannot contact the MinIO server. Make sure that the value of alluxio.underfs.s3.endpoint
is correct and that the node running the Alluxio master can reach the MinIO endpoint over the network.
Request Forbidden
If an exception including a message about forbidden access is encountered, it's possible that the Alluxio master has been configured with incorrect credentials. Check the s3a.accessKeyId
and s3a.secretKey
. If this error is appearing, double check that both properties are set correctly.
Last updated