MCPcopy Index your code
hub / github.com/apache/ozone

github.com/apache/ozone @ozone-2.1.1

Chat with this repo
repository ↗ · DeepWiki ↗ · release ozone-2.1.1 ↗ · + Follow
44,233 symbols 279,899 edges 4,401 files 12,317 documented · 28% 1 cross-repo links
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Apache Ozone Logo

License Docker Pulls Docker Stars Contributors Commit Activity OSSRank

Apache Ozone

Ozone is a scalable, redundant, and distributed object store for Hadoop and Cloud-native environments. Apart from scaling to billions of objects of varying sizes, Ozone can function effectively in containerized environments such as Kubernetes and YARN.

  • MULTI-PROTOCOL SUPPORT: Ozone supports different protocols like S3 and Hadoop File System APIs.
  • SCALABLE: Ozone is designed to scale to tens of billions of files and blocks and, in the future, even more.
  • CONSISTENT: Ozone is a strongly consistent object store. This consistency is achieved by using protocols like RAFT.
  • CLOUD-NATIVE: Ozone is designed to work well in containerized environments like YARN and Kubernetes.
  • SECURE: Ozone integrates with Kerberos infrastructure for authentication, supports native ACLs and integrates with Ranger for access control and supports TDE and on-wire encryption.
  • HIGHLY AVAILABLE: Ozone is a fully replicated system that is designed to survive multiple failures.

Documentation

The latest documentation is generated together with the releases and hosted on the apache site.

Please check the documentation page for more information.

Contact

Ozone is a top level project under the Apache Software Foundation

  • Ozone web page
  • Mailing lists
  • Chat: There are a few ways to interact with the community
    • You can find the #ozone channel on the official ASF Slack. Invite link is here.
    • You can use GitHub Discussions to post questions or follow community syncs.
  • There are Open Weekly calls where you can ask anything about Ozone.
    • Past meeting notes are also available from the wiki.
  • Reporting security issues: Please consult with SECURITY.md about reporting security vulnerabilities and issues.

Download

Latest release artifacts (source release and binary packages) are available from the Ozone web page.

Quick start

Run Ozone with Docker Compose

The easiest way to start a cluster with docker is by using Docker Compose:

  • Obtain Ozone’s sample Docker Compose configuration:
curl -O https://raw.githubusercontent.com/apache/ozone-docker/refs/heads/latest/docker-compose.yaml
  • Start the cluster
docker compose up -d --scale datanode=3
  • Note: By default, the cluster will be started with replication factor set to 1. It can be changed by setting the environment variable OZONE_REPLICATION_FACTOR to the desired value.

And you can use AWS S3 cli:

  • First, let’s configure AWS access key and secret key. Because the cluster is not secured, you can use any arbitrary access key and secret key. For example:
export AWS_ACCESS_KEY_ID=testuser/scm@EXAMPLE.COM
export AWS_SECRET_ACCESS_KEY=c261b6ecabf7d37d5f9ded654b1c724adac9bd9f13e247a235e567e8296d2999
  • Then we can create a bucket and upload a file to it:
aws s3api --endpoint http://localhost:9878/ create-bucket --bucket=wordcount
# create a temporary file to upload to Ozone via S3 support 
ls -1 > /tmp/testfile
aws s3 --endpoint http://localhost:9878 cp --storage-class REDUCED_REDUNDANCY  /tmp/testfile  s3://wordcount/testfile

Run Ozone from released artifact

If you need a more realistic cluster, you can download the latest (binary) release package, and start a cluster with the help of docker-compose:

After you untar the binary:

cd compose/ozone
docker-compose up -d --scale datanode=3

The compose folder contains different sets of configured clusters (secure, HA, mapreduce example), you can check the various subfolders for more examples.

Run on Kubernetes

Ozone is a first class citizen of the Cloud-Native environments. The binary package contains multiple sets of K8s resource files to show how it can be deployed.

Build from source

Ozone can be built with Apache Maven:

