Ozone

Slack Docker Pulls

This guide describes how to configure Ozone as Alluxio’s under storage system. Ozone is a scalable, redundant, and distributed object store for Hadoop. Apart from scaling to billions of objects of varying sizes, Ozone can function effectively in containerized environments such as Kubernetes and YARN.

Prerequisites

The Alluxio binaries must be available on the machine.

In preparation for using Ozone with Alluxio, follow the Ozone On Premise Installation to install a Ozone cluster, and follow the Volume Commands and Bucket Commands to create volume and bucket for Ozone cluster.

Basic Setup

To configure Alluxio to use Ozone as under storage, you will need to modify the configuration file conf/alluxio-site.properties. If the file does not exist, create the configuration file from the template.

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

Edit conf/alluxio-site.properties file to set the under storage address to the Ozone bucket and the Ozone directory you want to mount to Alluxio. For example, the under storage address can be o3fs://<OZONE_BUCKET>.<OZONE_VOLUME>/ if you want to mount the whole bucket to Alluxio, or o3fs://<OZONE_BUCKET>.<OZONE_VOLUME>/alluxio/data if only the directory /alluxio/data inside the ozone bucket <OZONE_BUCKET> of <OZONE_VOLUME> is mapped to Alluxio.

alluxio.master.mount.table.root.ufs=o3fs://<OZONE_BUCKET>.<OZONE_VOLUME>/

Example: Running Alluxio Locally with Ozone

Start the Alluxio servers:

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

This will start an Alluxio master and an Alluxio worker. You can see the master UI at http://localhost:19999.

Run a simple example program:

$ ./bin/alluxio runTests

Use the HDFS shell or Ozone shell to Visit your Ozone directory o3fs://<OZONE_BUCKET>.<OZONE_VOLUME>/<OZONE_DIRECTORY> to verify the files and directories created by Alluxio exist. For this test, you should see files named like <OZONE_BUCKET>.<OZONE_VOLUME>/<OZONE_DIRECTORY>/default_tests_files/BasicFile_CACHE_PROMOTE_MUST_CACHE.

Stop Alluxio by running:

$ ./bin/alluxio-stop.sh local

Advanced Setup

Mount Ozone

An Ozone location can be mounted at a nested directory in the Alluxio namespace to have unified access to multiple under storage systems. Alluxio’s Mount Command can be used for this purpose. For example, the following command mounts a directory inside an Ozone bucket into Alluxio directory /ozone:

$ ./bin/alluxio fs mount \
  --option alluxio.underfs.hdfs.configuration=<DIR>/ozone-site.xml:<DIR>/core-site.xml \
  /ozone o3fs://<OZONE_BUCKET>.<OZONE_VOLUME>/

Possible core-site.xml and ozone-site.xml

  • core-site.xml
<configuration>
  <property>
    <name>fs.o3fs.impl</name>
    <value>org.apache.hadoop.fs.ozone.BasicOzoneFileSystem</value>
  </property>
  <property>
    <name>fs.AbstractFileSystem.o3fs.impl</name>
    <value>org.apache.hadoop.fs.ozone.BasicOzFs</value>
  </property>
</configuration>
  • ozone-site.xml
<configuration>
  <property>
    <name>ozone.scm.names</name>
    <value>localhost</value>
  </property>
  <property>
    <name>scm.container.client.max.size</name>
    <value>256</value>
  </property>
  <property>
    <name>scm.container.client.idle.threshold</name>
    <value>10s</value>
  </property>
  <property>
    <name>hdds.ratis.raft.client.rpc.request.timeout</name>
    <value>60s</value>
  </property>
  <property>
    <name>hdds.ratis.raft.client.async.outstanding-requests.max</name>
    <value>32</value>
  </property>
  <property>
    <name>hdds.ratis.raft.client.rpc.watch.request.timeout</name>
    <value>180s</value>
  </property>
</configuration>

Make sure the related config file is on all servers nodes running Alluxio.

Supported Ozone Versions

Currently, the only tested Ozone version with Alluxio is 0.5.0-beta.