Skip to main content

Fast Optimistic Concurrency Control with Apache Ozone S3 Conditional Requests

· 20 min read
Peter Lee
Apache Ozone PMC
note

Apache Ozone will support conditional PutObject, GetObject, HeadObject, CopyObject, and CompleteMultipartUpload in the upcoming 2.2 release (RC0 is currently under a vote), and will add conditional DeleteObject and DeleteObjects support in 2.3.

An increasing number of database systems are moving storage to S3 in shared-everything architectures to reduce cost, dependencies, and operational complexity. In the Hadoop 🐘 era, we typically used ZooKeeper and HDFS as the control plane and data plane. Modern systems are moving the control plane to self-managed consensus groups or RDBMS-backed catalogs, while moving the data plane onto AWS S3 or S3-compatible storage.

Shared-everything systems usually have two pain points: communication overhead and coordination. To reduce write latency, systems often use inline data writes, background flush, and LSN-based union reads. To reduce read latency, they add multi-layer caches, such as self-managed or OS-managed in-memory caches and on-disk caches. Coordination is harder: multiple clients may read the same metadata, make decisions locally, and then try to update the same object. Without a storage-level compare-and-set primitive, applications often need an external lock service, catalog database, or consensus system just to avoid lost updates.

Because Apache Ozone exposes S3, HCFS, HttpFS, and Java APIs as part of its multi-protocol story, conditional requests have become increasingly important. This work is now nearly complete.

Making Apache Ozone’s S3 Compatibility Visible

· 14 min read
Peter Lee
Apache Ozone PMC

Recently I created https://ozone.s3.peterxcli.dev/, an automated update dashboard for Apache Ozone S3 compatibility. It runs Ozone against real S3 compatibility suites, publishes the result every day, and lets you search test cases, inspect failures, read source snippets, open logs, and check whether your PR helps the compatibility story. It is fully open source at https://github.com/peterxcli/ozone-s3-compatibility.

Apache Ozone Best Practices at Didi: Scaling to Tens of Billions of Files

· 5 min read
Kaun-Hung (Rich) Huang
Apache Ozone Contributor
The Apache Ozone Community
Apache Ozone Project
Shilun Fan
Apache Ozone Contributor
Hongbing Wang
Apache Ozone Contributor
JiangHua Zhu
Apache Ozone Contributor
Ming Wei
Apache Ozone Contributor

Guest post by the Didi Engineering Team. For the full story with detailed slides, see Apache Ozone Best Practices at Didi (PDF).

As Didi's volume of unstructured data surged into the hundreds of petabytes, comprising tens of billions of files, their traditional storage architecture faced severe scalability bottlenecks. This post summarizes how they migrated from HDFS to Apache Ozone, the optimizations they implemented for high-performance reads, and their journey in contributing these improvements back to the community.

No More Hotspots: Introducing the Automatic Disk Balancer in Apache Ozone

· 6 min read
The Apache Ozone Community
Apache Ozone Project
Wei-Chiu Chuang
Apache Ozone PMC
Yu-Chen Lai
Apache Ozone Contributor
Gargi Jaiswal
Apache Ozone Contributor
Sammi Chen
Apache Ozone Contributor

Ever replaced a drive on a Datanode only to watch it become an I/O hotspot? Or seen one disk hit 95% usage while others on the same machine sit idle? These imbalances create performance bottlenecks and increase failure risk. Apache Ozone's new intra-node Disk Balancer is designed to fix this—automatically.