mvn clean install -DskipTests

And can be started with the help of Docker:

cd hadoop-ozone/dist/target/ozone-*/compose/ozone
docker-compose up -d --scale datanode=3

For more information, you can check the Contribution guideline

Contribute

All contributions are welcome.

  1. Please open a Jira issue
  2. And create a pull request

For more information, you can check the Contribution guideline

License

The Apache Ozone project is licensed under the Apache 2.0 License. See the LICENSE file for details.

Extension points exported contracts — how you extend this code

ReplicaVerifier (Interface)
Functional interface for implementing a block verifier. [6 implementers]
hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/debug/replicas/ReplicaVerifier.java
MockBlockAllocator (Interface)
Interface to create new pipeline/blocks for new keys. Different replication scheme may require different implementat [12 …
hadoop-ozone/client/src/test/java/org/apache/hadoop/ozone/client/MockBlockAllocator.java
SignatureParser (Interface)
Parser contract to extract signature information from header or query. [7 implementers]
hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/signature/SignatureParser.java
ReconSchemaDefinition (Interface)
Classes meant to initialize the SQL schema for Recon. The implementations of this class will be used to create the SQL s [11 …
hadoop-ozone/recon-codegen/src/main/java/org/apache/ozone/recon/schema/ReconSchemaDefinition.java
TestCase (Interface)
Test cases for non-HA cluster should implement this. [60 implementers]
hadoop-ozone/integration-test/src/test/java/org/apache/ozone/test/NonHATests.java
OzoneManagerAuthorizer (Interface)
A subinterface of IAccessAuthorizer specifically for Ozone Manager. [14 implementers]
hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/security/acl/OzoneManagerAuthorizer.java
S3SecretStore (Interface)
S3 secret store interface. [8 implementers]
hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/S3SecretStore.java
ReconOmTask (Interface)
Interface used to denote a Recon task that needs to act on OM DB events. [7 implementers]
hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/tasks/ReconOmTask.java

Core symbols most depended-on inside this repo

size
called by 3545
hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/db/cache/TableCache.java
n
called by 3509
hadoop-hdds/docs/themes/ozonedoc/static/swagger-resources/swagger-ui-bundle.js
get
called by 2441
hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/S3SecretCache.java
of
called by 2091
hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/validation/ValidationContext.java
newBuilder
called by 1994
hadoop-ozone/mini-cluster/src/main/java/org/apache/hadoop/ozone/MiniOzoneCluster.java
set
called by 1895
hadoop-hdds/config/src/main/java/org/apache/hadoop/hdds/conf/ConfigurationTarget.java
get
called by 1767
hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/snapshot/PersistentMap.java
add
called by 1759
hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/snapshot/PersistentSet.java

Shape

Method 36,879
Class 4,703
Function 2,054
Interface 400
Enum 192
Route 5

Languages

Java92%
TypeScript8%
C++1%
Python1%
C1%

Modules by API surface

hadoop-hdds/docs/themes/ozonedoc/static/swagger-resources/swagger-ui-bundle.js1,795 symbols
hadoop-hdds/framework/src/main/resources/webapps/static/d3-3.5.17.min.js389 symbols
hadoop-hdds/framework/src/main/resources/webapps/static/angular-1.8.0.min.js285 symbols
hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OMMetrics.java280 symbols
hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java247 symbols
hadoop-hdds/docs/themes/ozonedoc/static/swagger-resources/swagger-ui-standalone-preset.js226 symbols
hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/OzoneRpcClientTests.java172 symbols
hadoop-ozone/httpfsgateway/src/main/java/org/apache/ozone/fs/http/server/FSOperations.java157 symbols
hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/rpc/RpcClient.java128 symbols
hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/OzoneBucket.java116 symbols
hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/snapshot/TestOmSnapshot.java114 symbols
hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/StorageContainerManager.java110 symbols

Used by 1 indexed graphs manifest dependencies, hub-wide

For agents

$ claude mcp add ozone \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact