This is an automated email from the ASF dual-hosted git repository.
github-bot pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/ozone-site.git
The following commit(s) were added to refs/heads/asf-site by this push:
new 35b03a9c [auto] Generated docs from Apache Ozone master
48aefeaad09653e286ec4abbc6872e95d9fa1510
35b03a9c is described below
commit 35b03a9cc478318a88480fc92711f6da9a73373b
Author: Github Actions <[email protected]>
AuthorDate: Tue Jun 17 12:46:52 2025 +0000
[auto] Generated docs from Apache Ozone master
48aefeaad09653e286ec4abbc6872e95d9fa1510
---
docs/edge/concept.html | 6 +
docs/edge/concept/containers.html | 6 +
docs/edge/concept/datanodes.html | 6 +
docs/edge/concept/networkports.html | 6 +
docs/edge/concept/overview.html | 6 +
docs/edge/concept/ozonemanager.html | 6 +
docs/edge/concept/recon.html | 6 +
docs/edge/concept/storagecontainermanager.html | 6 +
docs/edge/design.html | 6 +
docs/edge/design/configless.html | 6 +
docs/edge/design/decommissioning.html | 6 +
docs/edge/design/dn-merge-rocksdb.html | 6 +
docs/edge/design/dn-min-space-configuration.html | 6 +
docs/edge/design/ec.html | 6 +
docs/edge/design/gdpr.html | 6 +
docs/edge/design/httpfs.html | 6 +
docs/edge/design/locks.html | 6 +
docs/edge/design/multiraft.html | 6 +
docs/edge/design/namespace-support.html | 6 +
docs/edge/design/nfs.html | 6 +
docs/edge/design/nonrolling-upgrade.html | 6 +
docs/edge/design/ofs.html | 6 +
docs/edge/design/omha.html | 6 +
docs/edge/design/omprepare.html | 6 +
.../design/overwrite-key-only-if-unchanged.html | 6 +
docs/edge/design/ozone-enhancement-proposals.html | 6 +
docs/edge/design/recon1.html | 6 +
docs/edge/design/recon2.html | 6 +
docs/edge/design/s3-performance.html | 6 +
docs/edge/design/s3gateway.html | 6 +
docs/edge/design/scmha.html | 6 +
docs/edge/design/secure-s3.html | 6 +
docs/edge/design/storage-class.html | 6 +
docs/edge/design/symmetric-token-signatures.html | 6 +
docs/edge/design/tde.html | 6 +
docs/edge/design/token.html | 6 +
docs/edge/design/topology.html | 6 +
docs/edge/design/trash.html | 6 +
docs/edge/design/typesafeconfig.html | 6 +
docs/edge/design/upgrade-dev-primer.html | 6 +
docs/edge/design/volume-management.html | 6 +
docs/edge/en/sitemap.xml | 3 +
docs/edge/feature.html | 6 +
docs/edge/feature/decommission.html | 6 +
docs/edge/feature/dn-merge-rocksdb.html | 6 +
docs/edge/feature/erasurecoding.html | 6 +
docs/edge/feature/faircallqueue.html | 6 +
docs/edge/feature/nonrolling-upgrade.html | 6 +
docs/edge/feature/observability.html | 6 +
docs/edge/feature/om-ha.html | 6 +
docs/edge/feature/prefixfso.html | 6 +
docs/edge/feature/quota.html | 6 +
docs/edge/feature/recon.html | 6 +
docs/edge/feature/reconfigurability.html | 6 +
.../feature/s3-multi-tenancy-access-control.html | 6 +
docs/edge/feature/s3-multi-tenancy-setup.html | 6 +
docs/edge/feature/s3-multi-tenancy.html | 6 +
docs/edge/feature/s3-tenant-commands.html | 6 +
docs/edge/feature/scm-ha.html | 6 +
docs/edge/feature/snapshot.html | 6 +
docs/edge/feature/streaming-write-pipeline.html | 6 +
docs/edge/feature/topology.html | 6 +
docs/edge/index.html | 6 +
docs/edge/index.xml | 7 +
docs/edge/integration.html | 6 +
docs/edge/integration/distcp.html | 6 +
docs/edge/integration/hive.html | 6 +
docs/edge/integration/impala.html | 6 +
docs/edge/interface.html | 55 +++++-
docs/edge/interface/cli.html | 6 +
docs/edge/interface/csi.html | 6 +
docs/edge/interface/httpfs.html | 8 +-
docs/edge/interface/index.xml | 7 +
docs/edge/interface/javaapi.html | 6 +
.../native-cpp.html} | 188 ++++++++++-----------
docs/edge/interface/o3fs.html | 6 +
docs/edge/interface/ofs.html | 8 +-
docs/edge/interface/python.html | 6 +
docs/edge/interface/reconapi.html | 6 +
docs/edge/interface/s3.html | 6 +
docs/edge/recipe.html | 6 +
docs/edge/recipe/boto3tutorial.html | 6 +
docs/edge/recipe/botoclient.html | 6 +
docs/edge/recipe/prometheus.html | 6 +
docs/edge/recipe/pyarrowtutorial.html | 6 +
docs/edge/recipe/pythonrequestsozonehttpfs.html | 6 +
docs/edge/recipe/sparkozonefsk8s.html | 6 +
docs/edge/security.html | 6 +
docs/edge/security/gdpr.html | 6 +
docs/edge/security/secureozone.html | 6 +
docs/edge/security/securingdatanodes.html | 6 +
docs/edge/security/securingozonehttp.html | 6 +
docs/edge/security/securings3.html | 6 +
docs/edge/security/securingtde.html | 6 +
docs/edge/security/securityacls.html | 6 +
docs/edge/security/securitywithranger.html | 6 +
docs/edge/sitemap.xml | 2 +-
docs/edge/start.html | 6 +
docs/edge/start/fromsource.html | 6 +
docs/edge/start/kubernetes.html | 6 +
docs/edge/start/minikube.html | 6 +
docs/edge/start/onprem.html | 6 +
docs/edge/start/runningviadocker.html | 6 +
docs/edge/start/startfromdockerhub.html | 6 +
docs/edge/tools.html | 6 +
docs/edge/tools/admin.html | 6 +
docs/edge/tools/auditparser.html | 6 +
docs/edge/tools/containerlogparser.html | 6 +
docs/edge/tools/debug.html | 6 +
docs/edge/tools/genconf.html | 6 +
docs/edge/tools/logsinozone.html | 6 +
docs/edge/tools/testtools.html | 6 +
docs/edge/zh/interface/ofs.html | 2 +-
113 files changed, 801 insertions(+), 103 deletions(-)
diff --git a/docs/edge/concept.html b/docs/edge/concept.html
index 6aa29327..ce619ba9 100644
--- a/docs/edge/concept.html
+++ b/docs/edge/concept.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="./interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/concept/containers.html
b/docs/edge/concept/containers.html
index ac80e9de..b231f88d 100644
--- a/docs/edge/concept/containers.html
+++ b/docs/edge/concept/containers.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/concept/datanodes.html b/docs/edge/concept/datanodes.html
index aa4867ad..15426f74 100644
--- a/docs/edge/concept/datanodes.html
+++ b/docs/edge/concept/datanodes.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/concept/networkports.html
b/docs/edge/concept/networkports.html
index a99da609..9239919f 100644
--- a/docs/edge/concept/networkports.html
+++ b/docs/edge/concept/networkports.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/concept/overview.html b/docs/edge/concept/overview.html
index 2d12be3d..22b7999f 100644
--- a/docs/edge/concept/overview.html
+++ b/docs/edge/concept/overview.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/concept/ozonemanager.html
b/docs/edge/concept/ozonemanager.html
index b327c9ad..614dea22 100644
--- a/docs/edge/concept/ozonemanager.html
+++ b/docs/edge/concept/ozonemanager.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/concept/recon.html b/docs/edge/concept/recon.html
index 2a5de360..675116e0 100644
--- a/docs/edge/concept/recon.html
+++ b/docs/edge/concept/recon.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/concept/storagecontainermanager.html
b/docs/edge/concept/storagecontainermanager.html
index 5d4c06c4..820b2b89 100644
--- a/docs/edge/concept/storagecontainermanager.html
+++ b/docs/edge/concept/storagecontainermanager.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/design.html b/docs/edge/design.html
index d537c1a9..31c1734b 100644
--- a/docs/edge/design.html
+++ b/docs/edge/design.html
@@ -374,6 +374,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="./interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/design/configless.html b/docs/edge/design/configless.html
index 37a35a4b..c33f93eb 100644
--- a/docs/edge/design/configless.html
+++ b/docs/edge/design/configless.html
@@ -372,6 +372,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/design/decommissioning.html
b/docs/edge/design/decommissioning.html
index 3f23ab5a..bc4a4e83 100644
--- a/docs/edge/design/decommissioning.html
+++ b/docs/edge/design/decommissioning.html
@@ -372,6 +372,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/design/dn-merge-rocksdb.html
b/docs/edge/design/dn-merge-rocksdb.html
index 6c174e8f..33beb092 100644
--- a/docs/edge/design/dn-merge-rocksdb.html
+++ b/docs/edge/design/dn-merge-rocksdb.html
@@ -372,6 +372,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/design/dn-min-space-configuration.html
b/docs/edge/design/dn-min-space-configuration.html
index 988a968e..24af3d1e 100644
--- a/docs/edge/design/dn-min-space-configuration.html
+++ b/docs/edge/design/dn-min-space-configuration.html
@@ -372,6 +372,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/design/ec.html b/docs/edge/design/ec.html
index e05dbd1a..3dc742fa 100644
--- a/docs/edge/design/ec.html
+++ b/docs/edge/design/ec.html
@@ -372,6 +372,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/design/gdpr.html b/docs/edge/design/gdpr.html
index b7e7b974..5fc36ed1 100644
--- a/docs/edge/design/gdpr.html
+++ b/docs/edge/design/gdpr.html
@@ -372,6 +372,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/design/httpfs.html b/docs/edge/design/httpfs.html
index 9de524ea..c0f20d04 100644
--- a/docs/edge/design/httpfs.html
+++ b/docs/edge/design/httpfs.html
@@ -372,6 +372,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/design/locks.html b/docs/edge/design/locks.html
index 56ec87a3..c4b20a71 100644
--- a/docs/edge/design/locks.html
+++ b/docs/edge/design/locks.html
@@ -372,6 +372,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/design/multiraft.html b/docs/edge/design/multiraft.html
index 7bbf13b7..c3b4c575 100644
--- a/docs/edge/design/multiraft.html
+++ b/docs/edge/design/multiraft.html
@@ -372,6 +372,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/design/namespace-support.html
b/docs/edge/design/namespace-support.html
index 5254d455..0600ce93 100644
--- a/docs/edge/design/namespace-support.html
+++ b/docs/edge/design/namespace-support.html
@@ -372,6 +372,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/design/nfs.html b/docs/edge/design/nfs.html
index b4388efe..78974bbb 100644
--- a/docs/edge/design/nfs.html
+++ b/docs/edge/design/nfs.html
@@ -372,6 +372,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/design/nonrolling-upgrade.html
b/docs/edge/design/nonrolling-upgrade.html
index c3873945..a6774ae4 100644
--- a/docs/edge/design/nonrolling-upgrade.html
+++ b/docs/edge/design/nonrolling-upgrade.html
@@ -372,6 +372,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/design/ofs.html b/docs/edge/design/ofs.html
index 73297126..5b746214 100644
--- a/docs/edge/design/ofs.html
+++ b/docs/edge/design/ofs.html
@@ -372,6 +372,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/design/omha.html b/docs/edge/design/omha.html
index 5c8a0a47..175cd29b 100644
--- a/docs/edge/design/omha.html
+++ b/docs/edge/design/omha.html
@@ -372,6 +372,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/design/omprepare.html b/docs/edge/design/omprepare.html
index 82383d11..6eab0fd4 100644
--- a/docs/edge/design/omprepare.html
+++ b/docs/edge/design/omprepare.html
@@ -372,6 +372,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/design/overwrite-key-only-if-unchanged.html
b/docs/edge/design/overwrite-key-only-if-unchanged.html
index 08cad8a7..6f2f0e2a 100644
--- a/docs/edge/design/overwrite-key-only-if-unchanged.html
+++ b/docs/edge/design/overwrite-key-only-if-unchanged.html
@@ -372,6 +372,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/design/ozone-enhancement-proposals.html
b/docs/edge/design/ozone-enhancement-proposals.html
index 4d000477..af7b599f 100644
--- a/docs/edge/design/ozone-enhancement-proposals.html
+++ b/docs/edge/design/ozone-enhancement-proposals.html
@@ -372,6 +372,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/design/recon1.html b/docs/edge/design/recon1.html
index edf06bbe..45c9f491 100644
--- a/docs/edge/design/recon1.html
+++ b/docs/edge/design/recon1.html
@@ -372,6 +372,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/design/recon2.html b/docs/edge/design/recon2.html
index f8310319..ef892be7 100644
--- a/docs/edge/design/recon2.html
+++ b/docs/edge/design/recon2.html
@@ -372,6 +372,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/design/s3-performance.html
b/docs/edge/design/s3-performance.html
index 3c171a20..2a49e30f 100644
--- a/docs/edge/design/s3-performance.html
+++ b/docs/edge/design/s3-performance.html
@@ -372,6 +372,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/design/s3gateway.html b/docs/edge/design/s3gateway.html
index 690c9230..d336781d 100644
--- a/docs/edge/design/s3gateway.html
+++ b/docs/edge/design/s3gateway.html
@@ -372,6 +372,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/design/scmha.html b/docs/edge/design/scmha.html
index 22bb01dc..c276fc3b 100644
--- a/docs/edge/design/scmha.html
+++ b/docs/edge/design/scmha.html
@@ -372,6 +372,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/design/secure-s3.html b/docs/edge/design/secure-s3.html
index dc506d0a..508ac7e6 100644
--- a/docs/edge/design/secure-s3.html
+++ b/docs/edge/design/secure-s3.html
@@ -372,6 +372,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/design/storage-class.html
b/docs/edge/design/storage-class.html
index 41bb7f37..41107b97 100644
--- a/docs/edge/design/storage-class.html
+++ b/docs/edge/design/storage-class.html
@@ -372,6 +372,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/design/symmetric-token-signatures.html
b/docs/edge/design/symmetric-token-signatures.html
index fe385c99..983647fb 100644
--- a/docs/edge/design/symmetric-token-signatures.html
+++ b/docs/edge/design/symmetric-token-signatures.html
@@ -372,6 +372,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/design/tde.html b/docs/edge/design/tde.html
index 99498502..27294a2e 100644
--- a/docs/edge/design/tde.html
+++ b/docs/edge/design/tde.html
@@ -372,6 +372,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/design/token.html b/docs/edge/design/token.html
index 6099bc88..158c24df 100644
--- a/docs/edge/design/token.html
+++ b/docs/edge/design/token.html
@@ -372,6 +372,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/design/topology.html b/docs/edge/design/topology.html
index 0e5b72f7..a3b79384 100644
--- a/docs/edge/design/topology.html
+++ b/docs/edge/design/topology.html
@@ -372,6 +372,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/design/trash.html b/docs/edge/design/trash.html
index ecfe6572..38eaa23c 100644
--- a/docs/edge/design/trash.html
+++ b/docs/edge/design/trash.html
@@ -372,6 +372,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/design/typesafeconfig.html
b/docs/edge/design/typesafeconfig.html
index ca22fbd9..7dcea811 100644
--- a/docs/edge/design/typesafeconfig.html
+++ b/docs/edge/design/typesafeconfig.html
@@ -372,6 +372,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/design/upgrade-dev-primer.html
b/docs/edge/design/upgrade-dev-primer.html
index 5397bf17..1988cebc 100644
--- a/docs/edge/design/upgrade-dev-primer.html
+++ b/docs/edge/design/upgrade-dev-primer.html
@@ -372,6 +372,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/design/volume-management.html
b/docs/edge/design/volume-management.html
index 0181cb4c..cba884cc 100644
--- a/docs/edge/design/volume-management.html
+++ b/docs/edge/design/volume-management.html
@@ -372,6 +372,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/en/sitemap.xml b/docs/edge/en/sitemap.xml
index 1bb5a6c8..0300efbe 100644
--- a/docs/edge/en/sitemap.xml
+++ b/docs/edge/en/sitemap.xml
@@ -556,6 +556,9 @@
</url><url>
<loc>/recipe/pythonrequestsozonehttpfs.html</loc>
<lastmod>2025-06-14T12:58:36-07:00</lastmod>
+ </url><url>
+ <loc>/interface/native-cpp.html</loc>
+ <lastmod>2025-06-16T11:06:17-07:00</lastmod>
</url><url>
<loc>/start/onprem.html</loc>
<lastmod>2025-06-14T00:32:50-07:00</lastmod>
diff --git a/docs/edge/feature.html b/docs/edge/feature.html
index ea622640..de347108 100644
--- a/docs/edge/feature.html
+++ b/docs/edge/feature.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="./interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/feature/decommission.html
b/docs/edge/feature/decommission.html
index 16431d37..5c59beea 100644
--- a/docs/edge/feature/decommission.html
+++ b/docs/edge/feature/decommission.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/feature/dn-merge-rocksdb.html
b/docs/edge/feature/dn-merge-rocksdb.html
index 6a893069..a3badf71 100644
--- a/docs/edge/feature/dn-merge-rocksdb.html
+++ b/docs/edge/feature/dn-merge-rocksdb.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/feature/erasurecoding.html
b/docs/edge/feature/erasurecoding.html
index 03a08c3e..ac194971 100644
--- a/docs/edge/feature/erasurecoding.html
+++ b/docs/edge/feature/erasurecoding.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/feature/faircallqueue.html
b/docs/edge/feature/faircallqueue.html
index 6dd466d6..7d506ea5 100644
--- a/docs/edge/feature/faircallqueue.html
+++ b/docs/edge/feature/faircallqueue.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/feature/nonrolling-upgrade.html
b/docs/edge/feature/nonrolling-upgrade.html
index c24e4b15..72b1237b 100644
--- a/docs/edge/feature/nonrolling-upgrade.html
+++ b/docs/edge/feature/nonrolling-upgrade.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/feature/observability.html
b/docs/edge/feature/observability.html
index 0ddc64e1..bf43f174 100644
--- a/docs/edge/feature/observability.html
+++ b/docs/edge/feature/observability.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/feature/om-ha.html b/docs/edge/feature/om-ha.html
index 14ad0b2d..a873a89d 100644
--- a/docs/edge/feature/om-ha.html
+++ b/docs/edge/feature/om-ha.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/feature/prefixfso.html b/docs/edge/feature/prefixfso.html
index 2769d90c..5e067693 100644
--- a/docs/edge/feature/prefixfso.html
+++ b/docs/edge/feature/prefixfso.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/feature/quota.html b/docs/edge/feature/quota.html
index 3959d428..579d823a 100644
--- a/docs/edge/feature/quota.html
+++ b/docs/edge/feature/quota.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/feature/recon.html b/docs/edge/feature/recon.html
index cae5cfe2..3eb38663 100644
--- a/docs/edge/feature/recon.html
+++ b/docs/edge/feature/recon.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/feature/reconfigurability.html
b/docs/edge/feature/reconfigurability.html
index 1e5174bb..4e2a0245 100644
--- a/docs/edge/feature/reconfigurability.html
+++ b/docs/edge/feature/reconfigurability.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/feature/s3-multi-tenancy-access-control.html
b/docs/edge/feature/s3-multi-tenancy-access-control.html
index 0bb8bbe4..5a0254e5 100644
--- a/docs/edge/feature/s3-multi-tenancy-access-control.html
+++ b/docs/edge/feature/s3-multi-tenancy-access-control.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/feature/s3-multi-tenancy-setup.html
b/docs/edge/feature/s3-multi-tenancy-setup.html
index a294187d..900b266d 100644
--- a/docs/edge/feature/s3-multi-tenancy-setup.html
+++ b/docs/edge/feature/s3-multi-tenancy-setup.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/feature/s3-multi-tenancy.html
b/docs/edge/feature/s3-multi-tenancy.html
index ca2be55f..662eed46 100644
--- a/docs/edge/feature/s3-multi-tenancy.html
+++ b/docs/edge/feature/s3-multi-tenancy.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/feature/s3-tenant-commands.html
b/docs/edge/feature/s3-tenant-commands.html
index 4deeb648..e9c95372 100644
--- a/docs/edge/feature/s3-tenant-commands.html
+++ b/docs/edge/feature/s3-tenant-commands.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/feature/scm-ha.html b/docs/edge/feature/scm-ha.html
index a9fc23d7..39610aac 100644
--- a/docs/edge/feature/scm-ha.html
+++ b/docs/edge/feature/scm-ha.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/feature/snapshot.html b/docs/edge/feature/snapshot.html
index f8c604bb..ed198336 100644
--- a/docs/edge/feature/snapshot.html
+++ b/docs/edge/feature/snapshot.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/feature/streaming-write-pipeline.html
b/docs/edge/feature/streaming-write-pipeline.html
index 05f1c442..716873d8 100644
--- a/docs/edge/feature/streaming-write-pipeline.html
+++ b/docs/edge/feature/streaming-write-pipeline.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/feature/topology.html b/docs/edge/feature/topology.html
index c1dbf1b2..ad743ed2 100644
--- a/docs/edge/feature/topology.html
+++ b/docs/edge/feature/topology.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/index.html b/docs/edge/index.html
index 561254d2..715ed1f6 100644
--- a/docs/edge/index.html
+++ b/docs/edge/index.html
@@ -376,6 +376,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="./interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/index.xml b/docs/edge/index.xml
index 4fd4fece..107f65b7 100644
--- a/docs/edge/index.xml
+++ b/docs/edge/index.xml
@@ -350,6 +350,13 @@
<guid>/recipe/pythonrequestsozonehttpfs.html</guid>
<description>Step-by-step tutorial for accessing Apache Ozone using the
HTTPFS REST API via Python&rsquo;s requests library in a Docker-based
environment.</description>
</item>
+ <item>
+ <title>Native C/C++ Client Access to Ozone</title>
+ <link>/interface/native-cpp.html</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+ <guid>/interface/native-cpp.html</guid>
+ <description><!--
 Licensed to the Apache Software Foundation
(ASF) under one or more
 contributor license agreements. See the NOTICE
file distributed with
 this work for additional information regarding
copyright ownership.
 The ASF licenses this file to You under the Apache
License, Version 2.0
 (the "License"); you may not use this file
except in compliance with
 the License. You may obtain a copy of the
License at

 http:/ [...]
+ </item>
<item>
<title>Ozone On Premise Installation</title>
<link>/start/onprem.html</link>
diff --git a/docs/edge/integration.html b/docs/edge/integration.html
index a9ca4587..2db3a267 100644
--- a/docs/edge/integration.html
+++ b/docs/edge/integration.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="./interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/integration/distcp.html
b/docs/edge/integration/distcp.html
index fde605c6..954ddfcd 100644
--- a/docs/edge/integration/distcp.html
+++ b/docs/edge/integration/distcp.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/integration/hive.html b/docs/edge/integration/hive.html
index 2be38ab3..135deb56 100644
--- a/docs/edge/integration/hive.html
+++ b/docs/edge/integration/hive.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/integration/impala.html
b/docs/edge/integration/impala.html
index b7f76274..2b40071c 100644
--- a/docs/edge/integration/impala.html
+++ b/docs/edge/integration/impala.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/interface.html b/docs/edge/interface.html
index 6ab053a3..536b1168 100644
--- a/docs/edge/interface.html
+++ b/docs/edge/interface.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="./interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
@@ -736,6 +742,53 @@ Ozone is a multi-protocol file system. There are different
protocols by which
+ <div class="col-sm-6">
+ <div class="card">
+ <div class="card-body">
+ <h2 class="card-title">
+
+ Native C/C++ Client Access to Ozone
+ </h2>
+ <p class="card-text"><!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<h2 id="components-summary">Components Summary</h2>
+<ul>
+<li><strong>libhdfs</strong>: The standard Hadoop C API. It is a JNI bridge
between C/C++ and Java FileSystem implementations.</li>
+<li><strong>libo3fs</strong>: Lightweight wrapper exposing a simplified API
for Ozone clients. It is built on top of <code>libhdfs</code>.</li>
+<li><strong>OFS (Ozone FileSystem)</strong>: Java-based filesystem client used
internally by <code>libhdfs</code> to interact with Ozone.</li>
+</ul>
+<h2 id="overview">Overview</h2>
+<p>Native C/C++ applications can access Ozone volumes and buckets using Hadoop
HDFS’s <code>libhdfs</code> JNI library.
+As an example, Apache Impala uses this library to access Ozone.</p></p>
+ <a href="./interface/native-cpp.html"
+ class=" btn btn-primary btn-lg">Native
C/C++ Client Access to Ozone</a>
+ </div>
+ </div>
+ </div>
+
+
+ </div>
+
+
+
+
+
+ <div class="row">
+
<div class="col-sm-6">
<div class="card">
<div class="card-body">
@@ -790,8 +843,6 @@ Ozone is a multi-protocol file system. There are different
protocols by which
</div>
- </div>
-
</div>
diff --git a/docs/edge/interface/cli.html b/docs/edge/interface/cli.html
index 0c47caeb..06f3516a 100644
--- a/docs/edge/interface/cli.html
+++ b/docs/edge/interface/cli.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/interface/csi.html b/docs/edge/interface/csi.html
index bb5538ed..99f9ceb9 100644
--- a/docs/edge/interface/csi.html
+++ b/docs/edge/interface/csi.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/interface/httpfs.html b/docs/edge/interface/httpfs.html
index 44526689..7727baf9 100644
--- a/docs/edge/interface/httpfs.html
+++ b/docs/edge/interface/httpfs.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
@@ -699,7 +705,7 @@ HttpFS HTTP web-service API calls are HTTP REST calls that
map to an Ozone file
- <a class="btn btn-success btn-lg"
href="../interface/swaggerreconapi.html">Next >></a>
+ <a class="btn btn-success btn-lg"
href="../interface/native-cpp.html">Next >></a>
</div>
diff --git a/docs/edge/interface/index.xml b/docs/edge/interface/index.xml
index 24247aa4..7789b3a7 100644
--- a/docs/edge/interface/index.xml
+++ b/docs/edge/interface/index.xml
@@ -70,6 +70,13 @@
<guid>/interface/httpfs.html</guid>
<description>Ozone HttpFS is a WebHDFS compatible interface
implementation, as a separate role it provides an easy integration with
Ozone.</description>
</item>
+ <item>
+ <title>Native C/C++ Client Access to Ozone</title>
+ <link>/interface/native-cpp.html</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+ <guid>/interface/native-cpp.html</guid>
+ <description><!--
 Licensed to the Apache Software Foundation
(ASF) under one or more
 contributor license agreements. See the NOTICE
file distributed with
 this work for additional information regarding
copyright ownership.
 The ASF licenses this file to You under the Apache
License, Version 2.0
 (the "License"); you may not use this file
except in compliance with
 the License. You may obtain a copy of the
License at

 http:/ [...]
+ </item>
<item>
<title>Interactive Recon API Specification</title>
<link>/interface/swaggerreconapi.html</link>
diff --git a/docs/edge/interface/javaapi.html b/docs/edge/interface/javaapi.html
index 293d9585..cfed76b6 100644
--- a/docs/edge/interface/javaapi.html
+++ b/docs/edge/interface/javaapi.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/recipe/sparkozonefsk8s.html
b/docs/edge/interface/native-cpp.html
similarity index 70%
copy from docs/edge/recipe/sparkozonefsk8s.html
copy to docs/edge/interface/native-cpp.html
index 49867fbc..fe882ba9 100644
--- a/docs/edge/recipe/sparkozonefsk8s.html
+++ b/docs/edge/interface/native-cpp.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="active">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
@@ -482,8 +488,8 @@ s=d.getElementsByTagName('script')[0];
<nav aria-label="breadcrumb">
<ol class="breadcrumb">
<li class="breadcrumb-item"><a
href="../index.html">Home</a></li>
- <li class="breadcrumb-item" aria-current="page"><a
href="../recipe.html">Recipes</a></li>
- <li class="breadcrumb-item active" aria-current="page">Spark
in Kubernetes with OzoneFS</li>
+ <li class="breadcrumb-item" aria-current="page"><a
href="../interface.html">Client Interfaces</a></li>
+ <li class="breadcrumb-item active"
aria-current="page">Native C/C++ Client Access to Ozone</li>
</ol>
</nav>
@@ -493,18 +499,13 @@ s=d.getElementsByTagName('script')[0];
-
-
- <a href="../zh/recipe/sparkozonefsk8s.html"><span class="label
label-success">中文</span></a>
-
-
</div>
<div class="col-md-9">
- <h1>Spark in Kubernetes with OzoneFS</h1>
+ <h1>Native C/C++ Client Access to Ozone</h1>
- <!---
+ <!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
@@ -520,101 +521,94 @@ s=d.getElementsByTagName('script')[0];
See the License for the specific language governing permissions and
limitations under the License.
-->
-<p>This recipe shows how Ozone object store can be used from Spark using:</p>
+<h2 id="components-summary">Components Summary</h2>
+<ul>
+<li><strong>libhdfs</strong>: The standard Hadoop C API. It is a JNI bridge
between C/C++ and Java FileSystem implementations.</li>
+<li><strong>libo3fs</strong>: Lightweight wrapper exposing a simplified API
for Ozone clients. It is built on top of <code>libhdfs</code>.</li>
+<li><strong>OFS (Ozone FileSystem)</strong>: Java-based filesystem client used
internally by <code>libhdfs</code> to interact with Ozone.</li>
+</ul>
+<h2 id="overview">Overview</h2>
+<p>Native C/C++ applications can access Ozone volumes and buckets using Hadoop
HDFS’s <code>libhdfs</code> JNI library.
+As an example, Apache Impala uses this library to access Ozone.</p>
+<p>To demonstrate, we built a simple wrapper <a
href="https://github.com/apache/hadoop-ozone/tree/master/hadoop-ozone/native-client/libo3fs"><code>libo3fs</code></a>
around <code>libhdfs</code>.
+Applications can choose to use either <code>libo3fs</code> or directly use the
low level <code>libhdfs</code> library for basic file operations.</p>
+<h2 id="architecture-and-design-notes">Architecture and Design Notes</h2>
+<p>The native client leverages the Hadoop <code>libhdfs</code> C API for
low-level JNI bindings, and implements additional wrappers in
<code>libo3fs</code> to support Ozone semantics. Internally:</p>
<ul>
-<li>OzoneFS (Hadoop compatible file system)</li>
-<li>Hadoop 2.7 (included in the Spark distribution)</li>
-<li>Kubernetes Spark scheduler</li>
-<li>Local spark client</li>
+<li><code>libo3fs</code> wraps Ozone FileSystem APIs for basic file operations
(read/write).</li>
+<li><code>libhdfs</code> implements JNI interface.</li>
+<li>JNI calls link back to a JVM-based Ozone client to execute operations.</li>
</ul>
-<h2 id="requirements">Requirements</h2>
-<p>Download latest Spark and Ozone distribution and extract them. This method
is
-tested with the <code>spark-2.4.6-bin-hadoop2.7</code> distribution.</p>
-<p>You also need the following:</p>
+<h2 id="building-the-cc-client-library">Building the C/C++ Client Library</h2>
+<h3 id="prerequisites">Prerequisites</h3>
<ul>
-<li>A container repository to push and pull the spark+ozone images. (In this
recipe we will use the dockerhub)</li>
-<li>A repo/name for the custom containers (in this recipe
<em>myrepo/ozone-spark</em>)</li>
-<li>A dedicated namespace in kubernetes (we use <em>yournamespace</em> in this
recipe)</li>
+<li>Apache Ozone built from source (<code>ozone-dist/</code>)</li>
+<li>Hadoop with compiled <code>libhdfs.so</code></li>
+<li>Java 8 or later</li>
+<li>Linux (kernel > 2.6.9)</li>
</ul>
-<h2 id="create-the-docker-image-for-drivers">Create the docker image for
drivers</h2>
-<h3 id="create-the-base-spark-driverexecutor-image">Create the base Spark
driver/executor image</h3>
-<p>First of all create a docker image with the Spark image creator.
-Execute the following from the Spark distribution</p>
-<div class="highlight"><pre tabindex="0"
style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code
class="language-bash" data-lang="bash"><span
style="display:flex;"><span>./bin/docker-image-tool.sh -r myrepo -t 2.4.6 build
-</span></span></code></pre></div><p><em>Note</em>: if you use Minikube add the
<code>-m</code> flag to use the docker daemon of the Minikube image:</p>
-<div class="highlight"><pre tabindex="0"
style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code
class="language-bash" data-lang="bash"><span
style="display:flex;"><span>./bin/docker-image-tool.sh -m -r myrepo -t 2.4.6
build
-</span></span></code></pre></div><p><code>./bin/docker-image-tool.sh</code> is
an official Spark tool to create container images and this step will create
multiple Spark container images with the name <em>myrepo/spark</em>. The first
container will be used as a base container in the following steps.</p>
-<h3 id="customize-the-docker-image">Customize the docker image</h3>
-<p>Create a new directory for customizing the created docker image.</p>
-<p>Copy the <code>ozone-site.xml</code> from the cluster:</p>
-<div class="highlight"><pre tabindex="0"
style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code
class="language-bash" data-lang="bash"><span
style="display:flex;"><span>kubectl cp
om-0:/opt/hadoop/etc/hadoop/ozone-site.xml .
-</span></span></code></pre></div><p>And create a custom
<code>core-site.xml</code>.</p>
-<div class="highlight"><pre tabindex="0"
style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code
class="language-xml" data-lang="xml"><span style="display:flex;"><span><span
style="color:#f92672"><configuration></span>
-</span></span><span style="display:flex;"><span> <span
style="color:#f92672"><property></span>
-</span></span><span style="display:flex;"><span> <span
style="color:#f92672"><name></span>fs.AbstractFileSystem.o3fs.impl<span
style="color:#f92672"></name></span>
-</span></span><span style="display:flex;"><span> <span
style="color:#f92672"><value></span>org.apache.hadoop.fs.ozone.OzFs<span
style="color:#f92672"></value></span>
-</span></span><span style="display:flex;"><span> <span
style="color:#f92672"></property></span>
-</span></span><span style="display:flex;"><span><span
style="color:#f92672"></configuration></span>
-</span></span></code></pre></div><p>Copy the <code>ozonefs.jar</code> file
from an ozone distribution (<strong>use the hadoop2 version!</strong>)</p>
-<pre tabindex="0"><code>kubectl cp
om-0:/opt/hadoop/share/ozone/lib/ozone-filesystem-hadoop2-VERSION.jar
ozone-filesystem-hadoop2.jar
-</code></pre><p>Create a new Dockerfile and build the image:</p>
-<pre tabindex="0"><code>FROM myrepo/spark:2.4.6
-ADD core-site.xml /opt/hadoop/conf/core-site.xml
-ADD ozone-site.xml /opt/hadoop/conf/ozone-site.xml
-ENV HADOOP_CONF_DIR=/opt/hadoop/conf
-ENV SPARK_EXTRA_CLASSPATH=/opt/hadoop/conf
-ADD ozone-filesystem-hadoop2.jar /opt/ozone-filesystem-hadoop2.jar
-</code></pre><div class="highlight"><pre tabindex="0"
style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code
class="language-bash" data-lang="bash"><span
style="display:flex;"><span>docker build -t myrepo/spark-ozone
-</span></span></code></pre></div><p>For remote Kubernetes cluster you may need
to push it:</p>
-<div class="highlight"><pre tabindex="0"
style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code
class="language-bash" data-lang="bash"><span
style="display:flex;"><span>docker push myrepo/spark-ozone
-</span></span></code></pre></div><h2 id="create-a-bucket">Create a bucket</h2>
-<p>Download any text file and put it to the <code>/tmp/alice.txt</code>
first.</p>
-<div class="highlight"><pre tabindex="0"
style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code
class="language-bash" data-lang="bash"><span
style="display:flex;"><span>kubectl port-forward s3g-0 9878:9878
-</span></span><span style="display:flex;"><span>aws s3api --endpoint
http://localhost:9878 create-bucket --bucket<span
style="color:#f92672">=</span>test
-</span></span><span style="display:flex;"><span>aws s3api --endpoint
http://localhost:9878 put-object --bucket test --key alice.txt --body
/tmp/alice.txt
-</span></span></code></pre></div><h2 id="create-service-account-to-use">Create
service account to use</h2>
-<div class="highlight"><pre tabindex="0"
style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code
class="language-bash" data-lang="bash"><span
style="display:flex;"><span>kubectl create serviceaccount spark -n yournamespace
-</span></span><span style="display:flex;"><span>kubectl create
clusterrolebinding spark-role --clusterrole<span
style="color:#f92672">=</span>edit --serviceaccount<span
style="color:#f92672">=</span>yournamespace:spark --namespace<span
style="color:#f92672">=</span>yournamespace
-</span></span></code></pre></div><h2 id="execute-the-job">Execute the job</h2>
-<p>Execute the following spark-submit command, but change at least the
following values:</p>
+<p>The following steps assume you have Ozone built from source code, the
Hadoop binary distribution downloaded and extracted,
+and the environment variables <code>OZONE_HOME</code> and
<code>HADOOP_HOME</code> set to their respective directories.</p>
+<h3 id="0-download-hadoop-binary-distribution-optional">0. Download Hadoop
binary distribution (optional)</h3>
+<div class="highlight"><pre tabindex="0"
style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code
class="language-bash" data-lang="bash"><span style="display:flex;"><span>wget
https://archive.apache.org/dist/hadoop/common/hadoop-3.4.0/hadoop-3.4.0.tar.gz
+</span></span><span style="display:flex;"><span>tar -xzf hadoop-3.4.0.tar.gz
+</span></span></code></pre></div><h3
id="1-compile-the-core-library--shared-library">1. Compile the Core Library
& Shared Library</h3>
+<div class="highlight"><pre tabindex="0"
style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code
class="language-bash" data-lang="bash"><span
style="display:flex;"><span>export JAVA_HOME<span
style="color:#f92672">=</span>/path/to/java
+</span></span><span style="display:flex;"><span>export HADOOP_HOME<span
style="color:#f92672">=</span>/path/to/hadoop
+</span></span><span style="display:flex;"><span>export OZONE_HOME<span
style="color:#f92672">=</span>/path/to/ozone
+</span></span><span style="display:flex;"><span>
+</span></span><span style="display:flex;"><span>cd
$OZONE_HOME/hadoop-ozone/native-client/libo3fs
+</span></span><span style="display:flex;"><span>gcc -fPIC -pthread <span
style="color:#ae81ff">\
+</span></span></span><span style="display:flex;"><span><span
style="color:#ae81ff"></span> -I$HADOOP_HOME/include <span
style="color:#ae81ff">\
+</span></span></span><span style="display:flex;"><span><span
style="color:#ae81ff"></span> -g -c o3fs.c
+</span></span><span style="display:flex;"><span>
+</span></span><span style="display:flex;"><span>gcc -shared -o libo3fs.so
o3fs.o <span style="color:#ae81ff">\
+</span></span></span><span style="display:flex;"><span><span
style="color:#ae81ff"></span> $HADOOP_HOME/lib/native/libhdfs.so
+</span></span></code></pre></div><h3 id="2-compile-sample-applications">2.
Compile Sample Applications</h3>
+<div class="highlight"><pre tabindex="0"
style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code
class="language-bash" data-lang="bash"><span style="display:flex;"><span>cd
$OZONE_HOME/hadoop-ozone/native-client/libo3fs-examples
+</span></span><span style="display:flex;"><span>gcc -fPIC -pthread
-I$OZONE_HOME/hadoop-ozone/native-client/libo3fs <span style="color:#ae81ff">\
+</span></span></span><span style="display:flex;"><span><span
style="color:#ae81ff"></span> -I$HADOOP_HOME/include -g -c libo3fs_read.c
+</span></span><span style="display:flex;"><span>gcc -fPIC -pthread
-I$OZONE_HOME/hadoop-ozone/native-client/libo3fs <span style="color:#ae81ff">\
+</span></span></span><span style="display:flex;"><span><span
style="color:#ae81ff"></span> -I$HADOOP_HOME/include -g -c libo3fs_write.c
+</span></span></code></pre></div><h3 id="3-link-executables">3. Link
Executables</h3>
+<div class="highlight"><pre tabindex="0"
style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code
class="language-bash" data-lang="bash"><span style="display:flex;"><span><span
style="color:#75715e"># o3fs_read</span>
+</span></span><span style="display:flex;"><span>gcc -o o3fs_read
libo3fs_read.o -L$HADOOP_HOME/lib/native -lhdfs <span style="color:#ae81ff">\
+</span></span></span><span style="display:flex;"><span><span
style="color:#ae81ff"></span> -L$JAVA_HOME/lib/server -ljvm <span
style="color:#ae81ff">\
+</span></span></span><span style="display:flex;"><span><span
style="color:#ae81ff"></span> -L$OZONE_HOME/hadoop-ozone/native-client/libo3fs
-lo3fs -pthread
+</span></span><span style="display:flex;"><span>
+</span></span><span style="display:flex;"><span><span style="color:#75715e">#
o3fs_write</span>
+</span></span><span style="display:flex;"><span>gcc -o o3fs_write
libo3fs_write.o -L$HADOOP_HOME/lib/native -lhdfs <span style="color:#ae81ff">\
+</span></span></span><span style="display:flex;"><span><span
style="color:#ae81ff"></span> -L$JAVA_HOME/lib/server -ljvm <span
style="color:#ae81ff">\
+</span></span></span><span style="display:flex;"><span><span
style="color:#ae81ff"></span> -L$OZONE_HOME/hadoop-ozone/native-client/libo3fs
-lo3fs -pthread
+</span></span></code></pre></div><h3 id="4-environment-variables">4.
Environment Variables</h3>
+<div class="highlight"><pre tabindex="0"
style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code
class="language-bash" data-lang="bash"><span
style="display:flex;"><span>export CLASSPATH<span
style="color:#f92672">=</span><span
style="color:#66d9ef">$(</span>$OZONE_HOME/bin/ozone classpath ozone-tools<span
style="color:#66d9ef">)</span>
+</span></span><span style="display:flex;"><span>export LD_LIBRARY_PATH<span
style="color:#f92672">=</span><span style="color:#ae81ff">\
+</span></span></span><span style="display:flex;"><span><span
style="color:#ae81ff"></span>$HADOOP_HOME/lib/native:<span
style="color:#ae81ff">\
+</span></span></span><span style="display:flex;"><span><span
style="color:#ae81ff"></span>$JAVA_HOME/lib/server:<span style="color:#ae81ff">\
+</span></span></span><span style="display:flex;"><span><span
style="color:#ae81ff"></span>$OZONE_HOME/hadoop-ozone/native-client/libo3fs
+</span></span></code></pre></div><h3 id="5-run-sample-applications">5. Run
Sample Applications</h3>
+<div class="highlight"><pre tabindex="0"
style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code
class="language-shell" data-lang="shell"><span
style="display:flex;"><span>ozone sh volume create my-volume
+</span></span><span style="display:flex;"><span>ozone sh bucket create
/my-volume/my-bucket
+</span></span></code></pre></div><div class="highlight"><pre tabindex="0"
style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code
class="language-shell" data-lang="shell"><span style="display:flex;"><span>//
o3fs_write writes a 100-byte file named <span
style="color:#e6db74">'file1'</span> using a 100-byte buffer to the
<span style="color:#e6db74">'my-bucket'</span> bucket in the <span
style="color:#e6db74">'my-volume'</span> [...]
+</span></span><span style="display:flex;"><span>// connecting to an Ozone
Manager <span style="color:#f92672">(</span>om<span
style="color:#f92672">)</span> on port 9862.
+</span></span><span style="display:flex;"><span>./o3fs_write file1 <span
style="color:#ae81ff">100</span> <span style="color:#ae81ff">100</span> om
<span style="color:#ae81ff">9862</span> my-bucket my-volume
+</span></span></code></pre></div><h2 id="limitations">Limitations</h2>
<ul>
-<li>the Kubernetes master url (you can check your <em>~/.kube/config</em> to
find the actual value)</li>
-<li>the Kubernetes namespace (<em>yournamespace</em> in this example)</li>
-<li>serviceAccountName (you can use the <em>spark</em> value if you followed
the previous steps)</li>
-<li>container.image (in this example this is <em>myrepo/spark-ozone</em>. This
is pushed to the registry in the previous steps)</li>
+<li>Only basic file I/O operations are supported (no directory listing, ACLs,
etc.); use <code>libhdfs</code> directly for advanced features.</li>
+<li>JNI dependency requires compatible JVM and shared libraries</li>
+<li>Testing has been limited to Linux; No Windows nor Mac supported</li>
</ul>
-<div class="highlight"><pre tabindex="0"
style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code
class="language-bash" data-lang="bash"><span
style="display:flex;"><span>bin/spark-submit <span style="color:#ae81ff">\
-</span></span></span><span style="display:flex;"><span><span
style="color:#ae81ff"></span> --master k8s://https://kubernetes:6443 <span
style="color:#ae81ff">\
-</span></span></span><span style="display:flex;"><span><span
style="color:#ae81ff"></span> --deploy-mode cluster <span
style="color:#ae81ff">\
-</span></span></span><span style="display:flex;"><span><span
style="color:#ae81ff"></span> --name spark-word-count <span
style="color:#ae81ff">\
-</span></span></span><span style="display:flex;"><span><span
style="color:#ae81ff"></span> --class
org.apache.spark.examples.JavaWordCount <span style="color:#ae81ff">\
-</span></span></span><span style="display:flex;"><span><span
style="color:#ae81ff"></span> --conf spark.executor.instances<span
style="color:#f92672">=</span><span style="color:#ae81ff">1</span> <span
style="color:#ae81ff">\
-</span></span></span><span style="display:flex;"><span><span
style="color:#ae81ff"></span> --conf spark.kubernetes.namespace<span
style="color:#f92672">=</span>yournamespace <span style="color:#ae81ff">\
-</span></span></span><span style="display:flex;"><span><span
style="color:#ae81ff"></span> --conf
spark.kubernetes.authenticate.driver.serviceAccountName<span
style="color:#f92672">=</span>spark <span style="color:#ae81ff">\
-</span></span></span><span style="display:flex;"><span><span
style="color:#ae81ff"></span> --conf spark.kubernetes.container.image<span
style="color:#f92672">=</span>myrepo/spark-ozone <span style="color:#ae81ff">\
-</span></span></span><span style="display:flex;"><span><span
style="color:#ae81ff"></span> --conf
spark.kubernetes.container.image.pullPolicy<span
style="color:#f92672">=</span>Always <span style="color:#ae81ff">\
-</span></span></span><span style="display:flex;"><span><span
style="color:#ae81ff"></span> --jars /opt/ozone-filesystem-hadoop2.jar <span
style="color:#ae81ff">\
-</span></span></span><span style="display:flex;"><span><span
style="color:#ae81ff"></span>
local:///opt/spark/examples/jars/spark-examples_2.11-2.4.0.jar <span
style="color:#ae81ff">\
-</span></span></span><span style="display:flex;"><span><span
style="color:#ae81ff"></span>
o3fs://test.s3v.ozone-om-0.ozone-om:9862/alice.txt
-</span></span></code></pre></div><p>Check the available
<code>spark-word-count-...</code> pods with <code>kubectl get pod</code></p>
-<p>Check the output of the calculation with <br>
-<code>kubectl logs spark-word-count-1549973913699-driver</code></p>
-<p>You should see the output of the wordcount job. For example:</p>
-<pre tabindex="0"><code>...
-name: 8
-William: 3
-this,': 1
-SOUP!': 1
-`Silence: 1
-`Mine: 1
-ordered.: 1
-considering: 3
-muttering: 3
-candle: 2
-...
-</code></pre>
+<h2 id="references">References</h2>
+<ul>
+<li><a href="https://ozone.apache.org/docs/edge/interface/ofs.html">Ozone
FileSystem Java Interface</a></li>
+<li><a
href="https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/LibHdfs.html">Hadoop
libhdfs Docs</a></li>
+<li><a
href="https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/NativeLibraries.html">JNI
and Native Libraries in Hadoop</a></li>
+</ul>
+
+ <a class="btn btn-success btn-lg"
href="../interface/swaggerreconapi.html">Next >></a>
+
</div>
</div>
@@ -629,7 +623,7 @@ candle: 2
<footer class="footer">
<div class="container">
<span class="small text-muted">
- Version: 2.1.0-SNAPSHOT, Last Modified: May 31, 2021 <a
class="hide-child link primary-color"
href="https://github.com/apache/ozone/commit/fa4ddbccf361e4df1f0421fd8193f5e22cd7c9c6">fa4ddbccf3</a>
+ Version: 2.1.0-SNAPSHOT, Last Modified: June 16, 2025 <a
class="hide-child link primary-color"
href="https://github.com/apache/ozone/commit/48aefeaad09653e286ec4abbc6872e95d9fa1510">48aefeaad0</a>
</span>
</div>
</footer>
diff --git a/docs/edge/interface/o3fs.html b/docs/edge/interface/o3fs.html
index b50ef5d6..162df960 100644
--- a/docs/edge/interface/o3fs.html
+++ b/docs/edge/interface/o3fs.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/interface/ofs.html b/docs/edge/interface/ofs.html
index dfaf14e4..5fbd6f96 100644
--- a/docs/edge/interface/ofs.html
+++ b/docs/edge/interface/ofs.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
@@ -568,7 +574,7 @@ For example:</p>
<p>Or use the put command to write a file to the bucket.</p>
<div class="highlight"><pre tabindex="0"
style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code
class="language-bash" data-lang="bash"><span style="display:flex;"><span>hdfs
dfs -put /etc/hosts /volume1/bucket1/test</span></span></code></pre></div>
<p>For more usage, see: <a
href="https://issues.apache.org/jira/secure/attachment/12987636/Design%20ofs%20v1.pdf">https://issues.apache.org/jira/secure/attachment/12987636/Design%20ofs%20v1.pdf</a></p>
-<h2 id="differences-from-o3fshahahugoshortcode98s5hbhb">Differences from <a
href="../interface/o3fs.html">o3fs</a></h2>
+<h2 id="differences-from-o3fshahahugoshortcode99s5hbhb">Differences from <a
href="../interface/o3fs.html">o3fs</a></h2>
<h3 id="creating-files">Creating files</h3>
<p>OFS doesn’t allow creating keys(files) directly under root or volumes.
Users will receive an error message when they try to do that:</p>
diff --git a/docs/edge/interface/python.html b/docs/edge/interface/python.html
index 93d8ad3a..929d225d 100644
--- a/docs/edge/interface/python.html
+++ b/docs/edge/interface/python.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/interface/reconapi.html
b/docs/edge/interface/reconapi.html
index 6daac723..66d1e87c 100644
--- a/docs/edge/interface/reconapi.html
+++ b/docs/edge/interface/reconapi.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/interface/s3.html b/docs/edge/interface/s3.html
index 36268666..63bf4ec7 100644
--- a/docs/edge/interface/s3.html
+++ b/docs/edge/interface/s3.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/recipe.html b/docs/edge/recipe.html
index e76b13e7..cd700194 100644
--- a/docs/edge/recipe.html
+++ b/docs/edge/recipe.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="./interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/recipe/boto3tutorial.html
b/docs/edge/recipe/boto3tutorial.html
index 008188cf..7c3f3c85 100644
--- a/docs/edge/recipe/boto3tutorial.html
+++ b/docs/edge/recipe/boto3tutorial.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/recipe/botoclient.html b/docs/edge/recipe/botoclient.html
index 6dcf70b7..f3166ca1 100644
--- a/docs/edge/recipe/botoclient.html
+++ b/docs/edge/recipe/botoclient.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/recipe/prometheus.html b/docs/edge/recipe/prometheus.html
index dde7ca3c..14cf7f05 100644
--- a/docs/edge/recipe/prometheus.html
+++ b/docs/edge/recipe/prometheus.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/recipe/pyarrowtutorial.html
b/docs/edge/recipe/pyarrowtutorial.html
index 4308294a..b9ecc8fe 100644
--- a/docs/edge/recipe/pyarrowtutorial.html
+++ b/docs/edge/recipe/pyarrowtutorial.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/recipe/pythonrequestsozonehttpfs.html
b/docs/edge/recipe/pythonrequestsozonehttpfs.html
index b72eb1a7..f854b5e6 100644
--- a/docs/edge/recipe/pythonrequestsozonehttpfs.html
+++ b/docs/edge/recipe/pythonrequestsozonehttpfs.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/recipe/sparkozonefsk8s.html
b/docs/edge/recipe/sparkozonefsk8s.html
index 49867fbc..a966341a 100644
--- a/docs/edge/recipe/sparkozonefsk8s.html
+++ b/docs/edge/recipe/sparkozonefsk8s.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/security.html b/docs/edge/security.html
index 299d94c3..885c6bbb 100644
--- a/docs/edge/security.html
+++ b/docs/edge/security.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="./interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/security/gdpr.html b/docs/edge/security/gdpr.html
index 6dada55d..d7471d62 100644
--- a/docs/edge/security/gdpr.html
+++ b/docs/edge/security/gdpr.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/security/secureozone.html
b/docs/edge/security/secureozone.html
index 77f60e94..48b14e18 100644
--- a/docs/edge/security/secureozone.html
+++ b/docs/edge/security/secureozone.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/security/securingdatanodes.html
b/docs/edge/security/securingdatanodes.html
index f1c0bdd4..c4b831be 100644
--- a/docs/edge/security/securingdatanodes.html
+++ b/docs/edge/security/securingdatanodes.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/security/securingozonehttp.html
b/docs/edge/security/securingozonehttp.html
index f8da47cb..f5c516f5 100644
--- a/docs/edge/security/securingozonehttp.html
+++ b/docs/edge/security/securingozonehttp.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/security/securings3.html
b/docs/edge/security/securings3.html
index 43c8d587..10c43a04 100644
--- a/docs/edge/security/securings3.html
+++ b/docs/edge/security/securings3.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/security/securingtde.html
b/docs/edge/security/securingtde.html
index 3581cff9..964029cc 100644
--- a/docs/edge/security/securingtde.html
+++ b/docs/edge/security/securingtde.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/security/securityacls.html
b/docs/edge/security/securityacls.html
index 9b00de90..ac0bf556 100644
--- a/docs/edge/security/securityacls.html
+++ b/docs/edge/security/securityacls.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/security/securitywithranger.html
b/docs/edge/security/securitywithranger.html
index 21e4f202..b3ed24de 100644
--- a/docs/edge/security/securitywithranger.html
+++ b/docs/edge/security/securitywithranger.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/sitemap.xml b/docs/edge/sitemap.xml
index 6db204fd..0f03ed8e 100644
--- a/docs/edge/sitemap.xml
+++ b/docs/edge/sitemap.xml
@@ -4,7 +4,7 @@
<sitemap>
<loc>/en/sitemap.xml</loc>
- <lastmod>2025-06-14T12:58:36-07:00</lastmod>
+ <lastmod>2025-06-16T11:06:17-07:00</lastmod>
</sitemap>
diff --git a/docs/edge/start.html b/docs/edge/start.html
index 0a8cb8a5..9a0c3f7b 100644
--- a/docs/edge/start.html
+++ b/docs/edge/start.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="./interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/start/fromsource.html b/docs/edge/start/fromsource.html
index 05cde2fa..67829c6a 100644
--- a/docs/edge/start/fromsource.html
+++ b/docs/edge/start/fromsource.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/start/kubernetes.html b/docs/edge/start/kubernetes.html
index 5a9c097a..6827f075 100644
--- a/docs/edge/start/kubernetes.html
+++ b/docs/edge/start/kubernetes.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/start/minikube.html b/docs/edge/start/minikube.html
index fdfe4470..6faf1fb2 100644
--- a/docs/edge/start/minikube.html
+++ b/docs/edge/start/minikube.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/start/onprem.html b/docs/edge/start/onprem.html
index d033f417..72e4276c 100644
--- a/docs/edge/start/onprem.html
+++ b/docs/edge/start/onprem.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/start/runningviadocker.html
b/docs/edge/start/runningviadocker.html
index 3a364739..f35829d8 100644
--- a/docs/edge/start/runningviadocker.html
+++ b/docs/edge/start/runningviadocker.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/start/startfromdockerhub.html
b/docs/edge/start/startfromdockerhub.html
index 04c5c4d6..14075500 100644
--- a/docs/edge/start/startfromdockerhub.html
+++ b/docs/edge/start/startfromdockerhub.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/tools.html b/docs/edge/tools.html
index 0f76f791..73a81cf0 100644
--- a/docs/edge/tools.html
+++ b/docs/edge/tools.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="./interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/tools/admin.html b/docs/edge/tools/admin.html
index bb4edfd3..e52e745f 100644
--- a/docs/edge/tools/admin.html
+++ b/docs/edge/tools/admin.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/tools/auditparser.html b/docs/edge/tools/auditparser.html
index 0a8ffffa..345dc564 100644
--- a/docs/edge/tools/auditparser.html
+++ b/docs/edge/tools/auditparser.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/tools/containerlogparser.html
b/docs/edge/tools/containerlogparser.html
index 6c934ea3..8ba8b031 100644
--- a/docs/edge/tools/containerlogparser.html
+++ b/docs/edge/tools/containerlogparser.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/tools/debug.html b/docs/edge/tools/debug.html
index 5a4a209e..b7bcbd08 100644
--- a/docs/edge/tools/debug.html
+++ b/docs/edge/tools/debug.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/tools/genconf.html b/docs/edge/tools/genconf.html
index b60aefdf..0e76503a 100644
--- a/docs/edge/tools/genconf.html
+++ b/docs/edge/tools/genconf.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/tools/logsinozone.html b/docs/edge/tools/logsinozone.html
index 7b3c53bf..0488242a 100644
--- a/docs/edge/tools/logsinozone.html
+++ b/docs/edge/tools/logsinozone.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/tools/testtools.html b/docs/edge/tools/testtools.html
index 4c372aee..c5fbd27a 100644
--- a/docs/edge/tools/testtools.html
+++ b/docs/edge/tools/testtools.html
@@ -375,6 +375,12 @@ s=d.getElementsByTagName('script')[0];
</li>
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
</ul>
</li>
diff --git a/docs/edge/zh/interface/ofs.html b/docs/edge/zh/interface/ofs.html
index 5afa2b6a..7bc561f1 100644
--- a/docs/edge/zh/interface/ofs.html
+++ b/docs/edge/zh/interface/ofs.html
@@ -478,7 +478,7 @@ ofs://omservice/tmp/key1
<p>或者使用 put 命令向桶中写入一个文件</p>
<div class="highlight"><pre tabindex="0"
style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code
class="language-bash" data-lang="bash"><span style="display:flex;"><span>hdfs
dfs -put /etc/hosts /volume1/bucket1/test</span></span></code></pre></div>
<p>有关更多用法,请参见: <a
href="https://issues.apache.org/jira/secure/attachment/12987636/Design%20ofs%20v1.pdf">https://issues.apache.org/jira/secure/attachment/12987636/Design%20ofs%20v1.pdf</a></p>
-<h2 id="与-o3fshahahugoshortcode97s5hbhb-的区别">与 <a
href="../../zh/interface/o3fs.html">o3fs</a> 的区别</h2>
+<h2 id="与-o3fshahahugoshortcode98s5hbhb-的区别">与 <a
href="../../zh/interface/o3fs.html">o3fs</a> 的区别</h2>
<h3 id="创建文件">创建文件</h3>
<p>OFS 不允许直接在根目录或卷下创建键(文件)。
当用户尝试这样做时,他们将收到一个错误消息:</p>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]