You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by pe...@apache.org on 2021/11/22 07:46:43 UTC

[pulsar] branch asf-site updated: Updated site at revision a0c96a0

This is an automated email from the ASF dual-hosted git repository.

penghui pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/pulsar.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new 3f49991  Updated site at revision a0c96a0
3f49991 is described below

commit 3f499916b4c821807e89d8ccbbfd9f7c33c89e8d
Author: Pulsar Site Updater <de...@pulsar.incubator.apache.org>
AuthorDate: Mon Nov 22 07:44:40 2021 +0000

    Updated site at revision a0c96a0
---
 .../pulsar-broker/2.10.0-SNAPSHOT/index-all.html   |   8 +-
 .../pulsar/broker/service/AbstractTopic.html       |  15 +-
 .../pulsar/broker/service/BacklogQuotaManager.html |  45 +-
 .../service/nonpersistent/NonPersistentTopic.html  |   2 +-
 .../broker/service/persistent/PersistentTopic.html |   2 +-
 .../broker/service/persistent/SystemTopic.html     |   2 +-
 content/api/python/2.10.0-SNAPSHOT/index.html      |   6 +-
 content/api/python/index.html                      |   6 +-
 content/docs/en/next/reference-metrics.html        |  22 +
 content/docs/en/next/reference-metrics/index.html  |  22 +
 .../zh-CN/2.7.0/tiered-storage-filesystem.html     | 114 ++--
 .../2.7.0/tiered-storage-filesystem/index.html     | 114 ++--
 .../zh-CN/2.7.1/tiered-storage-filesystem.html     | 114 ++--
 .../2.7.1/tiered-storage-filesystem/index.html     | 114 ++--
 .../zh-CN/2.7.2/tiered-storage-filesystem.html     | 114 ++--
 .../2.7.2/tiered-storage-filesystem/index.html     | 114 ++--
 .../zh-CN/2.7.3/tiered-storage-filesystem.html     | 114 ++--
 .../2.7.3/tiered-storage-filesystem/index.html     | 114 ++--
 .../zh-CN/2.8.0/tiered-storage-filesystem.html     | 114 ++--
 .../2.8.0/tiered-storage-filesystem/index.html     | 114 ++--
 .../docs/zh-CN/next/tiered-storage-filesystem.html | 114 ++--
 .../next/tiered-storage-filesystem/index.html      | 114 ++--
 content/docs/zh-CN/tiered-storage-filesystem.html  | 114 ++--
 .../zh-CN/tiered-storage-filesystem/index.html     | 114 ++--
 content/swagger/2.10.0-SNAPSHOT/swagger.json       | 670 ++++++++++----------
 .../swagger/2.10.0-SNAPSHOT/swaggerfunctions.json  | 132 ++--
 .../swagger/2.10.0-SNAPSHOT/swaggerpackages.json   | 108 ++--
 content/swagger/2.10.0-SNAPSHOT/swaggersink.json   | 108 ++--
 content/swagger/2.10.0-SNAPSHOT/swaggersource.json | 108 ++--
 content/swagger/2.10.0-SNAPSHOT/v2/swagger.json    | 684 ++++++++++-----------
 .../2.10.0-SNAPSHOT/v3/swaggerfunctions.json       | 140 ++---
 .../2.10.0-SNAPSHOT/v3/swaggerpackages.json        | 116 ++--
 .../swagger/2.10.0-SNAPSHOT/v3/swaggersink.json    | 116 ++--
 .../swagger/2.10.0-SNAPSHOT/v3/swaggersource.json  | 116 ++--
 content/swagger/master/swagger.json                | 670 ++++++++++----------
 content/swagger/master/swaggerfunctions.json       | 132 ++--
 content/swagger/master/swaggerpackages.json        | 108 ++--
 content/swagger/master/swaggersink.json            | 108 ++--
 content/swagger/master/swaggersource.json          | 108 ++--
 content/swagger/master/v2/swagger.json             | 684 ++++++++++-----------
 content/swagger/master/v3/swaggerfunctions.json    | 140 ++---
 content/swagger/master/v3/swaggerpackages.json     | 116 ++--
 content/swagger/master/v3/swaggersink.json         | 116 ++--
 content/swagger/master/v3/swaggersource.json       | 116 ++--
 44 files changed, 3167 insertions(+), 3155 deletions(-)

diff --git a/content/api/pulsar-broker/2.10.0-SNAPSHOT/index-all.html b/content/api/pulsar-broker/2.10.0-SNAPSHOT/index-all.html
index 803efa3..6862a7b 100644
--- a/content/api/pulsar-broker/2.10.0-SNAPSHOT/index-all.html
+++ b/content/api/pulsar-broker/2.10.0-SNAPSHOT/index-all.html
@@ -3234,18 +3234,12 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/pulsar/broker/service/BacklogQuotaManager.html#getBacklogQuota-org.apache.pulsar.common.naming.NamespaceName-org.apache.pulsar.common.policies.data.BacklogQuota.BacklogQuotaType-">getBacklogQuota(NamespaceName, BacklogQuota.BacklogQuotaType)</a></span> - Method in class org.apache.pulsar.broker.service.<a href="org/apache/pulsar/broker/service/BacklogQuotaManager.html" title="class in org.apache.pulsar.broker.service">BacklogQuotaManag [...]
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/pulsar/broker/service/BacklogQuotaManager.html#getBacklogQuota-org.apache.pulsar.common.naming.TopicName-org.apache.pulsar.common.policies.data.BacklogQuota.BacklogQuotaType-">getBacklogQuota(TopicName, BacklogQuota.BacklogQuotaType)</a></span> - Method in class org.apache.pulsar.broker.service.<a href="org/apache/pulsar/broker/service/BacklogQuotaManager.html" title="class in org.apache.pulsar.broker.service">BacklogQuotaManager</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/pulsar/broker/service/nonpersistent/NonPersistentTopic.html#getBacklogQuota-org.apache.pulsar.common.policies.data.BacklogQuota.BacklogQuotaType-">getBacklogQuota(BacklogQuota.BacklogQuotaType)</a></span> - Method in class org.apache.pulsar.broker.service.nonpersistent.<a href="org/apache/pulsar/broker/service/nonpersistent/NonPersistentTopic.html" title="class in org.apache.pulsar.broker.service.nonpersistent">NonPersistentTopic</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/pulsar/broker/service/persistent/PersistentTopic.html#getBacklogQuota-org.apache.pulsar.common.policies.data.BacklogQuota.BacklogQuotaType-">getBacklogQuota(BacklogQuota.BacklogQuotaType)</a></span> - Method in class org.apache.pulsar.broker.service.persistent.<a href="org/apache/pulsar/broker/service/persistent/PersistentTopic.html" title="class in org.apache.pulsar.broker.service.persistent">PersistentTopic</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/pulsar/broker/service/Topic.html#getBacklogQuota-org.apache.pulsar.common.policies.data.BacklogQuota.BacklogQuotaType-">getBacklogQuota(BacklogQuota.BacklogQuotaType)</a></span> - Method in interface org.apache.pulsar.broker.service.<a href="org/apache/pulsar/broker/service/Topic.html" title="interface in org.apache.pulsar.broker.service">Topic</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/pulsar/broker/service/BacklogQuotaManager.html#getBacklogQuotaLimitInSize-org.apache.pulsar.common.naming.TopicName-">getBacklogQuotaLimitInSize(TopicName)</a></span> - Method in class org.apache.pulsar.broker.service.<a href="org/apache/pulsar/broker/service/BacklogQuotaManager.html" title="class in org.apache.pulsar.broker.service">BacklogQuotaManager</a></dt>
-<dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/pulsar/broker/service/BacklogQuotaManager.html#getBacklogQuotaLimitInTime-org.apache.pulsar.common.naming.TopicName-">getBacklogQuotaLimitInTime(TopicName)</a></span> - Method in class org.apache.pulsar.broker.service.<a href="org/apache/pulsar/broker/service/BacklogQuotaManager.html" title="class in org.apache.pulsar.broker.service">BacklogQuotaManager</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/pulsar/broker/service/BrokerService.html#getBacklogQuotaManager--">getBacklogQuotaManager()</a></span> - Method in class org.apache.pulsar.broker.service.<a href="org/apache/pulsar/broker/service/BrokerService.html" title="class in org.apache.pulsar.broker.service">BrokerService</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/pulsar/broker/admin/v1/Namespaces.html#getBacklogQuotaMap-java.lang.String-java.lang.String-java.lang.String-">getBacklogQuotaMap(String, String, String)</a></span> - Method in class org.apache.pulsar.broker.admin.v1.<a href="org/apache/pulsar/broker/admin/v1/Namespaces.html" title="class in org.apache.pulsar.broker.admin.v1">Namespaces</a></dt>
@@ -12577,6 +12571,8 @@
 <dd>
 <div class="block">Update policies for a topic async.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/pulsar/broker/service/AbstractTopic.html#updateTopicPolicyByNamespacePolicy-org.apache.pulsar.common.policies.data.Policies-">updateTopicPolicyByNamespacePolicy(Policies)</a></span> - Method in class org.apache.pulsar.broker.service.<a href="org/apache/pulsar/broker/service/AbstractTopic.html" title="class in org.apache.pulsar.broker.service">AbstractTopic</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/pulsar/broker/transaction/recover/TransactionRecoverTrackerImpl.html#updateTransactionStatus-long-org.apache.pulsar.transaction.coordinator.proto.TxnStatus-">updateTransactionStatus(long, TxnStatus)</a></span> - Method in class org.apache.pulsar.broker.transaction.recover.<a href="org/apache/pulsar/broker/transaction/recover/TransactionRecoverTrackerImpl.html" title="class in org.apache.pulsar.broker.transaction.recover">TransactionRec [...]
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/pulsar/broker/TransactionMetadataStoreService.html#updateTxnStatus-org.apache.pulsar.client.api.transaction.TxnID-org.apache.pulsar.transaction.coordinator.proto.TxnStatus-org.apache.pulsar.transaction.coordinator.proto.TxnStatus-boolean-">updateTxnStatus(TxnID, TxnStatus, TxnStatus, boolean)</a></span> - Method in class org.apache.pulsar.broker.<a href="org/apache/pulsar/broker/TransactionMetadataStoreService.html" title="class in org [...]
diff --git a/content/api/pulsar-broker/2.10.0-SNAPSHOT/org/apache/pulsar/broker/service/AbstractTopic.html b/content/api/pulsar-broker/2.10.0-SNAPSHOT/org/apache/pulsar/broker/service/AbstractTopic.html
index 4129d3c..ce2ec0c 100644
--- a/content/api/pulsar-broker/2.10.0-SNAPSHOT/org/apache/pulsar/broker/service/AbstractTopic.html
+++ b/content/api/pulsar-broker/2.10.0-SNAPSHOT/org/apache/pulsar/broker/service/AbstractTopic.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":6,"i26":6,"i27":10,"i28":10,"i29":10,"i30":10,"i31":10,"i32":10,"i33":10,"i34":10,"i35":10,"i36":10,"i37":10,"i38":10,"i39":10,"i40":6,"i41":10,"i42":10,"i43":10,"i44":10,"i45":10,"i46":10,"i47":10,"i48":10,"i49":10,"i50":10,"i51":10,"i52":10,"i53":10,"i54 [...]
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":6,"i26":6,"i27":10,"i28":10,"i29":10,"i30":10,"i31":10,"i32":10,"i33":10,"i34":10,"i35":10,"i36":10,"i37":10,"i38":10,"i39":10,"i40":6,"i41":10,"i42":10,"i43":10,"i44":10,"i45":10,"i46":10,"i47":10,"i48":10,"i49":10,"i50":10,"i51":10,"i52":10,"i53":10,"i54 [...]
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -561,6 +561,10 @@ implements <a href="../../../../../org/apache/pulsar/broker/service/Topic.html"
 <div class="block">update topic publish dispatcher for this topic.</div>
 </td>
 </tr>
+<tr id="i66" class="altColor">
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/pulsar/broker/service/AbstractTopic.html#updateTopicPolicyByNamespacePolicy-org.apache.pulsar.common.policies.data.Policies-">updateTopicPolicyByNamespacePolicy</a></span>(org.apache.pulsar.common.policies.data.Policies&nbsp;namespacePolicies)</code>&nbsp;</td>
+</tr>
 </table>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
@@ -809,6 +813,15 @@ implements <a href="../../../../../org/apache/pulsar/broker/service/Topic.html"
 <!--   -->
 </a>
 <h3>Method Detail</h3>
+<a name="updateTopicPolicyByNamespacePolicy-org.apache.pulsar.common.policies.data.Policies-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>updateTopicPolicyByNamespacePolicy</h4>
+<pre>protected&nbsp;void&nbsp;updateTopicPolicyByNamespacePolicy(org.apache.pulsar.common.policies.data.Policies&nbsp;namespacePolicies)</pre>
+</li>
+</ul>
 <a name="isProducersExceeded--">
 <!--   -->
 </a>
diff --git a/content/api/pulsar-broker/2.10.0-SNAPSHOT/org/apache/pulsar/broker/service/BacklogQuotaManager.html b/content/api/pulsar-broker/2.10.0-SNAPSHOT/org/apache/pulsar/broker/service/BacklogQuotaManager.html
index 5ce4e4b..cf7b43a 100644
--- a/content/api/pulsar-broker/2.10.0-SNAPSHOT/org/apache/pulsar/broker/service/BacklogQuotaManager.html
+++ b/content/api/pulsar-broker/2.10.0-SNAPSHOT/org/apache/pulsar/broker/service/BacklogQuotaManager.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10};
+var methods = {"i0":10,"i1":10,"i2":10};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -153,22 +153,9 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </tr>
 <tr id="i1" class="rowColor">
 <td class="colFirst"><code>org.apache.pulsar.common.policies.data.impl.BacklogQuotaImpl</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/pulsar/broker/service/BacklogQuotaManager.html#getBacklogQuota-org.apache.pulsar.common.naming.TopicName-org.apache.pulsar.common.policies.data.BacklogQuota.BacklogQuotaType-">getBacklogQuota</a></span>(org.apache.pulsar.common.naming.TopicName&nbsp;topicName,
-               org.apache.pulsar.common.policies.data.BacklogQuota.BacklogQuotaType&nbsp;backlogQuotaType)</code>&nbsp;</td>
-</tr>
-<tr id="i2" class="altColor">
-<td class="colFirst"><code>long</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/pulsar/broker/service/BacklogQuotaManager.html#getBacklogQuotaLimitInSize-org.apache.pulsar.common.naming.TopicName-">getBacklogQuotaLimitInSize</a></span>(org.apache.pulsar.common.naming.TopicName&nbsp;topicName)</code>&nbsp;</td>
-</tr>
-<tr id="i3" class="rowColor">
-<td class="colFirst"><code>int</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/pulsar/broker/service/BacklogQuotaManager.html#getBacklogQuotaLimitInTime-org.apache.pulsar.common.naming.TopicName-">getBacklogQuotaLimitInTime</a></span>(org.apache.pulsar.common.naming.TopicName&nbsp;topicName)</code>&nbsp;</td>
-</tr>
-<tr id="i4" class="altColor">
-<td class="colFirst"><code>org.apache.pulsar.common.policies.data.impl.BacklogQuotaImpl</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/pulsar/broker/service/BacklogQuotaManager.html#getDefaultQuota--">getDefaultQuota</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i5" class="rowColor">
+<tr id="i2" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/pulsar/broker/service/BacklogQuotaManager.html#handleExceededBacklogQuota-org.apache.pulsar.broker.service.persistent.PersistentTopic-org.apache.pulsar.common.policies.data.BacklogQuota.BacklogQuotaType-boolean-">handleExceededBacklogQuota</a></span>(<a href="../../../../../org/apache/pulsar/broker/service/persistent/PersistentTopic.html" title="class in org.apache.pulsar.broker.service.persistent"> [...]
                           org.apache.pulsar.common.policies.data.BacklogQuota.BacklogQuotaType&nbsp;backlogQuotaType,
@@ -234,34 +221,6 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
                                                                                     org.apache.pulsar.common.policies.data.BacklogQuota.BacklogQuotaType&nbsp;backlogQuotaType)</pre>
 </li>
 </ul>
-<a name="getBacklogQuota-org.apache.pulsar.common.naming.TopicName-org.apache.pulsar.common.policies.data.BacklogQuota.BacklogQuotaType-">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>getBacklogQuota</h4>
-<pre>public&nbsp;org.apache.pulsar.common.policies.data.impl.BacklogQuotaImpl&nbsp;getBacklogQuota(org.apache.pulsar.common.naming.TopicName&nbsp;topicName,
-                                                                                    org.apache.pulsar.common.policies.data.BacklogQuota.BacklogQuotaType&nbsp;backlogQuotaType)</pre>
-</li>
-</ul>
-<a name="getBacklogQuotaLimitInSize-org.apache.pulsar.common.naming.TopicName-">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>getBacklogQuotaLimitInSize</h4>
-<pre>public&nbsp;long&nbsp;getBacklogQuotaLimitInSize(org.apache.pulsar.common.naming.TopicName&nbsp;topicName)</pre>
-</li>
-</ul>
-<a name="getBacklogQuotaLimitInTime-org.apache.pulsar.common.naming.TopicName-">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>getBacklogQuotaLimitInTime</h4>
-<pre>public&nbsp;int&nbsp;getBacklogQuotaLimitInTime(org.apache.pulsar.common.naming.TopicName&nbsp;topicName)</pre>
-</li>
-</ul>
 <a name="handleExceededBacklogQuota-org.apache.pulsar.broker.service.persistent.PersistentTopic-org.apache.pulsar.common.policies.data.BacklogQuota.BacklogQuotaType-boolean-">
 <!--   -->
 </a>
diff --git a/content/api/pulsar-broker/2.10.0-SNAPSHOT/org/apache/pulsar/broker/service/nonpersistent/NonPersistentTopic.html b/content/api/pulsar-broker/2.10.0-SNAPSHOT/org/apache/pulsar/broker/service/nonpersistent/NonPersistentTopic.html
index 0dfe133..103d9d5 100644
--- a/content/api/pulsar-broker/2.10.0-SNAPSHOT/org/apache/pulsar/broker/service/nonpersistent/NonPersistentTopic.html
+++ b/content/api/pulsar-broker/2.10.0-SNAPSHOT/org/apache/pulsar/broker/service/nonpersistent/NonPersistentTopic.html
@@ -408,7 +408,7 @@ implements <a href="../../../../../../org/apache/pulsar/broker/service/Topic.htm
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.pulsar.broker.service.<a href="../../../../../../org/apache/pulsar/broker/service/AbstractTopic.html" title="class in org.apache.pulsar.broker.service">AbstractTopic</a></h3>
-<code><a href="../../../../../../org/apache/pulsar/broker/service/AbstractTopic.html#addConsumerToSubscription-org.apache.pulsar.broker.service.Subscription-org.apache.pulsar.broker.service.Consumer-">addConsumerToSubscription</a>, <a href="../../../../../../org/apache/pulsar/broker/service/AbstractTopic.html#addProducer-org.apache.pulsar.broker.service.Producer-java.util.concurrent.CompletableFuture-">addProducer</a>, <a href="../../../../../../org/apache/pulsar/broker/service/AbstractT [...]
+<code><a href="../../../../../../org/apache/pulsar/broker/service/AbstractTopic.html#addConsumerToSubscription-org.apache.pulsar.broker.service.Subscription-org.apache.pulsar.broker.service.Consumer-">addConsumerToSubscription</a>, <a href="../../../../../../org/apache/pulsar/broker/service/AbstractTopic.html#addProducer-org.apache.pulsar.broker.service.Producer-java.util.concurrent.CompletableFuture-">addProducer</a>, <a href="../../../../../../org/apache/pulsar/broker/service/AbstractT [...]
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
diff --git a/content/api/pulsar-broker/2.10.0-SNAPSHOT/org/apache/pulsar/broker/service/persistent/PersistentTopic.html b/content/api/pulsar-broker/2.10.0-SNAPSHOT/org/apache/pulsar/broker/service/persistent/PersistentTopic.html
index 719a95c..853272d 100644
--- a/content/api/pulsar-broker/2.10.0-SNAPSHOT/org/apache/pulsar/broker/service/persistent/PersistentTopic.html
+++ b/content/api/pulsar-broker/2.10.0-SNAPSHOT/org/apache/pulsar/broker/service/persistent/PersistentTopic.html
@@ -679,7 +679,7 @@ implements <a href="../../../../../../org/apache/pulsar/broker/service/Topic.htm
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.pulsar.broker.service.<a href="../../../../../../org/apache/pulsar/broker/service/AbstractTopic.html" title="class in org.apache.pulsar.broker.service">AbstractTopic</a></h3>
-<code><a href="../../../../../../org/apache/pulsar/broker/service/AbstractTopic.html#addConsumerToSubscription-org.apache.pulsar.broker.service.Subscription-org.apache.pulsar.broker.service.Consumer-">addConsumerToSubscription</a>, <a href="../../../../../../org/apache/pulsar/broker/service/AbstractTopic.html#addSchema-org.apache.pulsar.common.protocol.schema.SchemaData-">addSchema</a>, <a href="../../../../../../org/apache/pulsar/broker/service/AbstractTopic.html#checkSchemaCompatibleFo [...]
+<code><a href="../../../../../../org/apache/pulsar/broker/service/AbstractTopic.html#addConsumerToSubscription-org.apache.pulsar.broker.service.Subscription-org.apache.pulsar.broker.service.Consumer-">addConsumerToSubscription</a>, <a href="../../../../../../org/apache/pulsar/broker/service/AbstractTopic.html#addSchema-org.apache.pulsar.common.protocol.schema.SchemaData-">addSchema</a>, <a href="../../../../../../org/apache/pulsar/broker/service/AbstractTopic.html#checkSchemaCompatibleFo [...]
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
diff --git a/content/api/pulsar-broker/2.10.0-SNAPSHOT/org/apache/pulsar/broker/service/persistent/SystemTopic.html b/content/api/pulsar-broker/2.10.0-SNAPSHOT/org/apache/pulsar/broker/service/persistent/SystemTopic.html
index 93af199..5a8b545 100644
--- a/content/api/pulsar-broker/2.10.0-SNAPSHOT/org/apache/pulsar/broker/service/persistent/SystemTopic.html
+++ b/content/api/pulsar-broker/2.10.0-SNAPSHOT/org/apache/pulsar/broker/service/persistent/SystemTopic.html
@@ -240,7 +240,7 @@ extends <a href="../../../../../../org/apache/pulsar/broker/service/persistent/P
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.pulsar.broker.service.<a href="../../../../../../org/apache/pulsar/broker/service/AbstractTopic.html" title="class in org.apache.pulsar.broker.service">AbstractTopic</a></h3>
-<code><a href="../../../../../../org/apache/pulsar/broker/service/AbstractTopic.html#addConsumerToSubscription-org.apache.pulsar.broker.service.Subscription-org.apache.pulsar.broker.service.Consumer-">addConsumerToSubscription</a>, <a href="../../../../../../org/apache/pulsar/broker/service/AbstractTopic.html#addSchema-org.apache.pulsar.common.protocol.schema.SchemaData-">addSchema</a>, <a href="../../../../../../org/apache/pulsar/broker/service/AbstractTopic.html#checkSchemaCompatibleFo [...]
+<code><a href="../../../../../../org/apache/pulsar/broker/service/AbstractTopic.html#addConsumerToSubscription-org.apache.pulsar.broker.service.Subscription-org.apache.pulsar.broker.service.Consumer-">addConsumerToSubscription</a>, <a href="../../../../../../org/apache/pulsar/broker/service/AbstractTopic.html#addSchema-org.apache.pulsar.common.protocol.schema.SchemaData-">addSchema</a>, <a href="../../../../../../org/apache/pulsar/broker/service/AbstractTopic.html#checkSchemaCompatibleFo [...]
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
diff --git a/content/api/python/2.10.0-SNAPSHOT/index.html b/content/api/python/2.10.0-SNAPSHOT/index.html
index 9c7dd66..dde89cb 100644
--- a/content/api/python/2.10.0-SNAPSHOT/index.html
+++ b/content/api/python/2.10.0-SNAPSHOT/index.html
@@ -3764,7 +3764,7 @@ producers and consumers.</p></div>
             
   <div class="item">
     <div class="name def" id="pulsar.Client.create_producer">
-    <p>def <span class="ident">create_producer</span>(</p><p>self, topic, producer_name=None, schema=&lt;pulsar.schema.schema.BytesSchema object at 0x7f479f240cd0&gt;, initial_sequence_id=None, send_timeout_millis=30000, compression_type=_pulsar.CompressionType.NONE, max_pending_messages=1000, max_pending_messages_across_partitions=50000, block_if_queue_full=False, batching_enabled=False, batching_max_messages=1000, batching_max_allowed_size_in_bytes=131072, batching_max_publish_delay_ms [...]
+    <p>def <span class="ident">create_producer</span>(</p><p>self, topic, producer_name=None, schema=&lt;pulsar.schema.schema.BytesSchema object at 0x7fa8c9f64cd0&gt;, initial_sequence_id=None, send_timeout_millis=30000, compression_type=_pulsar.CompressionType.NONE, max_pending_messages=1000, max_pending_messages_across_partitions=50000, block_if_queue_full=False, batching_enabled=False, batching_max_messages=1000, batching_max_allowed_size_in_bytes=131072, batching_max_publish_delay_ms [...]
     </div>
     
 
@@ -4018,7 +4018,7 @@ batched into single batch message:
             
   <div class="item">
     <div class="name def" id="pulsar.Client.create_reader">
-    <p>def <span class="ident">create_reader</span>(</p><p>self, topic, start_message_id, schema=&lt;pulsar.schema.schema.BytesSchema object at 0x7f479e3371d0&gt;, reader_listener=None, receiver_queue_size=1000, reader_name=None, subscription_role_prefix=None, is_read_compacted=False, crypto_key_reader=None)</p>
+    <p>def <span class="ident">create_reader</span>(</p><p>self, topic, start_message_id, schema=&lt;pulsar.schema.schema.BytesSchema object at 0x7fa8c905b1d0&gt;, reader_listener=None, receiver_queue_size=1000, reader_name=None, subscription_role_prefix=None, is_read_compacted=False, crypto_key_reader=None)</p>
     </div>
     
 
@@ -4235,7 +4235,7 @@ for ongoing operations to complete.</p></div>
             
   <div class="item">
     <div class="name def" id="pulsar.Client.subscribe">
-    <p>def <span class="ident">subscribe</span>(</p><p>self, topic, subscription_name, consumer_type=_pulsar.ConsumerType.Exclusive, schema=&lt;pulsar.schema.schema.BytesSchema object at 0x7f479e337110&gt;, message_listener=None, receiver_queue_size=1000, max_total_receiver_queue_size_across_partitions=50000, consumer_name=None, unacked_messages_timeout_ms=None, broker_consumer_stats_cache_time_ms=30000, negative_ack_redelivery_delay_ms=60000, is_read_compacted=False, properties=None, pa [...]
+    <p>def <span class="ident">subscribe</span>(</p><p>self, topic, subscription_name, consumer_type=_pulsar.ConsumerType.Exclusive, schema=&lt;pulsar.schema.schema.BytesSchema object at 0x7fa8c905b110&gt;, message_listener=None, receiver_queue_size=1000, max_total_receiver_queue_size_across_partitions=50000, consumer_name=None, unacked_messages_timeout_ms=None, broker_consumer_stats_cache_time_ms=30000, negative_ack_redelivery_delay_ms=60000, is_read_compacted=False, properties=None, pa [...]
     </div>
     
 
diff --git a/content/api/python/index.html b/content/api/python/index.html
index 9c7dd66..dde89cb 100644
--- a/content/api/python/index.html
+++ b/content/api/python/index.html
@@ -3764,7 +3764,7 @@ producers and consumers.</p></div>
             
   <div class="item">
     <div class="name def" id="pulsar.Client.create_producer">
-    <p>def <span class="ident">create_producer</span>(</p><p>self, topic, producer_name=None, schema=&lt;pulsar.schema.schema.BytesSchema object at 0x7f479f240cd0&gt;, initial_sequence_id=None, send_timeout_millis=30000, compression_type=_pulsar.CompressionType.NONE, max_pending_messages=1000, max_pending_messages_across_partitions=50000, block_if_queue_full=False, batching_enabled=False, batching_max_messages=1000, batching_max_allowed_size_in_bytes=131072, batching_max_publish_delay_ms [...]
+    <p>def <span class="ident">create_producer</span>(</p><p>self, topic, producer_name=None, schema=&lt;pulsar.schema.schema.BytesSchema object at 0x7fa8c9f64cd0&gt;, initial_sequence_id=None, send_timeout_millis=30000, compression_type=_pulsar.CompressionType.NONE, max_pending_messages=1000, max_pending_messages_across_partitions=50000, block_if_queue_full=False, batching_enabled=False, batching_max_messages=1000, batching_max_allowed_size_in_bytes=131072, batching_max_publish_delay_ms [...]
     </div>
     
 
@@ -4018,7 +4018,7 @@ batched into single batch message:
             
   <div class="item">
     <div class="name def" id="pulsar.Client.create_reader">
-    <p>def <span class="ident">create_reader</span>(</p><p>self, topic, start_message_id, schema=&lt;pulsar.schema.schema.BytesSchema object at 0x7f479e3371d0&gt;, reader_listener=None, receiver_queue_size=1000, reader_name=None, subscription_role_prefix=None, is_read_compacted=False, crypto_key_reader=None)</p>
+    <p>def <span class="ident">create_reader</span>(</p><p>self, topic, start_message_id, schema=&lt;pulsar.schema.schema.BytesSchema object at 0x7fa8c905b1d0&gt;, reader_listener=None, receiver_queue_size=1000, reader_name=None, subscription_role_prefix=None, is_read_compacted=False, crypto_key_reader=None)</p>
     </div>
     
 
@@ -4235,7 +4235,7 @@ for ongoing operations to complete.</p></div>
             
   <div class="item">
     <div class="name def" id="pulsar.Client.subscribe">
-    <p>def <span class="ident">subscribe</span>(</p><p>self, topic, subscription_name, consumer_type=_pulsar.ConsumerType.Exclusive, schema=&lt;pulsar.schema.schema.BytesSchema object at 0x7f479e337110&gt;, message_listener=None, receiver_queue_size=1000, max_total_receiver_queue_size_across_partitions=50000, consumer_name=None, unacked_messages_timeout_ms=None, broker_consumer_stats_cache_time_ms=30000, negative_ack_redelivery_delay_ms=60000, is_read_compacted=False, properties=None, pa [...]
+    <p>def <span class="ident">subscribe</span>(</p><p>self, topic, subscription_name, consumer_type=_pulsar.ConsumerType.Exclusive, schema=&lt;pulsar.schema.schema.BytesSchema object at 0x7fa8c905b110&gt;, message_listener=None, receiver_queue_size=1000, max_total_receiver_queue_size_across_partitions=50000, consumer_name=None, unacked_messages_timeout_ms=None, broker_consumer_stats_cache_time_ms=30000, negative_ack_redelivery_delay_ms=60000, is_read_compacted=False, properties=None, pa [...]
     </div>
     
 
diff --git a/content/docs/en/next/reference-metrics.html b/content/docs/en/next/reference-metrics.html
index 0ec3742..2e41c20 100644
--- a/content/docs/en/next/reference-metrics.html
+++ b/content/docs/en/next/reference-metrics.html
@@ -456,6 +456,28 @@ in the <code>broker.conf</code> configuration file.</p>
 <tr><td>pulsar_lb_bundles_split_count</td><td>Counter</td><td>bundle split count in this bundle splitting check interval</td></tr>
 </tbody>
 </table>
+<h4><a class="anchor" aria-hidden="true" id="bundle-metrics"></a><a href="#bundle-metrics" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0- [...]
+<p>All the bundle metrics are labelled with the following labels:</p>
+<ul>
+<li>cluster: cluster=${pulsar_cluster}. ${pulsar_cluster} is the cluster name that you have configured in the <code>broker.conf</code> file.</li>
+<li>broker: broker=${broker}. ${broker} is the IP address of the broker</li>
+<li>bundle: bundle=${bundle}. ${bundle} is the bundle range on this broker</li>
+<li>metric: metric=&quot;loadBalancing&quot;.</li>
+</ul>
+<table>
+<thead>
+<tr><th>Name</th><th>Type</th><th>Description</th></tr>
+</thead>
+<tbody>
+<tr><td>pulsar_bundle_msg_rate_in</td><td>Gauge</td><td>The total message rate coming into the topics in this bundle  (messages/second).</td></tr>
+<tr><td>pulsar_bundle_msg_rate_out</td><td>Gauge</td><td>The total message rate going out from the topics in this bundle  (messages/second).</td></tr>
+<tr><td>pulsar_bundle_topics_count</td><td>Gauge</td><td>The topic count in this bundle.</td></tr>
+<tr><td>pulsar_bundle_consumer_count</td><td>Gauge</td><td>The consumer count of the topics in this bundle.</td></tr>
+<tr><td>pulsar_bundle_producer_count</td><td>Gauge</td><td>The producer count of the topics in this bundle.</td></tr>
+<tr><td>pulsar_bundle_msg_throughput_in</td><td>Gauge</td><td>The total throughput coming into the topics in this bundle (bytes/second).</td></tr>
+<tr><td>pulsar_bundle_msg_throughput_out</td><td>Gauge</td><td>The total throughput going out from the topics in this bundle (bytes/second).</td></tr>
+</tbody>
+</table>
 <h3><a class="anchor" aria-hidden="true" id="subscription-metrics"></a><a href="#subscription-metrics" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1 [...]
 <blockquote>
 <p>Subscription metrics are only exposed when <code>exposeTopicLevelMetricsInPrometheus</code> is set to <code>true</code>.</p>
diff --git a/content/docs/en/next/reference-metrics/index.html b/content/docs/en/next/reference-metrics/index.html
index 0ec3742..2e41c20 100644
--- a/content/docs/en/next/reference-metrics/index.html
+++ b/content/docs/en/next/reference-metrics/index.html
@@ -456,6 +456,28 @@ in the <code>broker.conf</code> configuration file.</p>
 <tr><td>pulsar_lb_bundles_split_count</td><td>Counter</td><td>bundle split count in this bundle splitting check interval</td></tr>
 </tbody>
 </table>
+<h4><a class="anchor" aria-hidden="true" id="bundle-metrics"></a><a href="#bundle-metrics" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0- [...]
+<p>All the bundle metrics are labelled with the following labels:</p>
+<ul>
+<li>cluster: cluster=${pulsar_cluster}. ${pulsar_cluster} is the cluster name that you have configured in the <code>broker.conf</code> file.</li>
+<li>broker: broker=${broker}. ${broker} is the IP address of the broker</li>
+<li>bundle: bundle=${bundle}. ${bundle} is the bundle range on this broker</li>
+<li>metric: metric=&quot;loadBalancing&quot;.</li>
+</ul>
+<table>
+<thead>
+<tr><th>Name</th><th>Type</th><th>Description</th></tr>
+</thead>
+<tbody>
+<tr><td>pulsar_bundle_msg_rate_in</td><td>Gauge</td><td>The total message rate coming into the topics in this bundle  (messages/second).</td></tr>
+<tr><td>pulsar_bundle_msg_rate_out</td><td>Gauge</td><td>The total message rate going out from the topics in this bundle  (messages/second).</td></tr>
+<tr><td>pulsar_bundle_topics_count</td><td>Gauge</td><td>The topic count in this bundle.</td></tr>
+<tr><td>pulsar_bundle_consumer_count</td><td>Gauge</td><td>The consumer count of the topics in this bundle.</td></tr>
+<tr><td>pulsar_bundle_producer_count</td><td>Gauge</td><td>The producer count of the topics in this bundle.</td></tr>
+<tr><td>pulsar_bundle_msg_throughput_in</td><td>Gauge</td><td>The total throughput coming into the topics in this bundle (bytes/second).</td></tr>
+<tr><td>pulsar_bundle_msg_throughput_out</td><td>Gauge</td><td>The total throughput going out from the topics in this bundle (bytes/second).</td></tr>
+</tbody>
+</table>
 <h3><a class="anchor" aria-hidden="true" id="subscription-metrics"></a><a href="#subscription-metrics" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1 [...]
 <blockquote>
 <p>Subscription metrics are only exposed when <code>exposeTopicLevelMetricsInPrometheus</code> is set to <code>true</code>.</p>
diff --git a/content/docs/zh-CN/2.7.0/tiered-storage-filesystem.html b/content/docs/zh-CN/2.7.0/tiered-storage-filesystem.html
index 344f920..d86cde3 100644
--- a/content/docs/zh-CN/2.7.0/tiered-storage-filesystem.html
+++ b/content/docs/zh-CN/2.7.0/tiered-storage-filesystem.html
@@ -142,27 +142,27 @@ ls offloaders
 </ul>
 <h3><a class="anchor" aria-hidden="true" id="自动运行-filesystem-offloader"></a><a href="#自动运行-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c [...]
 <p>您可以将命名空间策略配置为在达到阈值后自动卸载数据。 该阈值基于一个 topic 在 Pulsar 集群的数据存储大小而定。 一旦 topic 到达阈值,就自动触发卸载操作。</p>
-<p>Threshold value|Action |---|--- | &gt; 0 | It triggers the offloading operation if the topic storage reaches its threshold. = 0| 它使 broker 竭尽全力地 offload 数据。 &lt; 0 |It disables automatic offloading operation.</p>
-<p>Automatic offload runs when a new segment is added to a topic log. If you set the threshold on a namespace, but few messages are being produced to the topic, the filesystem offloader does not work until the current segment is full.</p>
-<p>You can configure the threshold using CLI tools, such as pulsar-admin.</p>
+<p>阈值|动作 |---|--- | &gt; 0 | 如果 topic 存储达到其阈值,它就会触发卸载操作。 = 0| 它使 broker 竭尽全力地 offload 数据。 &lt; 0 | 它将禁用自动卸载操作。</p>
+<p>Automatic offload runs when a new segment is added to a topic log. 如果在命名空间上设置了阈值,但向该 topic 生产的消息很少,filesystem offloader 将会停止工作,直至当前 segment 达到饱和。</p>
+<p>通过命令行工具(CLI)可以设置阈值大小,比如 pulsar-admin。</p>
 <h4><a class="anchor" aria-hidden="true" id="示例"></a><a href="#示例" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c [...]
-<p>This example sets the filesystem offloader threshold to 10 MB using pulsar-admin.</p>
+<p>该示例使用 pulsar-admin 将 filesystem offloader 的阈值大小设置为 10 MB。</p>
 <pre><code class="hljs css language-bash">pulsar-admin namespaces <span class="hljs-built_in">set</span>-offload-threshold --size 10M my-tenant/my-namespace
 </code></pre>
 <blockquote>
 <h4><a class="anchor" aria-hidden="true" id="提示"></a><a href="#提示" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c [...]
 <p>关于 <code>pulsar-admin namespaces set-offload-threshold options</code> 命令的更多信息,包括标志、描述、默认值和速记方法,见<a href="/docs/zh-CN/2.7.0/pulsar-admin#set-offload-threshold">这里</a>。</p>
 </blockquote>
-<h3><a class="anchor" aria-hidden="true" id="run-filesystem-offloader-manually"></a><a href="#run-filesystem-offloader-manually" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S1 [...]
-<p>For individual topics, you can trigger the filesystem offloader manually using one of the following methods:</p>
+<h3><a class="anchor" aria-hidden="true" id="手动运行-filesystem-offloader"></a><a href="#手动运行-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c [...]
+<p>对于每一个 topic,使用下列方法之一可以手动触发 filesystem offloader:</p>
 <ul>
-<li><p>Use the REST endpoint.</p></li>
+<li><p>使用 REST 端点。</p></li>
 <li><p>使用命令行工具(例如 pulsar-admin)。</p></li>
 </ul>
-<p>To manually trigger the filesystem offloader via CLI tools, you need to specify the maximum amount of data (threshold) that should be retained on a Pulsar cluster for a topic. 如果 Pulsar 集群上 topic 的数据大小超过了这个阈值,那么该 topic 下的 segment 就会被陆续卸载到 filesystem 上,直到不再超过这个阈值。 优先卸载旧的 segment。</p>
+<p>要想用命令行工具触发 filesystem offloader,需要指定一个 topic 应该保留在 Pulsar 集群中的最大数据量(阈值)。 如果 Pulsar 集群上 topic 的数据大小超过了这个阈值,那么该 topic 下的 segment 就会被陆续卸载到 filesystem 上,直到不再超过这个阈值。 优先卸载旧的 segment。</p>
 <h4><a class="anchor" aria-hidden="true" id="示例-1"></a><a href="#示例-1" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
 <ul>
-<li><p>This example manually run the filesystem offloader using pulsar-admin.</p>
+<li><p>此示例使用 pulsar-admin 手动运行 filesystem offloader。</p>
 <pre><code class="hljs css language-bash">pulsar-admin topics offload --size-threshold 10M persistent://my-tenant/my-namespace/topic1
 </code></pre>
 <p><strong>输出</strong></p>
@@ -199,96 +199,96 @@ Reason: <span class="hljs-builtin-name">Error</span> offloading: org.apache.book
 </blockquote></li>
 </ul>
 <h2><a class="anchor" aria-hidden="true" id="教程"></a><a href="#教程" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c [...]
-<p>This section provides step-by-step instructions on how to use the filesystem offloader to move data from Pulsar to Hadoop Distributed File System (HDFS) or Network File system (NFS).</p>
-<pre><code class="hljs">&lt;div class=&quot;tabs&quot;&gt;&lt;div class=&quot;nav-tabs&quot;&gt;&lt;div id=&quot;tab-group-25969-tab-25970&quot; class=&quot;nav-link active&quot; data-group=&quot;group_25969&quot; data-tab=&quot;tab-group-25969-content-25970&quot;&gt;HDFS&lt;/div&gt;&lt;div id=&quot;tab-group-25969-tab-25971&quot; class=&quot;nav-link&quot; data-group=&quot;group_25969&quot; data-tab=&quot;tab-group-25969-content-25971&quot;&gt;NFS&lt;/div&gt;&lt;/div&gt;&lt;div class=&q [...]
+<p>本节提供有关如何使用  filesystem offloader  将数据从 Pulsar 移动到 Hadoop 分布式文件系统(HDFS)或网络文件系统(NFS)的分步说明。</p>
+<pre><code class="hljs">&lt;div class=&quot;tabs&quot;&gt;&lt;div class=&quot;nav-tabs&quot;&gt;&lt;div id=&quot;tab-group-25969-tab-25970&quot; class=&quot;nav-link active&quot; data-group=&quot;group_25969&quot; data-tab=&quot;tab-group-25969-content-25970&quot;&gt;HDFS&lt;/div&gt;&lt;div id=&quot;tab-group-25969-tab-25971&quot; class=&quot;nav-link&quot; data-group=&quot;group_25969&quot; data-tab=&quot;tab-group-25969-content-25971&quot;&gt;NFS&lt;/div&gt;&lt;/div&gt;&lt;div class=&q [...]
 </code></pre>
-<p><h3><a class="anchor" aria-hidden="true" id="step-1-prepare-the-hdfs-environment"></a><a href="#step-1-prepare-the-hdfs-environment" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22  [...]
-<p>This tutorial sets up a Hadoop single node cluster and uses Hadoop 3.2.1.</p>
+<p><h3><a class="anchor" aria-hidden="true" id="第-1-步准备-hdfs-环境"></a><a href="#第-1-步准备-hdfs-环境" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2 [...]
+<p>本教程使用 Hadoop 3.2.1设置一个 Hadoop 单个节点集群。</p>
 <blockquote>
 <p><strong>提示</strong></p>
-<p>For details about how to set up a Hadoop single node cluster, see <a href="https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html">here</a>.</p>
+<p>有关如何设置 Hadoop 单节点集群的详细信息,请参见<a href="https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html">此处</a>。</p>
 </blockquote>
 <ol>
-<li>Download and uncompress Hadoop 3.2.1.</li>
+<li>下载并解压缩 Hadoop 3.2.1。</li>
 </ol>
 <pre><code class="hljs">wget <span class="hljs-symbol">https:</span>/<span class="hljs-regexp">/mirrors.bfsu.edu.cn/apache</span><span class="hljs-regexp">/hadoop/common</span><span class="hljs-regexp">/hadoop-3.2.1/hadoop</span><span class="hljs-number">-3.2</span>.<span class="hljs-number">1</span>.tar.gz  <br /><br />tar -zxvf hadoop<span class="hljs-number">-3.2</span>.<span class="hljs-number">1</span>.tar.gz -C <span class="hljs-variable">$HADOOP_HOME</span><br /></code></pre>    
 <ol start="2">
-<li>Configure Hadoop.</li>
+<li>配置 Hadoop。</li>
 </ol>
 <pre><code class="hljs"><span class="hljs-meta"># $HADOOP_HOME/etc/hadoop/core-site.xml</span><br /><span class="hljs-params">&lt;configuration&gt;</span><br />    <span class="hljs-params">&lt;property&gt;</span><br />        <span class="hljs-params">&lt;name&gt;</span>fs.defaultFS<span class="hljs-params">&lt;/name&gt;</span><br />        <span class="hljs-params">&lt;value&gt;</span>hdfs:<span class="hljs-comment">//localhost:9000&lt;/value&gt;</span><br />    <span class="hljs-param [...]
 <ol start="3">
-<li>Set passphraseless ssh.</li>
+<li>设置无密码 ssh。</li>
 </ol>
-<pre><code class="hljs"><span class="hljs-comment"># Now check that you can ssh to the localhost without a passphrase:</span><br /><span class="hljs-variable">$ </span>ssh localhost<br /><span class="hljs-comment"># If you cannot ssh to localhost without a passphrase, execute the following commands</span><br /><span class="hljs-variable">$ </span>ssh-keygen -t rsa -P <span class="hljs-string">''</span> -f ~<span class="hljs-regexp">/.ssh/id</span>_rsa<br /><span class="hljs-variable">$ < [...]
+<pre><code class="hljs"><span class="hljs-comment"># 现在检查无需密码是否可以使用 ssh 连接到 localhost:</span><br /><span class="hljs-variable">$ </span>ssh localhost<br /><span class="hljs-comment"># 如果在无密码的情况下无法 ssh 连接到 localhost,请执行以下命令</span><br /><span class="hljs-variable">$ </span>ssh-keygen -t rsa -P <span class="hljs-string">''</span> -f ~<span class="hljs-regexp">/.ssh/id</span>_rsa<br /><span class="hljs-variable">$ </span>cat ~<span class="hljs-regexp">/.ssh/id</span>_rsa.pub &gt;&gt; ~<span  [...]
 <ol start="4">
-<li>Start HDFS.</li>
+<li>启动 HDFS。</li>
 </ol>
-<pre><code class="hljs"><span class="hljs-comment"># don't execute this command repeatedly, repeat execute will cauld the clusterId of the datanode is not consistent with namenode</span><br /><span class="hljs-variable">$HADOOP_HOME</span><span class="hljs-regexp">/bin/</span>hadoop namenode -format<br /><span class="hljs-variable">$HADOOP_HOME</span><span class="hljs-regexp">/sbin/</span>start-dfs.sh<br /></code></pre>    
+<pre><code class="hljs"><span class="hljs-comment"># 不重复执行此命令, 重复执行会捕获数据集群标识符与命名方式</span><br /><span class="hljs-variable">$HADOOP_HOME</span><span class="hljs-regexp">/bin/</span>hadoop namenode -format<br /><span class="hljs-variable">$HADOOP_HOME</span><span class="hljs-regexp">/sbin/</span>start-dfs.sh<br /></code></pre>    
 <ol start="5">
-<li>Navigate to the <a href="http://localhost:9870/">HDFS website</a>.</li>
+<li>导航到 <a href="http://localhost:9870/">HDFS 网站</a>。</li>
 </ol>
-<p>You can see the <strong>Overview</strong> page.</p>
+<p>您可以查看 <strong>概述</strong> 页面。</p>
 <p><img src="/docs/assets/FileSystem-1.png" alt=""></p>
 <ol>
-<li><p>At the top navigation bar, click <strong>Datanodes</strong> to check DataNode information.</p>
+<li><p>在顶部导航栏,单击 <strong>数据节点</strong> 查看数据节点信息。</p>
 <p><img src="/docs/assets/FileSystem-2.png" alt=""></p></li>
-<li><p>Click <strong>HTTP Address</strong> to get more detailed information about localhost:9866.</p>
-<p>As can be seen below, the size of <strong>Capacity Used</strong> is 4 KB, which is the initial value.</p>
+<li><p>单击 <strong>HTTP 地址</strong> 获取更多关于 localhost:9866 的详细信息。</p>
+<p>如下文所示, <strong>所用容量</strong> 的大小是 4 KB,它是初始值。</p>
 <p><img src="/docs/assets/FileSystem-3.png" alt=""></p></li>
 </ol>
-<h3><a class="anchor" aria-hidden="true" id="step-2-install-the-filesystem-offloader"></a><a href="#step-2-install-the-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2  [...]
-<p>For details, see <a href="#installation">installation</a>.</p>
-<h3><a class="anchor" aria-hidden="true" id="step-3-configure-the-filesystem-offloader"></a><a href="#step-3-configure-the-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1  [...]
-<p>As indicated in the <a href="#configuration">configuration</a> section, you need to configure some properties for the filesystem offloader driver before using it. This tutorial assumes that you have configured the filesystem offloader driver as below and run Pulsar in <strong>standalone</strong> mode.</p>
-<p>Set the following configurations in the <code>conf/standalone.conf</code> file.</p>
+<h3><a class="anchor" aria-hidden="true" id="第-2-步-安装-filesystem-offloader"></a><a href="#第-2-步-安装-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
+<p>更多详细信息,请参阅 <a href="#installation">安装</a>。</p>
+<h3><a class="anchor" aria-hidden="true" id="第-3-步-配置-filesystem-offloader"></a><a href="#第-3-步-配置-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
+<p>正如 <a href="#configuration">配置</a> 部分所指明的那样,需要先配置  filesystem offloader 驱动程序的一些属性,然后才能使用。 本教程假设您已按以下方式配置  filesystem offloader 驱动程序,并在<strong>独立</strong>模式下运行 Pulsar。</p>
+<p>在 <code>conf/standalone.conf</code> 文件中设置以下配置。</p>
 <pre><code class="hljs css language-conf"><span class="hljs-attr">managedLedgerOffloadDriver</span>=filesystem<br /><span class="hljs-attr">fileSystemURI</span>=hdfs://<span class="hljs-number">127.0</span>.<span class="hljs-number">0.1</span>:<span class="hljs-number">9000</span><br /><span class="hljs-attr">fileSystemProfilePath</span>=../conf/filesystem_<span class="hljs-literal">off</span>load_core_site.xml<br /></code></pre>    
 <blockquote>
 <p><strong>Note</strong></p>
-<p>For testing purposes, you can set the following two configurations to speed up ledger rollover, but it is not recommended that you set them in the production environment.</p>
+<p>为测试目的,您可以设置以下两个配置来加速 ledger 切换, 但不建议在生产环境中设置它们。</p>
 </blockquote>
 <pre><code class="hljs"><span class="hljs-attr">managedLedgerMinLedgerRolloverTimeMinutes</span>=<span class="hljs-number">1</span><br /><span class="hljs-attr">managedLedgerMaxEntriesPerLedger</span>=<span class="hljs-number">100</span><br /></code></pre>    
 </span></div></div><div id="tab-group-25969-content-25971" class="tab-pane" data-group="group_25969" tabindex="-1"><div><span><blockquote>
 <p><strong>Note</strong></p>
-<p>In this section, it is assumed that you have enabled NFS service and set the shared path of your NFS service. In this section, <code>/Users/test</code> is used as the shared path of NFS service.</p>
+<p>在本节中,假定您已启用 NFS 服务并设置 NFS 服务的共享路径。 在本节中, <code>/Users/test</code> 被用作 NFS 服务的共享路径。</p>
 </blockquote>
-<p>To offload data to NFS, follow these steps.</p>
-<h3><a class="anchor" aria-hidden="true" id="step-1-install-the-filesystem-offloader"></a><a href="#step-1-install-the-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2  [...]
-<p>For details, see <a href="#installation">installation</a>.</p>
-<h3><a class="anchor" aria-hidden="true" id="step-2-mont-your-nfs-to-your-local-filesystem"></a><a href="#step-2-mont-your-nfs-to-your-local-filesystem" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h- [...]
-<p>This example mounts mounts <em>/Users/pulsar_nfs</em> to <em>/Users/test</em>.</p>
+<p>要将数据卸载到 NFS,请执行以下步骤。</p>
+<h3><a class="anchor" aria-hidden="true" id="第-1-步-安装-filesystem-offloader"></a><a href="#第-1-步-安装-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
+<p>更多详细信息,请参阅 <a href="#installation">安装</a>。</p>
+<h3><a class="anchor" aria-hidden="true" id="第-2-步将-nfs-置于本地文件系统"></a><a href="#第-2-步将-nfs-置于本地文件系统" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.2 [...]
+<p>此示例将挂载 <em>/Users/pulsar_nfs</em> 到 <em>/Users/test</em>。</p>
 <pre><code class="hljs">mount -e <span class="hljs-number">192.168</span>.0.<span class="hljs-number">103</span><span class="hljs-symbol">:/Users/test/Users/pulsar_nfs</span><br /></code></pre>    
-<h3><a class="anchor" aria-hidden="true" id="step-3-configure-the-filesystem-offloader-driver"></a><a href="#step-3-configure-the-filesystem-offloader-driver" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9z [...]
-<p>As indicated in the <a href="#configuration">configuration</a> section, you need to configure some properties for the filesystem offloader driver before using it. This tutorial assumes that you have configured the filesystem offloader driver as below and run Pulsar in <strong>standalone</strong> mode.</p>
+<h3><a class="anchor" aria-hidden="true" id="第-3-步-配置-filesystem-offloader-驱动程序"></a><a href="#第-3-步-配置-filesystem-offloader-驱动程序" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5 [...]
+<p>正如 <a href="#configuration">配置</a> 部分所指明的那样,需要先配置  filesystem offloader 驱动程序的一些属性,然后才能使用。 本教程假设您已按以下方式配置  filesystem offloader 驱动程序,并在<strong>独立</strong>模式下运行 Pulsar。</p>
 <ol>
-<li>Set the following configurations in the <code>conf/standalone.conf</code> file.</li>
+<li>在 <code>conf/standalone.conf</code> 文件中设置以下配置。</li>
 </ol>
 <pre><code class="hljs css language-conf"><span class="hljs-attr">managedLedgerOffloadDriver</span>=filesystem<br /><span class="hljs-attr">fileSystemProfilePath</span>=../conf/filesystem_<span class="hljs-literal">off</span>load_core_site.xml<br /></code></pre>    
 <ol start="2">
-<li>Modify the <em>filesystem_offload_core_site.xml</em> as follows.</li>
+<li>修改 <em>filesystem_offload_core_site.xml</em>,如下所示。</li>
 </ol>
 <pre><code class="hljs"><span class="hljs-tag">&lt;<span class="hljs-name">property</span>&gt;</span><br />    <span class="hljs-tag">&lt;<span class="hljs-name">name</span>&gt;</span>fs.defaultFS<span class="hljs-tag">&lt;/<span class="hljs-name">name</span>&gt;</span><br />    <span class="hljs-tag">&lt;<span class="hljs-name">value</span>&gt;</span>file:///<span class="hljs-tag">&lt;/<span class="hljs-name">value</span>&gt;</span><br /><span class="hljs-tag">&lt;/<span class="hljs-nam [...]
 </span></div></div></div></div>
-<h3><a class="anchor" aria-hidden="true" id="step-4-offload-data-from-bookkeeper-to-filesystem"></a><a href="#step-4-offload-data-from-bookkeeper-to-filesystem" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4  [...]
-<p>Execute the following commands in the repository where you download Pulsar tarball. For example, <code>~/path/to/apache-pulsar-2.5.1</code>.</p>
+<h3><a class="anchor" aria-hidden="true" id="第-4-步将数据从-bookkeeper-卸载到文件系统"></a><a href="#第-4-步将数据从-bookkeeper-卸载到文件系统" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 [...]
+<p>在下载 Pulsar tar 包的仓库中执行以下命令。 例如, <code>~/path/to/apache-pulsar-2.5.1</code>。</p>
 <ol>
 <li><p>启动 Pulsar 单机模式。</p>
 <pre><code class="hljs">./bin/pulsar standalone -a <span class="hljs-number">127.0</span><span class="hljs-number">.0</span><span class="hljs-number">.1</span>
 </code></pre></li>
-<li><p>To ensure the data generated is not deleted immediately, it is recommended to set the <a href="https://pulsar.apache.org/docs/en/next/cookbooks-retention-expiry/#retention-policies">retention policy</a>, which can be either a <strong>size</strong> limit or a <strong>time</strong> limit. The larger value you set for the retention policy, the longer the data can be retained.</p>
+<li><p>为了确保生成的数据不会立即被删除,建议设置 <a href="https://pulsar.apache.org/docs/en/next/cookbooks-retention-expiry/#retention-policies">保留策略</a>, 可以是 <strong>大小</strong> 限制或 <strong>时间</strong> 限制。 为保留策略设定的值越大,数据保留的时间越长。</p>
 <pre><code class="hljs">./<span class="hljs-string">bin/</span><span class="hljs-string">pulsarctl </span><span class="hljs-string">namespaces </span><span class="hljs-built_in">set-retention</span> <span class="hljs-string">public/</span><span class="hljs-string">default </span><span class="hljs-built_in">--size</span> <span class="hljs-string">100M </span><span class="hljs-built_in">--time</span> <span class="hljs-string">2d
 </span></code></pre>
 <blockquote>
 <p><strong>提示</strong></p>
-<p>For more information about the <code>pulsarctl namespaces set-retention options</code> command, including flags, descriptions, default values, and shorthands, see <a href="https://docs.streamnative.io/pulsarctl/v2.7.0.6/#-em-set-retention-em-">here</a>.</p>
+<p>关于 <code>pulsar-admin namespaces set-offload-threshold options</code> 命令的更多信息,包括标志、描述、默认值和速记方法,参见<a href="https://docs.streamnative.io/pulsarctl/v2.7.0.6/#-em-set-retention-em-">这里</a>。</p>
 </blockquote></li>
-<li><p>Produce data using pulsar-client.</p>
+<li><p>使用 pulsar-client 生成数据。</p>
 <pre><code class="hljs">./bin/pulsar-client produce -m <span class="hljs-string">"Hello FileSystem Offloader"</span> -n <span class="hljs-number">1000</span> <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre></li>
-<li><p>The offloading operation starts after a ledger rollover is triggered. To ensure offload data successfully, it is recommended that you wait until several ledger rollovers are triggered. In this case, you might need to wait for a second. You can check the ledger status using pulsarctl.</p>
+<li><p>卸载操作在触发 ledger 切换后开始。 为了确保卸载数据成功,建议您等待多个 ledger 切换被触发。 在这种情况下,可能需要等待一秒钟。 您可以使用 pulsarctl 检查 ledger 状态。</p>
 <pre><code class="hljs">./bin/pulsarctl topics internal-stats <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre>
 <p><strong>输出</strong></p>
-<p>The data of the ledger 696 is not offloaded.</p>
+<p>ledger 696 的数据未卸载。</p>
 <pre><code class="hljs">{
 <span class="hljs-attr">"version"</span>: <span class="hljs-number">1</span>,
 <span class="hljs-attr">"creationDate"</span>: <span class="hljs-string">"2020-06-16T21:46:25.807+08:00"</span>,
@@ -302,14 +302,14 @@ Reason: <span class="hljs-builtin-name">Error</span> offloading: org.apache.book
 <span class="hljs-attr">"cursors"</span>: {}
 }
 </code></pre></li>
-<li><p>Wait a second and send more messages to the topic.</p>
+<li><p>请稍等,然后向 topic 发送更多消息。</p>
 <pre><code class="hljs">./bin/pulsar-client produce -m <span class="hljs-string">"Hello FileSystem Offloader"</span> -n <span class="hljs-number">1000</span> <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre></li>
-<li><p>Check the ledger status using pulsarctl.</p>
+<li><p>使用 pulsarctl 检查 ledger 状态。</p>
 <pre><code class="hljs">./bin/pulsarctl topics internal-stats <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre>
 <p><strong>输出</strong></p>
-<p>The ledger 696 is rollovered.</p>
+<p>ledger 696已经切换。</p>
 <pre><code class="hljs">{
 <span class="hljs-attr">"version"</span>: <span class="hljs-number">2</span>,
 <span class="hljs-attr">"creationDate"</span>: <span class="hljs-string">"2020-06-16T21:46:25.807+08:00"</span>,
@@ -329,19 +329,19 @@ Reason: <span class="hljs-builtin-name">Error</span> offloading: org.apache.book
 <span class="hljs-attr">"cursors"</span>: {}
 }
 </code></pre></li>
-<li><p>Trigger the offloading operation manually using pulsarctl.</p>
+<li><p>使用 pulsarctl 手动触发卸载操作。</p>
 <pre><code class="hljs">./bin/pulsarctl topic offload -s <span class="hljs-number">0</span> <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre>
 <p><strong>输出</strong></p>
-<p>Data in ledgers before the ledge 697 is offloaded.</p>
+<p>ledger 中的数据先于 ledge 697 已卸载。</p>
 <pre><code class="hljs"><span class="hljs-comment"># offload info, the ledgers before 697 will be offloaded</span>
 Offload triggered <span class="hljs-keyword">for</span> persistent:<span class="hljs-regexp">//</span>public<span class="hljs-regexp">/default/</span>fs-test3 <span class="hljs-keyword">for</span> messages before <span class="hljs-number">697</span>:<span class="hljs-number">0</span>:-<span class="hljs-number">1</span>
 </code></pre></li>
-<li><p>Check the ledger status using pulsarctl.</p>
+<li><p>使用 pulsarctl 检查 ledger 状态。</p>
 <pre><code class="hljs">./bin/pulsarctl topic <span class="hljs-type">internal</span>-<span class="hljs-keyword">info</span> <span class="hljs-built_in">public</span>/<span class="hljs-keyword">default</span>/fs-test
 </code></pre>
 <p><strong>输出</strong></p>
-<p>The data of the ledger 696 is offloaded.</p>
+<p>ledger 696 的数据已卸载。</p>
 <pre><code class="hljs">{
 <span class="hljs-attr">"version"</span>: <span class="hljs-number">4</span>,
 <span class="hljs-attr">"creationDate"</span>: <span class="hljs-string">"2020-06-16T21:46:25.807+08:00"</span>,
@@ -361,10 +361,10 @@ Offload triggered <span class="hljs-keyword">for</span> persistent:<span class="
 <span class="hljs-attr">"cursors"</span>: {}
 }
 </code></pre>
-<p>And the <strong>Capacity Used</strong> is changed from 4 KB to 116.46 KB.</p>
+<p>并且 <strong>所用容量</strong> 已经从 4 KB 变成 116.46 KB。</p>
 <p><img src="/docs/assets/FileSystem-8.png" alt=""></p></li>
 </ol>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.7.0/tiered-storage-gcs"><span class="arrow-prev">← </span><span>GCS offloader</span></a><a class="docs-next button" href="/docs/zh-CN/2.7.0/tiered-storage-azure"><span class="function-name-prevnext">Azure BlobStore offloader</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#安装">安装</a><ul class="toc-headings"><li> [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.7.0/tiered-storage-gcs"><span class="arrow-prev">← </span><span>GCS offloader</span></a><a class="docs-next button" href="/docs/zh-CN/2.7.0/tiered-storage-azure"><span class="function-name-prevnext">Azure BlobStore offloader</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#安装">安装</a><ul class="toc-headings"><li> [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.7.0/tiered-storage-filesystem/index.html b/content/docs/zh-CN/2.7.0/tiered-storage-filesystem/index.html
index 344f920..d86cde3 100644
--- a/content/docs/zh-CN/2.7.0/tiered-storage-filesystem/index.html
+++ b/content/docs/zh-CN/2.7.0/tiered-storage-filesystem/index.html
@@ -142,27 +142,27 @@ ls offloaders
 </ul>
 <h3><a class="anchor" aria-hidden="true" id="自动运行-filesystem-offloader"></a><a href="#自动运行-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c [...]
 <p>您可以将命名空间策略配置为在达到阈值后自动卸载数据。 该阈值基于一个 topic 在 Pulsar 集群的数据存储大小而定。 一旦 topic 到达阈值,就自动触发卸载操作。</p>
-<p>Threshold value|Action |---|--- | &gt; 0 | It triggers the offloading operation if the topic storage reaches its threshold. = 0| 它使 broker 竭尽全力地 offload 数据。 &lt; 0 |It disables automatic offloading operation.</p>
-<p>Automatic offload runs when a new segment is added to a topic log. If you set the threshold on a namespace, but few messages are being produced to the topic, the filesystem offloader does not work until the current segment is full.</p>
-<p>You can configure the threshold using CLI tools, such as pulsar-admin.</p>
+<p>阈值|动作 |---|--- | &gt; 0 | 如果 topic 存储达到其阈值,它就会触发卸载操作。 = 0| 它使 broker 竭尽全力地 offload 数据。 &lt; 0 | 它将禁用自动卸载操作。</p>
+<p>Automatic offload runs when a new segment is added to a topic log. 如果在命名空间上设置了阈值,但向该 topic 生产的消息很少,filesystem offloader 将会停止工作,直至当前 segment 达到饱和。</p>
+<p>通过命令行工具(CLI)可以设置阈值大小,比如 pulsar-admin。</p>
 <h4><a class="anchor" aria-hidden="true" id="示例"></a><a href="#示例" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c [...]
-<p>This example sets the filesystem offloader threshold to 10 MB using pulsar-admin.</p>
+<p>该示例使用 pulsar-admin 将 filesystem offloader 的阈值大小设置为 10 MB。</p>
 <pre><code class="hljs css language-bash">pulsar-admin namespaces <span class="hljs-built_in">set</span>-offload-threshold --size 10M my-tenant/my-namespace
 </code></pre>
 <blockquote>
 <h4><a class="anchor" aria-hidden="true" id="提示"></a><a href="#提示" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c [...]
 <p>关于 <code>pulsar-admin namespaces set-offload-threshold options</code> 命令的更多信息,包括标志、描述、默认值和速记方法,见<a href="/docs/zh-CN/2.7.0/pulsar-admin#set-offload-threshold">这里</a>。</p>
 </blockquote>
-<h3><a class="anchor" aria-hidden="true" id="run-filesystem-offloader-manually"></a><a href="#run-filesystem-offloader-manually" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S1 [...]
-<p>For individual topics, you can trigger the filesystem offloader manually using one of the following methods:</p>
+<h3><a class="anchor" aria-hidden="true" id="手动运行-filesystem-offloader"></a><a href="#手动运行-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c [...]
+<p>对于每一个 topic,使用下列方法之一可以手动触发 filesystem offloader:</p>
 <ul>
-<li><p>Use the REST endpoint.</p></li>
+<li><p>使用 REST 端点。</p></li>
 <li><p>使用命令行工具(例如 pulsar-admin)。</p></li>
 </ul>
-<p>To manually trigger the filesystem offloader via CLI tools, you need to specify the maximum amount of data (threshold) that should be retained on a Pulsar cluster for a topic. 如果 Pulsar 集群上 topic 的数据大小超过了这个阈值,那么该 topic 下的 segment 就会被陆续卸载到 filesystem 上,直到不再超过这个阈值。 优先卸载旧的 segment。</p>
+<p>要想用命令行工具触发 filesystem offloader,需要指定一个 topic 应该保留在 Pulsar 集群中的最大数据量(阈值)。 如果 Pulsar 集群上 topic 的数据大小超过了这个阈值,那么该 topic 下的 segment 就会被陆续卸载到 filesystem 上,直到不再超过这个阈值。 优先卸载旧的 segment。</p>
 <h4><a class="anchor" aria-hidden="true" id="示例-1"></a><a href="#示例-1" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
 <ul>
-<li><p>This example manually run the filesystem offloader using pulsar-admin.</p>
+<li><p>此示例使用 pulsar-admin 手动运行 filesystem offloader。</p>
 <pre><code class="hljs css language-bash">pulsar-admin topics offload --size-threshold 10M persistent://my-tenant/my-namespace/topic1
 </code></pre>
 <p><strong>输出</strong></p>
@@ -199,96 +199,96 @@ Reason: <span class="hljs-builtin-name">Error</span> offloading: org.apache.book
 </blockquote></li>
 </ul>
 <h2><a class="anchor" aria-hidden="true" id="教程"></a><a href="#教程" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c [...]
-<p>This section provides step-by-step instructions on how to use the filesystem offloader to move data from Pulsar to Hadoop Distributed File System (HDFS) or Network File system (NFS).</p>
-<pre><code class="hljs">&lt;div class=&quot;tabs&quot;&gt;&lt;div class=&quot;nav-tabs&quot;&gt;&lt;div id=&quot;tab-group-25969-tab-25970&quot; class=&quot;nav-link active&quot; data-group=&quot;group_25969&quot; data-tab=&quot;tab-group-25969-content-25970&quot;&gt;HDFS&lt;/div&gt;&lt;div id=&quot;tab-group-25969-tab-25971&quot; class=&quot;nav-link&quot; data-group=&quot;group_25969&quot; data-tab=&quot;tab-group-25969-content-25971&quot;&gt;NFS&lt;/div&gt;&lt;/div&gt;&lt;div class=&q [...]
+<p>本节提供有关如何使用  filesystem offloader  将数据从 Pulsar 移动到 Hadoop 分布式文件系统(HDFS)或网络文件系统(NFS)的分步说明。</p>
+<pre><code class="hljs">&lt;div class=&quot;tabs&quot;&gt;&lt;div class=&quot;nav-tabs&quot;&gt;&lt;div id=&quot;tab-group-25969-tab-25970&quot; class=&quot;nav-link active&quot; data-group=&quot;group_25969&quot; data-tab=&quot;tab-group-25969-content-25970&quot;&gt;HDFS&lt;/div&gt;&lt;div id=&quot;tab-group-25969-tab-25971&quot; class=&quot;nav-link&quot; data-group=&quot;group_25969&quot; data-tab=&quot;tab-group-25969-content-25971&quot;&gt;NFS&lt;/div&gt;&lt;/div&gt;&lt;div class=&q [...]
 </code></pre>
-<p><h3><a class="anchor" aria-hidden="true" id="step-1-prepare-the-hdfs-environment"></a><a href="#step-1-prepare-the-hdfs-environment" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22  [...]
-<p>This tutorial sets up a Hadoop single node cluster and uses Hadoop 3.2.1.</p>
+<p><h3><a class="anchor" aria-hidden="true" id="第-1-步准备-hdfs-环境"></a><a href="#第-1-步准备-hdfs-环境" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2 [...]
+<p>本教程使用 Hadoop 3.2.1设置一个 Hadoop 单个节点集群。</p>
 <blockquote>
 <p><strong>提示</strong></p>
-<p>For details about how to set up a Hadoop single node cluster, see <a href="https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html">here</a>.</p>
+<p>有关如何设置 Hadoop 单节点集群的详细信息,请参见<a href="https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html">此处</a>。</p>
 </blockquote>
 <ol>
-<li>Download and uncompress Hadoop 3.2.1.</li>
+<li>下载并解压缩 Hadoop 3.2.1。</li>
 </ol>
 <pre><code class="hljs">wget <span class="hljs-symbol">https:</span>/<span class="hljs-regexp">/mirrors.bfsu.edu.cn/apache</span><span class="hljs-regexp">/hadoop/common</span><span class="hljs-regexp">/hadoop-3.2.1/hadoop</span><span class="hljs-number">-3.2</span>.<span class="hljs-number">1</span>.tar.gz  <br /><br />tar -zxvf hadoop<span class="hljs-number">-3.2</span>.<span class="hljs-number">1</span>.tar.gz -C <span class="hljs-variable">$HADOOP_HOME</span><br /></code></pre>    
 <ol start="2">
-<li>Configure Hadoop.</li>
+<li>配置 Hadoop。</li>
 </ol>
 <pre><code class="hljs"><span class="hljs-meta"># $HADOOP_HOME/etc/hadoop/core-site.xml</span><br /><span class="hljs-params">&lt;configuration&gt;</span><br />    <span class="hljs-params">&lt;property&gt;</span><br />        <span class="hljs-params">&lt;name&gt;</span>fs.defaultFS<span class="hljs-params">&lt;/name&gt;</span><br />        <span class="hljs-params">&lt;value&gt;</span>hdfs:<span class="hljs-comment">//localhost:9000&lt;/value&gt;</span><br />    <span class="hljs-param [...]
 <ol start="3">
-<li>Set passphraseless ssh.</li>
+<li>设置无密码 ssh。</li>
 </ol>
-<pre><code class="hljs"><span class="hljs-comment"># Now check that you can ssh to the localhost without a passphrase:</span><br /><span class="hljs-variable">$ </span>ssh localhost<br /><span class="hljs-comment"># If you cannot ssh to localhost without a passphrase, execute the following commands</span><br /><span class="hljs-variable">$ </span>ssh-keygen -t rsa -P <span class="hljs-string">''</span> -f ~<span class="hljs-regexp">/.ssh/id</span>_rsa<br /><span class="hljs-variable">$ < [...]
+<pre><code class="hljs"><span class="hljs-comment"># 现在检查无需密码是否可以使用 ssh 连接到 localhost:</span><br /><span class="hljs-variable">$ </span>ssh localhost<br /><span class="hljs-comment"># 如果在无密码的情况下无法 ssh 连接到 localhost,请执行以下命令</span><br /><span class="hljs-variable">$ </span>ssh-keygen -t rsa -P <span class="hljs-string">''</span> -f ~<span class="hljs-regexp">/.ssh/id</span>_rsa<br /><span class="hljs-variable">$ </span>cat ~<span class="hljs-regexp">/.ssh/id</span>_rsa.pub &gt;&gt; ~<span  [...]
 <ol start="4">
-<li>Start HDFS.</li>
+<li>启动 HDFS。</li>
 </ol>
-<pre><code class="hljs"><span class="hljs-comment"># don't execute this command repeatedly, repeat execute will cauld the clusterId of the datanode is not consistent with namenode</span><br /><span class="hljs-variable">$HADOOP_HOME</span><span class="hljs-regexp">/bin/</span>hadoop namenode -format<br /><span class="hljs-variable">$HADOOP_HOME</span><span class="hljs-regexp">/sbin/</span>start-dfs.sh<br /></code></pre>    
+<pre><code class="hljs"><span class="hljs-comment"># 不重复执行此命令, 重复执行会捕获数据集群标识符与命名方式</span><br /><span class="hljs-variable">$HADOOP_HOME</span><span class="hljs-regexp">/bin/</span>hadoop namenode -format<br /><span class="hljs-variable">$HADOOP_HOME</span><span class="hljs-regexp">/sbin/</span>start-dfs.sh<br /></code></pre>    
 <ol start="5">
-<li>Navigate to the <a href="http://localhost:9870/">HDFS website</a>.</li>
+<li>导航到 <a href="http://localhost:9870/">HDFS 网站</a>。</li>
 </ol>
-<p>You can see the <strong>Overview</strong> page.</p>
+<p>您可以查看 <strong>概述</strong> 页面。</p>
 <p><img src="/docs/assets/FileSystem-1.png" alt=""></p>
 <ol>
-<li><p>At the top navigation bar, click <strong>Datanodes</strong> to check DataNode information.</p>
+<li><p>在顶部导航栏,单击 <strong>数据节点</strong> 查看数据节点信息。</p>
 <p><img src="/docs/assets/FileSystem-2.png" alt=""></p></li>
-<li><p>Click <strong>HTTP Address</strong> to get more detailed information about localhost:9866.</p>
-<p>As can be seen below, the size of <strong>Capacity Used</strong> is 4 KB, which is the initial value.</p>
+<li><p>单击 <strong>HTTP 地址</strong> 获取更多关于 localhost:9866 的详细信息。</p>
+<p>如下文所示, <strong>所用容量</strong> 的大小是 4 KB,它是初始值。</p>
 <p><img src="/docs/assets/FileSystem-3.png" alt=""></p></li>
 </ol>
-<h3><a class="anchor" aria-hidden="true" id="step-2-install-the-filesystem-offloader"></a><a href="#step-2-install-the-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2  [...]
-<p>For details, see <a href="#installation">installation</a>.</p>
-<h3><a class="anchor" aria-hidden="true" id="step-3-configure-the-filesystem-offloader"></a><a href="#step-3-configure-the-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1  [...]
-<p>As indicated in the <a href="#configuration">configuration</a> section, you need to configure some properties for the filesystem offloader driver before using it. This tutorial assumes that you have configured the filesystem offloader driver as below and run Pulsar in <strong>standalone</strong> mode.</p>
-<p>Set the following configurations in the <code>conf/standalone.conf</code> file.</p>
+<h3><a class="anchor" aria-hidden="true" id="第-2-步-安装-filesystem-offloader"></a><a href="#第-2-步-安装-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
+<p>更多详细信息,请参阅 <a href="#installation">安装</a>。</p>
+<h3><a class="anchor" aria-hidden="true" id="第-3-步-配置-filesystem-offloader"></a><a href="#第-3-步-配置-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
+<p>正如 <a href="#configuration">配置</a> 部分所指明的那样,需要先配置  filesystem offloader 驱动程序的一些属性,然后才能使用。 本教程假设您已按以下方式配置  filesystem offloader 驱动程序,并在<strong>独立</strong>模式下运行 Pulsar。</p>
+<p>在 <code>conf/standalone.conf</code> 文件中设置以下配置。</p>
 <pre><code class="hljs css language-conf"><span class="hljs-attr">managedLedgerOffloadDriver</span>=filesystem<br /><span class="hljs-attr">fileSystemURI</span>=hdfs://<span class="hljs-number">127.0</span>.<span class="hljs-number">0.1</span>:<span class="hljs-number">9000</span><br /><span class="hljs-attr">fileSystemProfilePath</span>=../conf/filesystem_<span class="hljs-literal">off</span>load_core_site.xml<br /></code></pre>    
 <blockquote>
 <p><strong>Note</strong></p>
-<p>For testing purposes, you can set the following two configurations to speed up ledger rollover, but it is not recommended that you set them in the production environment.</p>
+<p>为测试目的,您可以设置以下两个配置来加速 ledger 切换, 但不建议在生产环境中设置它们。</p>
 </blockquote>
 <pre><code class="hljs"><span class="hljs-attr">managedLedgerMinLedgerRolloverTimeMinutes</span>=<span class="hljs-number">1</span><br /><span class="hljs-attr">managedLedgerMaxEntriesPerLedger</span>=<span class="hljs-number">100</span><br /></code></pre>    
 </span></div></div><div id="tab-group-25969-content-25971" class="tab-pane" data-group="group_25969" tabindex="-1"><div><span><blockquote>
 <p><strong>Note</strong></p>
-<p>In this section, it is assumed that you have enabled NFS service and set the shared path of your NFS service. In this section, <code>/Users/test</code> is used as the shared path of NFS service.</p>
+<p>在本节中,假定您已启用 NFS 服务并设置 NFS 服务的共享路径。 在本节中, <code>/Users/test</code> 被用作 NFS 服务的共享路径。</p>
 </blockquote>
-<p>To offload data to NFS, follow these steps.</p>
-<h3><a class="anchor" aria-hidden="true" id="step-1-install-the-filesystem-offloader"></a><a href="#step-1-install-the-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2  [...]
-<p>For details, see <a href="#installation">installation</a>.</p>
-<h3><a class="anchor" aria-hidden="true" id="step-2-mont-your-nfs-to-your-local-filesystem"></a><a href="#step-2-mont-your-nfs-to-your-local-filesystem" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h- [...]
-<p>This example mounts mounts <em>/Users/pulsar_nfs</em> to <em>/Users/test</em>.</p>
+<p>要将数据卸载到 NFS,请执行以下步骤。</p>
+<h3><a class="anchor" aria-hidden="true" id="第-1-步-安装-filesystem-offloader"></a><a href="#第-1-步-安装-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
+<p>更多详细信息,请参阅 <a href="#installation">安装</a>。</p>
+<h3><a class="anchor" aria-hidden="true" id="第-2-步将-nfs-置于本地文件系统"></a><a href="#第-2-步将-nfs-置于本地文件系统" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.2 [...]
+<p>此示例将挂载 <em>/Users/pulsar_nfs</em> 到 <em>/Users/test</em>。</p>
 <pre><code class="hljs">mount -e <span class="hljs-number">192.168</span>.0.<span class="hljs-number">103</span><span class="hljs-symbol">:/Users/test/Users/pulsar_nfs</span><br /></code></pre>    
-<h3><a class="anchor" aria-hidden="true" id="step-3-configure-the-filesystem-offloader-driver"></a><a href="#step-3-configure-the-filesystem-offloader-driver" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9z [...]
-<p>As indicated in the <a href="#configuration">configuration</a> section, you need to configure some properties for the filesystem offloader driver before using it. This tutorial assumes that you have configured the filesystem offloader driver as below and run Pulsar in <strong>standalone</strong> mode.</p>
+<h3><a class="anchor" aria-hidden="true" id="第-3-步-配置-filesystem-offloader-驱动程序"></a><a href="#第-3-步-配置-filesystem-offloader-驱动程序" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5 [...]
+<p>正如 <a href="#configuration">配置</a> 部分所指明的那样,需要先配置  filesystem offloader 驱动程序的一些属性,然后才能使用。 本教程假设您已按以下方式配置  filesystem offloader 驱动程序,并在<strong>独立</strong>模式下运行 Pulsar。</p>
 <ol>
-<li>Set the following configurations in the <code>conf/standalone.conf</code> file.</li>
+<li>在 <code>conf/standalone.conf</code> 文件中设置以下配置。</li>
 </ol>
 <pre><code class="hljs css language-conf"><span class="hljs-attr">managedLedgerOffloadDriver</span>=filesystem<br /><span class="hljs-attr">fileSystemProfilePath</span>=../conf/filesystem_<span class="hljs-literal">off</span>load_core_site.xml<br /></code></pre>    
 <ol start="2">
-<li>Modify the <em>filesystem_offload_core_site.xml</em> as follows.</li>
+<li>修改 <em>filesystem_offload_core_site.xml</em>,如下所示。</li>
 </ol>
 <pre><code class="hljs"><span class="hljs-tag">&lt;<span class="hljs-name">property</span>&gt;</span><br />    <span class="hljs-tag">&lt;<span class="hljs-name">name</span>&gt;</span>fs.defaultFS<span class="hljs-tag">&lt;/<span class="hljs-name">name</span>&gt;</span><br />    <span class="hljs-tag">&lt;<span class="hljs-name">value</span>&gt;</span>file:///<span class="hljs-tag">&lt;/<span class="hljs-name">value</span>&gt;</span><br /><span class="hljs-tag">&lt;/<span class="hljs-nam [...]
 </span></div></div></div></div>
-<h3><a class="anchor" aria-hidden="true" id="step-4-offload-data-from-bookkeeper-to-filesystem"></a><a href="#step-4-offload-data-from-bookkeeper-to-filesystem" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4  [...]
-<p>Execute the following commands in the repository where you download Pulsar tarball. For example, <code>~/path/to/apache-pulsar-2.5.1</code>.</p>
+<h3><a class="anchor" aria-hidden="true" id="第-4-步将数据从-bookkeeper-卸载到文件系统"></a><a href="#第-4-步将数据从-bookkeeper-卸载到文件系统" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 [...]
+<p>在下载 Pulsar tar 包的仓库中执行以下命令。 例如, <code>~/path/to/apache-pulsar-2.5.1</code>。</p>
 <ol>
 <li><p>启动 Pulsar 单机模式。</p>
 <pre><code class="hljs">./bin/pulsar standalone -a <span class="hljs-number">127.0</span><span class="hljs-number">.0</span><span class="hljs-number">.1</span>
 </code></pre></li>
-<li><p>To ensure the data generated is not deleted immediately, it is recommended to set the <a href="https://pulsar.apache.org/docs/en/next/cookbooks-retention-expiry/#retention-policies">retention policy</a>, which can be either a <strong>size</strong> limit or a <strong>time</strong> limit. The larger value you set for the retention policy, the longer the data can be retained.</p>
+<li><p>为了确保生成的数据不会立即被删除,建议设置 <a href="https://pulsar.apache.org/docs/en/next/cookbooks-retention-expiry/#retention-policies">保留策略</a>, 可以是 <strong>大小</strong> 限制或 <strong>时间</strong> 限制。 为保留策略设定的值越大,数据保留的时间越长。</p>
 <pre><code class="hljs">./<span class="hljs-string">bin/</span><span class="hljs-string">pulsarctl </span><span class="hljs-string">namespaces </span><span class="hljs-built_in">set-retention</span> <span class="hljs-string">public/</span><span class="hljs-string">default </span><span class="hljs-built_in">--size</span> <span class="hljs-string">100M </span><span class="hljs-built_in">--time</span> <span class="hljs-string">2d
 </span></code></pre>
 <blockquote>
 <p><strong>提示</strong></p>
-<p>For more information about the <code>pulsarctl namespaces set-retention options</code> command, including flags, descriptions, default values, and shorthands, see <a href="https://docs.streamnative.io/pulsarctl/v2.7.0.6/#-em-set-retention-em-">here</a>.</p>
+<p>关于 <code>pulsar-admin namespaces set-offload-threshold options</code> 命令的更多信息,包括标志、描述、默认值和速记方法,参见<a href="https://docs.streamnative.io/pulsarctl/v2.7.0.6/#-em-set-retention-em-">这里</a>。</p>
 </blockquote></li>
-<li><p>Produce data using pulsar-client.</p>
+<li><p>使用 pulsar-client 生成数据。</p>
 <pre><code class="hljs">./bin/pulsar-client produce -m <span class="hljs-string">"Hello FileSystem Offloader"</span> -n <span class="hljs-number">1000</span> <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre></li>
-<li><p>The offloading operation starts after a ledger rollover is triggered. To ensure offload data successfully, it is recommended that you wait until several ledger rollovers are triggered. In this case, you might need to wait for a second. You can check the ledger status using pulsarctl.</p>
+<li><p>卸载操作在触发 ledger 切换后开始。 为了确保卸载数据成功,建议您等待多个 ledger 切换被触发。 在这种情况下,可能需要等待一秒钟。 您可以使用 pulsarctl 检查 ledger 状态。</p>
 <pre><code class="hljs">./bin/pulsarctl topics internal-stats <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre>
 <p><strong>输出</strong></p>
-<p>The data of the ledger 696 is not offloaded.</p>
+<p>ledger 696 的数据未卸载。</p>
 <pre><code class="hljs">{
 <span class="hljs-attr">"version"</span>: <span class="hljs-number">1</span>,
 <span class="hljs-attr">"creationDate"</span>: <span class="hljs-string">"2020-06-16T21:46:25.807+08:00"</span>,
@@ -302,14 +302,14 @@ Reason: <span class="hljs-builtin-name">Error</span> offloading: org.apache.book
 <span class="hljs-attr">"cursors"</span>: {}
 }
 </code></pre></li>
-<li><p>Wait a second and send more messages to the topic.</p>
+<li><p>请稍等,然后向 topic 发送更多消息。</p>
 <pre><code class="hljs">./bin/pulsar-client produce -m <span class="hljs-string">"Hello FileSystem Offloader"</span> -n <span class="hljs-number">1000</span> <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre></li>
-<li><p>Check the ledger status using pulsarctl.</p>
+<li><p>使用 pulsarctl 检查 ledger 状态。</p>
 <pre><code class="hljs">./bin/pulsarctl topics internal-stats <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre>
 <p><strong>输出</strong></p>
-<p>The ledger 696 is rollovered.</p>
+<p>ledger 696已经切换。</p>
 <pre><code class="hljs">{
 <span class="hljs-attr">"version"</span>: <span class="hljs-number">2</span>,
 <span class="hljs-attr">"creationDate"</span>: <span class="hljs-string">"2020-06-16T21:46:25.807+08:00"</span>,
@@ -329,19 +329,19 @@ Reason: <span class="hljs-builtin-name">Error</span> offloading: org.apache.book
 <span class="hljs-attr">"cursors"</span>: {}
 }
 </code></pre></li>
-<li><p>Trigger the offloading operation manually using pulsarctl.</p>
+<li><p>使用 pulsarctl 手动触发卸载操作。</p>
 <pre><code class="hljs">./bin/pulsarctl topic offload -s <span class="hljs-number">0</span> <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre>
 <p><strong>输出</strong></p>
-<p>Data in ledgers before the ledge 697 is offloaded.</p>
+<p>ledger 中的数据先于 ledge 697 已卸载。</p>
 <pre><code class="hljs"><span class="hljs-comment"># offload info, the ledgers before 697 will be offloaded</span>
 Offload triggered <span class="hljs-keyword">for</span> persistent:<span class="hljs-regexp">//</span>public<span class="hljs-regexp">/default/</span>fs-test3 <span class="hljs-keyword">for</span> messages before <span class="hljs-number">697</span>:<span class="hljs-number">0</span>:-<span class="hljs-number">1</span>
 </code></pre></li>
-<li><p>Check the ledger status using pulsarctl.</p>
+<li><p>使用 pulsarctl 检查 ledger 状态。</p>
 <pre><code class="hljs">./bin/pulsarctl topic <span class="hljs-type">internal</span>-<span class="hljs-keyword">info</span> <span class="hljs-built_in">public</span>/<span class="hljs-keyword">default</span>/fs-test
 </code></pre>
 <p><strong>输出</strong></p>
-<p>The data of the ledger 696 is offloaded.</p>
+<p>ledger 696 的数据已卸载。</p>
 <pre><code class="hljs">{
 <span class="hljs-attr">"version"</span>: <span class="hljs-number">4</span>,
 <span class="hljs-attr">"creationDate"</span>: <span class="hljs-string">"2020-06-16T21:46:25.807+08:00"</span>,
@@ -361,10 +361,10 @@ Offload triggered <span class="hljs-keyword">for</span> persistent:<span class="
 <span class="hljs-attr">"cursors"</span>: {}
 }
 </code></pre>
-<p>And the <strong>Capacity Used</strong> is changed from 4 KB to 116.46 KB.</p>
+<p>并且 <strong>所用容量</strong> 已经从 4 KB 变成 116.46 KB。</p>
 <p><img src="/docs/assets/FileSystem-8.png" alt=""></p></li>
 </ol>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.7.0/tiered-storage-gcs"><span class="arrow-prev">← </span><span>GCS offloader</span></a><a class="docs-next button" href="/docs/zh-CN/2.7.0/tiered-storage-azure"><span class="function-name-prevnext">Azure BlobStore offloader</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#安装">安装</a><ul class="toc-headings"><li> [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.7.0/tiered-storage-gcs"><span class="arrow-prev">← </span><span>GCS offloader</span></a><a class="docs-next button" href="/docs/zh-CN/2.7.0/tiered-storage-azure"><span class="function-name-prevnext">Azure BlobStore offloader</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#安装">安装</a><ul class="toc-headings"><li> [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.7.1/tiered-storage-filesystem.html b/content/docs/zh-CN/2.7.1/tiered-storage-filesystem.html
index f9524bc..dd1d181 100644
--- a/content/docs/zh-CN/2.7.1/tiered-storage-filesystem.html
+++ b/content/docs/zh-CN/2.7.1/tiered-storage-filesystem.html
@@ -142,27 +142,27 @@ ls offloaders
 </ul>
 <h3><a class="anchor" aria-hidden="true" id="自动运行-filesystem-offloader"></a><a href="#自动运行-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c [...]
 <p>您可以将命名空间策略配置为在达到阈值后自动卸载数据。 该阈值基于一个 topic 在 Pulsar 集群的数据存储大小而定。 一旦 topic 到达阈值,就自动触发卸载操作。</p>
-<p>Threshold value|Action |---|--- | &gt; 0 | It triggers the offloading operation if the topic storage reaches its threshold. = 0| 它使 broker 竭尽全力地 offload 数据。 &lt; 0 |It disables automatic offloading operation.</p>
-<p>Automatic offload runs when a new segment is added to a topic log. If you set the threshold on a namespace, but few messages are being produced to the topic, the filesystem offloader does not work until the current segment is full.</p>
-<p>You can configure the threshold using CLI tools, such as pulsar-admin.</p>
+<p>阈值|动作 |---|--- | &gt; 0 | 如果 topic 存储达到其阈值,它就会触发卸载操作。 = 0| 它使 broker 竭尽全力地 offload 数据。 &lt; 0 | 它将禁用自动卸载操作。</p>
+<p>Automatic offload runs when a new segment is added to a topic log. 如果在命名空间上设置了阈值,但向该 topic 生产的消息很少,filesystem offloader 将会停止工作,直至当前 segment 达到饱和。</p>
+<p>通过命令行工具(CLI)可以设置阈值大小,比如 pulsar-admin。</p>
 <h4><a class="anchor" aria-hidden="true" id="示例"></a><a href="#示例" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c [...]
-<p>This example sets the filesystem offloader threshold to 10 MB using pulsar-admin.</p>
+<p>该示例使用 pulsar-admin 将 filesystem offloader 的阈值大小设置为 10 MB。</p>
 <pre><code class="hljs css language-bash">pulsar-admin namespaces <span class="hljs-built_in">set</span>-offload-threshold --size 10M my-tenant/my-namespace
 </code></pre>
 <blockquote>
 <h4><a class="anchor" aria-hidden="true" id="提示"></a><a href="#提示" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c [...]
 <p>关于 <code>pulsar-admin namespaces set-offload-threshold options</code> 命令的更多信息,包括标志、描述、默认值和速记方法,见<a href="/docs/zh-CN/2.7.1/pulsar-admin#set-offload-threshold">这里</a>。</p>
 </blockquote>
-<h3><a class="anchor" aria-hidden="true" id="run-filesystem-offloader-manually"></a><a href="#run-filesystem-offloader-manually" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S1 [...]
-<p>For individual topics, you can trigger the filesystem offloader manually using one of the following methods:</p>
+<h3><a class="anchor" aria-hidden="true" id="手动运行-filesystem-offloader"></a><a href="#手动运行-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c [...]
+<p>对于每一个 topic,使用下列方法之一可以手动触发 filesystem offloader:</p>
 <ul>
-<li><p>Use the REST endpoint.</p></li>
+<li><p>使用 REST 端点。</p></li>
 <li><p>使用命令行工具(例如 pulsar-admin)。</p></li>
 </ul>
-<p>To manually trigger the filesystem offloader via CLI tools, you need to specify the maximum amount of data (threshold) that should be retained on a Pulsar cluster for a topic. 如果 Pulsar 集群上 topic 的数据大小超过了这个阈值,那么该 topic 下的 segment 就会被陆续卸载到 filesystem 上,直到不再超过这个阈值。 优先卸载旧的 segment。</p>
+<p>要想用命令行工具触发 filesystem offloader,需要指定一个 topic 应该保留在 Pulsar 集群中的最大数据量(阈值)。 如果 Pulsar 集群上 topic 的数据大小超过了这个阈值,那么该 topic 下的 segment 就会被陆续卸载到 filesystem 上,直到不再超过这个阈值。 优先卸载旧的 segment。</p>
 <h4><a class="anchor" aria-hidden="true" id="示例-1"></a><a href="#示例-1" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
 <ul>
-<li><p>This example manually run the filesystem offloader using pulsar-admin.</p>
+<li><p>此示例使用 pulsar-admin 手动运行 filesystem offloader。</p>
 <pre><code class="hljs css language-bash">pulsar-admin topics offload --size-threshold 10M persistent://my-tenant/my-namespace/topic1
 </code></pre>
 <p><strong>输出</strong></p>
@@ -199,96 +199,96 @@ Reason: <span class="hljs-builtin-name">Error</span> offloading: org.apache.book
 </blockquote></li>
 </ul>
 <h2><a class="anchor" aria-hidden="true" id="教程"></a><a href="#教程" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c [...]
-<p>This section provides step-by-step instructions on how to use the filesystem offloader to move data from Pulsar to Hadoop Distributed File System (HDFS) or Network File system (NFS).</p>
-<pre><code class="hljs">&lt;div class=&quot;tabs&quot;&gt;&lt;div class=&quot;nav-tabs&quot;&gt;&lt;div id=&quot;tab-group-25400-tab-25401&quot; class=&quot;nav-link active&quot; data-group=&quot;group_25400&quot; data-tab=&quot;tab-group-25400-content-25401&quot;&gt;HDFS&lt;/div&gt;&lt;div id=&quot;tab-group-25400-tab-25402&quot; class=&quot;nav-link&quot; data-group=&quot;group_25400&quot; data-tab=&quot;tab-group-25400-content-25402&quot;&gt;NFS&lt;/div&gt;&lt;/div&gt;&lt;div class=&q [...]
+<p>本节提供有关如何使用  filesystem offloader  将数据从 Pulsar 移动到 Hadoop 分布式文件系统(HDFS)或网络文件系统(NFS)的分步说明。</p>
+<pre><code class="hljs">&lt;div class=&quot;tabs&quot;&gt;&lt;div class=&quot;nav-tabs&quot;&gt;&lt;div id=&quot;tab-group-25400-tab-25401&quot; class=&quot;nav-link active&quot; data-group=&quot;group_25400&quot; data-tab=&quot;tab-group-25400-content-25401&quot;&gt;HDFS&lt;/div&gt;&lt;div id=&quot;tab-group-25400-tab-25402&quot; class=&quot;nav-link&quot; data-group=&quot;group_25400&quot; data-tab=&quot;tab-group-25400-content-25402&quot;&gt;NFS&lt;/div&gt;&lt;/div&gt;&lt;div class=&q [...]
 </code></pre>
-<p><h3><a class="anchor" aria-hidden="true" id="step-1-prepare-the-hdfs-environment"></a><a href="#step-1-prepare-the-hdfs-environment" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22  [...]
-<p>This tutorial sets up a Hadoop single node cluster and uses Hadoop 3.2.1.</p>
+<p><h3><a class="anchor" aria-hidden="true" id="第-1-步准备-hdfs-环境"></a><a href="#第-1-步准备-hdfs-环境" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2 [...]
+<p>本教程使用 Hadoop 3.2.1设置一个 Hadoop 单个节点集群。</p>
 <blockquote>
 <p><strong>提示</strong></p>
-<p>For details about how to set up a Hadoop single node cluster, see <a href="https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html">here</a>.</p>
+<p>有关如何设置 Hadoop 单节点集群的详细信息,请参见<a href="https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html">此处</a>。</p>
 </blockquote>
 <ol>
-<li>Download and uncompress Hadoop 3.2.1.</li>
+<li>下载并解压缩 Hadoop 3.2.1。</li>
 </ol>
 <pre><code class="hljs">wget <span class="hljs-symbol">https:</span>/<span class="hljs-regexp">/mirrors.bfsu.edu.cn/apache</span><span class="hljs-regexp">/hadoop/common</span><span class="hljs-regexp">/hadoop-3.2.1/hadoop</span><span class="hljs-number">-3.2</span>.<span class="hljs-number">1</span>.tar.gz  <br /><br />tar -zxvf hadoop<span class="hljs-number">-3.2</span>.<span class="hljs-number">1</span>.tar.gz -C <span class="hljs-variable">$HADOOP_HOME</span><br /></code></pre>    
 <ol start="2">
-<li>Configure Hadoop.</li>
+<li>配置 Hadoop。</li>
 </ol>
 <pre><code class="hljs"><span class="hljs-meta"># $HADOOP_HOME/etc/hadoop/core-site.xml</span><br /><span class="hljs-params">&lt;configuration&gt;</span><br />    <span class="hljs-params">&lt;property&gt;</span><br />        <span class="hljs-params">&lt;name&gt;</span>fs.defaultFS<span class="hljs-params">&lt;/name&gt;</span><br />        <span class="hljs-params">&lt;value&gt;</span>hdfs:<span class="hljs-comment">//localhost:9000&lt;/value&gt;</span><br />    <span class="hljs-param [...]
 <ol start="3">
-<li>Set passphraseless ssh.</li>
+<li>设置无密码 ssh。</li>
 </ol>
-<pre><code class="hljs"><span class="hljs-comment"># Now check that you can ssh to the localhost without a passphrase:</span><br /><span class="hljs-variable">$ </span>ssh localhost<br /><span class="hljs-comment"># If you cannot ssh to localhost without a passphrase, execute the following commands</span><br /><span class="hljs-variable">$ </span>ssh-keygen -t rsa -P <span class="hljs-string">''</span> -f ~<span class="hljs-regexp">/.ssh/id</span>_rsa<br /><span class="hljs-variable">$ < [...]
+<pre><code class="hljs"><span class="hljs-comment"># 现在检查无需密码是否可以使用 ssh 连接到 localhost:</span><br /><span class="hljs-variable">$ </span>ssh localhost<br /><span class="hljs-comment"># 如果在无密码的情况下无法 ssh 连接到 localhost,请执行以下命令</span><br /><span class="hljs-variable">$ </span>ssh-keygen -t rsa -P <span class="hljs-string">''</span> -f ~<span class="hljs-regexp">/.ssh/id</span>_rsa<br /><span class="hljs-variable">$ </span>cat ~<span class="hljs-regexp">/.ssh/id</span>_rsa.pub &gt;&gt; ~<span  [...]
 <ol start="4">
-<li>Start HDFS.</li>
+<li>启动 HDFS。</li>
 </ol>
-<pre><code class="hljs"><span class="hljs-comment"># don't execute this command repeatedly, repeat execute will cauld the clusterId of the datanode is not consistent with namenode</span><br /><span class="hljs-variable">$HADOOP_HOME</span><span class="hljs-regexp">/bin/</span>hadoop namenode -format<br /><span class="hljs-variable">$HADOOP_HOME</span><span class="hljs-regexp">/sbin/</span>start-dfs.sh<br /></code></pre>    
+<pre><code class="hljs"><span class="hljs-comment"># 不重复执行此命令, 重复执行会捕获数据集群标识符与命名方式</span><br /><span class="hljs-variable">$HADOOP_HOME</span><span class="hljs-regexp">/bin/</span>hadoop namenode -format<br /><span class="hljs-variable">$HADOOP_HOME</span><span class="hljs-regexp">/sbin/</span>start-dfs.sh<br /></code></pre>    
 <ol start="5">
-<li>Navigate to the <a href="http://localhost:9870/">HDFS website</a>.</li>
+<li>导航到 <a href="http://localhost:9870/">HDFS 网站</a>。</li>
 </ol>
-<p>You can see the <strong>Overview</strong> page.</p>
+<p>您可以查看 <strong>概述</strong> 页面。</p>
 <p><img src="/docs/assets/FileSystem-1.png" alt=""></p>
 <ol>
-<li><p>At the top navigation bar, click <strong>Datanodes</strong> to check DataNode information.</p>
+<li><p>在顶部导航栏,单击 <strong>数据节点</strong> 查看数据节点信息。</p>
 <p><img src="/docs/assets/FileSystem-2.png" alt=""></p></li>
-<li><p>Click <strong>HTTP Address</strong> to get more detailed information about localhost:9866.</p>
-<p>As can be seen below, the size of <strong>Capacity Used</strong> is 4 KB, which is the initial value.</p>
+<li><p>单击 <strong>HTTP 地址</strong> 获取更多关于 localhost:9866 的详细信息。</p>
+<p>如下文所示, <strong>所用容量</strong> 的大小是 4 KB,它是初始值。</p>
 <p><img src="/docs/assets/FileSystem-3.png" alt=""></p></li>
 </ol>
-<h3><a class="anchor" aria-hidden="true" id="step-2-install-the-filesystem-offloader"></a><a href="#step-2-install-the-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2  [...]
-<p>For details, see <a href="#installation">installation</a>.</p>
-<h3><a class="anchor" aria-hidden="true" id="step-3-configure-the-filesystem-offloader"></a><a href="#step-3-configure-the-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1  [...]
-<p>As indicated in the <a href="#configuration">configuration</a> section, you need to configure some properties for the filesystem offloader driver before using it. This tutorial assumes that you have configured the filesystem offloader driver as below and run Pulsar in <strong>standalone</strong> mode.</p>
-<p>Set the following configurations in the <code>conf/standalone.conf</code> file.</p>
+<h3><a class="anchor" aria-hidden="true" id="第-2-步-安装-filesystem-offloader"></a><a href="#第-2-步-安装-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
+<p>更多详细信息,请参阅 <a href="#installation">安装</a>。</p>
+<h3><a class="anchor" aria-hidden="true" id="第-3-步-配置-filesystem-offloader"></a><a href="#第-3-步-配置-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
+<p>正如 <a href="#configuration">配置</a> 部分所指明的那样,需要先配置  filesystem offloader 驱动程序的一些属性,然后才能使用。 本教程假设您已按以下方式配置  filesystem offloader 驱动程序,并在<strong>独立</strong>模式下运行 Pulsar。</p>
+<p>在 <code>conf/standalone.conf</code> 文件中设置以下配置。</p>
 <pre><code class="hljs css language-conf"><span class="hljs-attr">managedLedgerOffloadDriver</span>=filesystem<br /><span class="hljs-attr">fileSystemURI</span>=hdfs://<span class="hljs-number">127.0</span>.<span class="hljs-number">0.1</span>:<span class="hljs-number">9000</span><br /><span class="hljs-attr">fileSystemProfilePath</span>=../conf/filesystem_<span class="hljs-literal">off</span>load_core_site.xml<br /></code></pre>    
 <blockquote>
 <p><strong>Note</strong></p>
-<p>For testing purposes, you can set the following two configurations to speed up ledger rollover, but it is not recommended that you set them in the production environment.</p>
+<p>为测试目的,您可以设置以下两个配置来加速 ledger 切换, 但不建议在生产环境中设置它们。</p>
 </blockquote>
 <pre><code class="hljs"><span class="hljs-attr">managedLedgerMinLedgerRolloverTimeMinutes</span>=<span class="hljs-number">1</span><br /><span class="hljs-attr">managedLedgerMaxEntriesPerLedger</span>=<span class="hljs-number">100</span><br /></code></pre>    
 </span></div></div><div id="tab-group-25400-content-25402" class="tab-pane" data-group="group_25400" tabindex="-1"><div><span><blockquote>
 <p><strong>Note</strong></p>
-<p>In this section, it is assumed that you have enabled NFS service and set the shared path of your NFS service. In this section, <code>/Users/test</code> is used as the shared path of NFS service.</p>
+<p>在本节中,假定您已启用 NFS 服务并设置 NFS 服务的共享路径。 在本节中, <code>/Users/test</code> 被用作 NFS 服务的共享路径。</p>
 </blockquote>
-<p>To offload data to NFS, follow these steps.</p>
-<h3><a class="anchor" aria-hidden="true" id="step-1-install-the-filesystem-offloader"></a><a href="#step-1-install-the-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2  [...]
-<p>For details, see <a href="#installation">installation</a>.</p>
-<h3><a class="anchor" aria-hidden="true" id="step-2-mont-your-nfs-to-your-local-filesystem"></a><a href="#step-2-mont-your-nfs-to-your-local-filesystem" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h- [...]
-<p>This example mounts mounts <em>/Users/pulsar_nfs</em> to <em>/Users/test</em>.</p>
+<p>要将数据卸载到 NFS,请执行以下步骤。</p>
+<h3><a class="anchor" aria-hidden="true" id="第-1-步-安装-filesystem-offloader"></a><a href="#第-1-步-安装-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
+<p>更多详细信息,请参阅 <a href="#installation">安装</a>。</p>
+<h3><a class="anchor" aria-hidden="true" id="第-2-步将-nfs-置于本地文件系统"></a><a href="#第-2-步将-nfs-置于本地文件系统" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.2 [...]
+<p>此示例将挂载 <em>/Users/pulsar_nfs</em> 到 <em>/Users/test</em>。</p>
 <pre><code class="hljs">mount -e <span class="hljs-number">192.168</span>.0.<span class="hljs-number">103</span><span class="hljs-symbol">:/Users/test/Users/pulsar_nfs</span><br /></code></pre>    
-<h3><a class="anchor" aria-hidden="true" id="step-3-configure-the-filesystem-offloader-driver"></a><a href="#step-3-configure-the-filesystem-offloader-driver" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9z [...]
-<p>As indicated in the <a href="#configuration">configuration</a> section, you need to configure some properties for the filesystem offloader driver before using it. This tutorial assumes that you have configured the filesystem offloader driver as below and run Pulsar in <strong>standalone</strong> mode.</p>
+<h3><a class="anchor" aria-hidden="true" id="第-3-步-配置-filesystem-offloader-驱动程序"></a><a href="#第-3-步-配置-filesystem-offloader-驱动程序" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5 [...]
+<p>正如 <a href="#configuration">配置</a> 部分所指明的那样,需要先配置  filesystem offloader 驱动程序的一些属性,然后才能使用。 本教程假设您已按以下方式配置  filesystem offloader 驱动程序,并在<strong>独立</strong>模式下运行 Pulsar。</p>
 <ol>
-<li>Set the following configurations in the <code>conf/standalone.conf</code> file.</li>
+<li>在 <code>conf/standalone.conf</code> 文件中设置以下配置。</li>
 </ol>
 <pre><code class="hljs css language-conf"><span class="hljs-attr">managedLedgerOffloadDriver</span>=filesystem<br /><span class="hljs-attr">fileSystemProfilePath</span>=../conf/filesystem_<span class="hljs-literal">off</span>load_core_site.xml<br /></code></pre>    
 <ol start="2">
-<li>Modify the <em>filesystem_offload_core_site.xml</em> as follows.</li>
+<li>修改 <em>filesystem_offload_core_site.xml</em>,如下所示。</li>
 </ol>
 <pre><code class="hljs"><span class="hljs-tag">&lt;<span class="hljs-name">property</span>&gt;</span><br />    <span class="hljs-tag">&lt;<span class="hljs-name">name</span>&gt;</span>fs.defaultFS<span class="hljs-tag">&lt;/<span class="hljs-name">name</span>&gt;</span><br />    <span class="hljs-tag">&lt;<span class="hljs-name">value</span>&gt;</span>file:///<span class="hljs-tag">&lt;/<span class="hljs-name">value</span>&gt;</span><br /><span class="hljs-tag">&lt;/<span class="hljs-nam [...]
 </span></div></div></div></div>
-<h3><a class="anchor" aria-hidden="true" id="step-4-offload-data-from-bookkeeper-to-filesystem"></a><a href="#step-4-offload-data-from-bookkeeper-to-filesystem" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4  [...]
-<p>Execute the following commands in the repository where you download Pulsar tarball. For example, <code>~/path/to/apache-pulsar-2.5.1</code>.</p>
+<h3><a class="anchor" aria-hidden="true" id="第-4-步将数据从-bookkeeper-卸载到文件系统"></a><a href="#第-4-步将数据从-bookkeeper-卸载到文件系统" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 [...]
+<p>在下载 Pulsar tar 包的仓库中执行以下命令。 例如, <code>~/path/to/apache-pulsar-2.5.1</code>。</p>
 <ol>
 <li><p>启动 Pulsar 单机模式。</p>
 <pre><code class="hljs">./bin/pulsar standalone -a <span class="hljs-number">127.0</span><span class="hljs-number">.0</span><span class="hljs-number">.1</span>
 </code></pre></li>
-<li><p>To ensure the data generated is not deleted immediately, it is recommended to set the <a href="https://pulsar.apache.org/docs/en/next/cookbooks-retention-expiry/#retention-policies">retention policy</a>, which can be either a <strong>size</strong> limit or a <strong>time</strong> limit. The larger value you set for the retention policy, the longer the data can be retained.</p>
+<li><p>为了确保生成的数据不会立即被删除,建议设置 <a href="https://pulsar.apache.org/docs/en/next/cookbooks-retention-expiry/#retention-policies">保留策略</a>, 可以是 <strong>大小</strong> 限制或 <strong>时间</strong> 限制。 为保留策略设定的值越大,数据保留的时间越长。</p>
 <pre><code class="hljs">./<span class="hljs-string">bin/</span><span class="hljs-string">pulsarctl </span><span class="hljs-string">namespaces </span><span class="hljs-built_in">set-retention</span> <span class="hljs-string">public/</span><span class="hljs-string">default </span><span class="hljs-built_in">--size</span> <span class="hljs-string">100M </span><span class="hljs-built_in">--time</span> <span class="hljs-string">2d
 </span></code></pre>
 <blockquote>
 <p><strong>提示</strong></p>
-<p>For more information about the <code>pulsarctl namespaces set-retention options</code> command, including flags, descriptions, default values, and shorthands, see <a href="https://docs.streamnative.io/pulsarctl/v2.7.0.6/#-em-set-retention-em-">here</a>.</p>
+<p>关于 <code>pulsar-admin namespaces set-offload-threshold options</code> 命令的更多信息,包括标志、描述、默认值和速记方法,参见<a href="https://docs.streamnative.io/pulsarctl/v2.7.0.6/#-em-set-retention-em-">这里</a>。</p>
 </blockquote></li>
-<li><p>Produce data using pulsar-client.</p>
+<li><p>使用 pulsar-client 生成数据。</p>
 <pre><code class="hljs">./bin/pulsar-client produce -m <span class="hljs-string">"Hello FileSystem Offloader"</span> -n <span class="hljs-number">1000</span> <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre></li>
-<li><p>The offloading operation starts after a ledger rollover is triggered. To ensure offload data successfully, it is recommended that you wait until several ledger rollovers are triggered. In this case, you might need to wait for a second. You can check the ledger status using pulsarctl.</p>
+<li><p>卸载操作在触发 ledger 切换后开始。 为了确保卸载数据成功,建议您等待多个 ledger 切换被触发。 在这种情况下,可能需要等待一秒钟。 您可以使用 pulsarctl 检查 ledger 状态。</p>
 <pre><code class="hljs">./bin/pulsarctl topics internal-stats <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre>
 <p><strong>输出</strong></p>
-<p>The data of the ledger 696 is not offloaded.</p>
+<p>ledger 696 的数据未卸载。</p>
 <pre><code class="hljs">{
 <span class="hljs-attr">"version"</span>: <span class="hljs-number">1</span>,
 <span class="hljs-attr">"creationDate"</span>: <span class="hljs-string">"2020-06-16T21:46:25.807+08:00"</span>,
@@ -302,14 +302,14 @@ Reason: <span class="hljs-builtin-name">Error</span> offloading: org.apache.book
 <span class="hljs-attr">"cursors"</span>: {}
 }
 </code></pre></li>
-<li><p>Wait a second and send more messages to the topic.</p>
+<li><p>请稍等,然后向 topic 发送更多消息。</p>
 <pre><code class="hljs">./bin/pulsar-client produce -m <span class="hljs-string">"Hello FileSystem Offloader"</span> -n <span class="hljs-number">1000</span> <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre></li>
-<li><p>Check the ledger status using pulsarctl.</p>
+<li><p>使用 pulsarctl 检查 ledger 状态。</p>
 <pre><code class="hljs">./bin/pulsarctl topics internal-stats <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre>
 <p><strong>输出</strong></p>
-<p>The ledger 696 is rollovered.</p>
+<p>ledger 696已经切换。</p>
 <pre><code class="hljs">{
 <span class="hljs-attr">"version"</span>: <span class="hljs-number">2</span>,
 <span class="hljs-attr">"creationDate"</span>: <span class="hljs-string">"2020-06-16T21:46:25.807+08:00"</span>,
@@ -329,19 +329,19 @@ Reason: <span class="hljs-builtin-name">Error</span> offloading: org.apache.book
 <span class="hljs-attr">"cursors"</span>: {}
 }
 </code></pre></li>
-<li><p>Trigger the offloading operation manually using pulsarctl.</p>
+<li><p>使用 pulsarctl 手动触发卸载操作。</p>
 <pre><code class="hljs">./bin/pulsarctl topic offload -s <span class="hljs-number">0</span> <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre>
 <p><strong>输出</strong></p>
-<p>Data in ledgers before the ledge 697 is offloaded.</p>
+<p>ledger 中的数据先于 ledge 697 已卸载。</p>
 <pre><code class="hljs"><span class="hljs-comment"># offload info, the ledgers before 697 will be offloaded</span>
 Offload triggered <span class="hljs-keyword">for</span> persistent:<span class="hljs-regexp">//</span>public<span class="hljs-regexp">/default/</span>fs-test3 <span class="hljs-keyword">for</span> messages before <span class="hljs-number">697</span>:<span class="hljs-number">0</span>:-<span class="hljs-number">1</span>
 </code></pre></li>
-<li><p>Check the ledger status using pulsarctl.</p>
+<li><p>使用 pulsarctl 检查 ledger 状态。</p>
 <pre><code class="hljs">./bin/pulsarctl topic <span class="hljs-type">internal</span>-<span class="hljs-keyword">info</span> <span class="hljs-built_in">public</span>/<span class="hljs-keyword">default</span>/fs-test
 </code></pre>
 <p><strong>输出</strong></p>
-<p>The data of the ledger 696 is offloaded.</p>
+<p>ledger 696 的数据已卸载。</p>
 <pre><code class="hljs">{
 <span class="hljs-attr">"version"</span>: <span class="hljs-number">4</span>,
 <span class="hljs-attr">"creationDate"</span>: <span class="hljs-string">"2020-06-16T21:46:25.807+08:00"</span>,
@@ -361,10 +361,10 @@ Offload triggered <span class="hljs-keyword">for</span> persistent:<span class="
 <span class="hljs-attr">"cursors"</span>: {}
 }
 </code></pre>
-<p>And the <strong>Capacity Used</strong> is changed from 4 KB to 116.46 KB.</p>
+<p>并且 <strong>所用容量</strong> 已经从 4 KB 变成 116.46 KB。</p>
 <p><img src="/docs/assets/FileSystem-8.png" alt=""></p></li>
 </ol>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.7.1/tiered-storage-gcs"><span class="arrow-prev">← </span><span>GCS offloader</span></a><a class="docs-next button" href="/docs/zh-CN/2.7.1/tiered-storage-azure"><span class="function-name-prevnext">Azure BlobStore offloader</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#安装">安装</a><ul class="toc-headings"><li> [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.7.1/tiered-storage-gcs"><span class="arrow-prev">← </span><span>GCS offloader</span></a><a class="docs-next button" href="/docs/zh-CN/2.7.1/tiered-storage-azure"><span class="function-name-prevnext">Azure BlobStore offloader</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#安装">安装</a><ul class="toc-headings"><li> [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.7.1/tiered-storage-filesystem/index.html b/content/docs/zh-CN/2.7.1/tiered-storage-filesystem/index.html
index f9524bc..dd1d181 100644
--- a/content/docs/zh-CN/2.7.1/tiered-storage-filesystem/index.html
+++ b/content/docs/zh-CN/2.7.1/tiered-storage-filesystem/index.html
@@ -142,27 +142,27 @@ ls offloaders
 </ul>
 <h3><a class="anchor" aria-hidden="true" id="自动运行-filesystem-offloader"></a><a href="#自动运行-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c [...]
 <p>您可以将命名空间策略配置为在达到阈值后自动卸载数据。 该阈值基于一个 topic 在 Pulsar 集群的数据存储大小而定。 一旦 topic 到达阈值,就自动触发卸载操作。</p>
-<p>Threshold value|Action |---|--- | &gt; 0 | It triggers the offloading operation if the topic storage reaches its threshold. = 0| 它使 broker 竭尽全力地 offload 数据。 &lt; 0 |It disables automatic offloading operation.</p>
-<p>Automatic offload runs when a new segment is added to a topic log. If you set the threshold on a namespace, but few messages are being produced to the topic, the filesystem offloader does not work until the current segment is full.</p>
-<p>You can configure the threshold using CLI tools, such as pulsar-admin.</p>
+<p>阈值|动作 |---|--- | &gt; 0 | 如果 topic 存储达到其阈值,它就会触发卸载操作。 = 0| 它使 broker 竭尽全力地 offload 数据。 &lt; 0 | 它将禁用自动卸载操作。</p>
+<p>Automatic offload runs when a new segment is added to a topic log. 如果在命名空间上设置了阈值,但向该 topic 生产的消息很少,filesystem offloader 将会停止工作,直至当前 segment 达到饱和。</p>
+<p>通过命令行工具(CLI)可以设置阈值大小,比如 pulsar-admin。</p>
 <h4><a class="anchor" aria-hidden="true" id="示例"></a><a href="#示例" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c [...]
-<p>This example sets the filesystem offloader threshold to 10 MB using pulsar-admin.</p>
+<p>该示例使用 pulsar-admin 将 filesystem offloader 的阈值大小设置为 10 MB。</p>
 <pre><code class="hljs css language-bash">pulsar-admin namespaces <span class="hljs-built_in">set</span>-offload-threshold --size 10M my-tenant/my-namespace
 </code></pre>
 <blockquote>
 <h4><a class="anchor" aria-hidden="true" id="提示"></a><a href="#提示" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c [...]
 <p>关于 <code>pulsar-admin namespaces set-offload-threshold options</code> 命令的更多信息,包括标志、描述、默认值和速记方法,见<a href="/docs/zh-CN/2.7.1/pulsar-admin#set-offload-threshold">这里</a>。</p>
 </blockquote>
-<h3><a class="anchor" aria-hidden="true" id="run-filesystem-offloader-manually"></a><a href="#run-filesystem-offloader-manually" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S1 [...]
-<p>For individual topics, you can trigger the filesystem offloader manually using one of the following methods:</p>
+<h3><a class="anchor" aria-hidden="true" id="手动运行-filesystem-offloader"></a><a href="#手动运行-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c [...]
+<p>对于每一个 topic,使用下列方法之一可以手动触发 filesystem offloader:</p>
 <ul>
-<li><p>Use the REST endpoint.</p></li>
+<li><p>使用 REST 端点。</p></li>
 <li><p>使用命令行工具(例如 pulsar-admin)。</p></li>
 </ul>
-<p>To manually trigger the filesystem offloader via CLI tools, you need to specify the maximum amount of data (threshold) that should be retained on a Pulsar cluster for a topic. 如果 Pulsar 集群上 topic 的数据大小超过了这个阈值,那么该 topic 下的 segment 就会被陆续卸载到 filesystem 上,直到不再超过这个阈值。 优先卸载旧的 segment。</p>
+<p>要想用命令行工具触发 filesystem offloader,需要指定一个 topic 应该保留在 Pulsar 集群中的最大数据量(阈值)。 如果 Pulsar 集群上 topic 的数据大小超过了这个阈值,那么该 topic 下的 segment 就会被陆续卸载到 filesystem 上,直到不再超过这个阈值。 优先卸载旧的 segment。</p>
 <h4><a class="anchor" aria-hidden="true" id="示例-1"></a><a href="#示例-1" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
 <ul>
-<li><p>This example manually run the filesystem offloader using pulsar-admin.</p>
+<li><p>此示例使用 pulsar-admin 手动运行 filesystem offloader。</p>
 <pre><code class="hljs css language-bash">pulsar-admin topics offload --size-threshold 10M persistent://my-tenant/my-namespace/topic1
 </code></pre>
 <p><strong>输出</strong></p>
@@ -199,96 +199,96 @@ Reason: <span class="hljs-builtin-name">Error</span> offloading: org.apache.book
 </blockquote></li>
 </ul>
 <h2><a class="anchor" aria-hidden="true" id="教程"></a><a href="#教程" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c [...]
-<p>This section provides step-by-step instructions on how to use the filesystem offloader to move data from Pulsar to Hadoop Distributed File System (HDFS) or Network File system (NFS).</p>
-<pre><code class="hljs">&lt;div class=&quot;tabs&quot;&gt;&lt;div class=&quot;nav-tabs&quot;&gt;&lt;div id=&quot;tab-group-25400-tab-25401&quot; class=&quot;nav-link active&quot; data-group=&quot;group_25400&quot; data-tab=&quot;tab-group-25400-content-25401&quot;&gt;HDFS&lt;/div&gt;&lt;div id=&quot;tab-group-25400-tab-25402&quot; class=&quot;nav-link&quot; data-group=&quot;group_25400&quot; data-tab=&quot;tab-group-25400-content-25402&quot;&gt;NFS&lt;/div&gt;&lt;/div&gt;&lt;div class=&q [...]
+<p>本节提供有关如何使用  filesystem offloader  将数据从 Pulsar 移动到 Hadoop 分布式文件系统(HDFS)或网络文件系统(NFS)的分步说明。</p>
+<pre><code class="hljs">&lt;div class=&quot;tabs&quot;&gt;&lt;div class=&quot;nav-tabs&quot;&gt;&lt;div id=&quot;tab-group-25400-tab-25401&quot; class=&quot;nav-link active&quot; data-group=&quot;group_25400&quot; data-tab=&quot;tab-group-25400-content-25401&quot;&gt;HDFS&lt;/div&gt;&lt;div id=&quot;tab-group-25400-tab-25402&quot; class=&quot;nav-link&quot; data-group=&quot;group_25400&quot; data-tab=&quot;tab-group-25400-content-25402&quot;&gt;NFS&lt;/div&gt;&lt;/div&gt;&lt;div class=&q [...]
 </code></pre>
-<p><h3><a class="anchor" aria-hidden="true" id="step-1-prepare-the-hdfs-environment"></a><a href="#step-1-prepare-the-hdfs-environment" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22  [...]
-<p>This tutorial sets up a Hadoop single node cluster and uses Hadoop 3.2.1.</p>
+<p><h3><a class="anchor" aria-hidden="true" id="第-1-步准备-hdfs-环境"></a><a href="#第-1-步准备-hdfs-环境" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2 [...]
+<p>本教程使用 Hadoop 3.2.1设置一个 Hadoop 单个节点集群。</p>
 <blockquote>
 <p><strong>提示</strong></p>
-<p>For details about how to set up a Hadoop single node cluster, see <a href="https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html">here</a>.</p>
+<p>有关如何设置 Hadoop 单节点集群的详细信息,请参见<a href="https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html">此处</a>。</p>
 </blockquote>
 <ol>
-<li>Download and uncompress Hadoop 3.2.1.</li>
+<li>下载并解压缩 Hadoop 3.2.1。</li>
 </ol>
 <pre><code class="hljs">wget <span class="hljs-symbol">https:</span>/<span class="hljs-regexp">/mirrors.bfsu.edu.cn/apache</span><span class="hljs-regexp">/hadoop/common</span><span class="hljs-regexp">/hadoop-3.2.1/hadoop</span><span class="hljs-number">-3.2</span>.<span class="hljs-number">1</span>.tar.gz  <br /><br />tar -zxvf hadoop<span class="hljs-number">-3.2</span>.<span class="hljs-number">1</span>.tar.gz -C <span class="hljs-variable">$HADOOP_HOME</span><br /></code></pre>    
 <ol start="2">
-<li>Configure Hadoop.</li>
+<li>配置 Hadoop。</li>
 </ol>
 <pre><code class="hljs"><span class="hljs-meta"># $HADOOP_HOME/etc/hadoop/core-site.xml</span><br /><span class="hljs-params">&lt;configuration&gt;</span><br />    <span class="hljs-params">&lt;property&gt;</span><br />        <span class="hljs-params">&lt;name&gt;</span>fs.defaultFS<span class="hljs-params">&lt;/name&gt;</span><br />        <span class="hljs-params">&lt;value&gt;</span>hdfs:<span class="hljs-comment">//localhost:9000&lt;/value&gt;</span><br />    <span class="hljs-param [...]
 <ol start="3">
-<li>Set passphraseless ssh.</li>
+<li>设置无密码 ssh。</li>
 </ol>
-<pre><code class="hljs"><span class="hljs-comment"># Now check that you can ssh to the localhost without a passphrase:</span><br /><span class="hljs-variable">$ </span>ssh localhost<br /><span class="hljs-comment"># If you cannot ssh to localhost without a passphrase, execute the following commands</span><br /><span class="hljs-variable">$ </span>ssh-keygen -t rsa -P <span class="hljs-string">''</span> -f ~<span class="hljs-regexp">/.ssh/id</span>_rsa<br /><span class="hljs-variable">$ < [...]
+<pre><code class="hljs"><span class="hljs-comment"># 现在检查无需密码是否可以使用 ssh 连接到 localhost:</span><br /><span class="hljs-variable">$ </span>ssh localhost<br /><span class="hljs-comment"># 如果在无密码的情况下无法 ssh 连接到 localhost,请执行以下命令</span><br /><span class="hljs-variable">$ </span>ssh-keygen -t rsa -P <span class="hljs-string">''</span> -f ~<span class="hljs-regexp">/.ssh/id</span>_rsa<br /><span class="hljs-variable">$ </span>cat ~<span class="hljs-regexp">/.ssh/id</span>_rsa.pub &gt;&gt; ~<span  [...]
 <ol start="4">
-<li>Start HDFS.</li>
+<li>启动 HDFS。</li>
 </ol>
-<pre><code class="hljs"><span class="hljs-comment"># don't execute this command repeatedly, repeat execute will cauld the clusterId of the datanode is not consistent with namenode</span><br /><span class="hljs-variable">$HADOOP_HOME</span><span class="hljs-regexp">/bin/</span>hadoop namenode -format<br /><span class="hljs-variable">$HADOOP_HOME</span><span class="hljs-regexp">/sbin/</span>start-dfs.sh<br /></code></pre>    
+<pre><code class="hljs"><span class="hljs-comment"># 不重复执行此命令, 重复执行会捕获数据集群标识符与命名方式</span><br /><span class="hljs-variable">$HADOOP_HOME</span><span class="hljs-regexp">/bin/</span>hadoop namenode -format<br /><span class="hljs-variable">$HADOOP_HOME</span><span class="hljs-regexp">/sbin/</span>start-dfs.sh<br /></code></pre>    
 <ol start="5">
-<li>Navigate to the <a href="http://localhost:9870/">HDFS website</a>.</li>
+<li>导航到 <a href="http://localhost:9870/">HDFS 网站</a>。</li>
 </ol>
-<p>You can see the <strong>Overview</strong> page.</p>
+<p>您可以查看 <strong>概述</strong> 页面。</p>
 <p><img src="/docs/assets/FileSystem-1.png" alt=""></p>
 <ol>
-<li><p>At the top navigation bar, click <strong>Datanodes</strong> to check DataNode information.</p>
+<li><p>在顶部导航栏,单击 <strong>数据节点</strong> 查看数据节点信息。</p>
 <p><img src="/docs/assets/FileSystem-2.png" alt=""></p></li>
-<li><p>Click <strong>HTTP Address</strong> to get more detailed information about localhost:9866.</p>
-<p>As can be seen below, the size of <strong>Capacity Used</strong> is 4 KB, which is the initial value.</p>
+<li><p>单击 <strong>HTTP 地址</strong> 获取更多关于 localhost:9866 的详细信息。</p>
+<p>如下文所示, <strong>所用容量</strong> 的大小是 4 KB,它是初始值。</p>
 <p><img src="/docs/assets/FileSystem-3.png" alt=""></p></li>
 </ol>
-<h3><a class="anchor" aria-hidden="true" id="step-2-install-the-filesystem-offloader"></a><a href="#step-2-install-the-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2  [...]
-<p>For details, see <a href="#installation">installation</a>.</p>
-<h3><a class="anchor" aria-hidden="true" id="step-3-configure-the-filesystem-offloader"></a><a href="#step-3-configure-the-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1  [...]
-<p>As indicated in the <a href="#configuration">configuration</a> section, you need to configure some properties for the filesystem offloader driver before using it. This tutorial assumes that you have configured the filesystem offloader driver as below and run Pulsar in <strong>standalone</strong> mode.</p>
-<p>Set the following configurations in the <code>conf/standalone.conf</code> file.</p>
+<h3><a class="anchor" aria-hidden="true" id="第-2-步-安装-filesystem-offloader"></a><a href="#第-2-步-安装-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
+<p>更多详细信息,请参阅 <a href="#installation">安装</a>。</p>
+<h3><a class="anchor" aria-hidden="true" id="第-3-步-配置-filesystem-offloader"></a><a href="#第-3-步-配置-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
+<p>正如 <a href="#configuration">配置</a> 部分所指明的那样,需要先配置  filesystem offloader 驱动程序的一些属性,然后才能使用。 本教程假设您已按以下方式配置  filesystem offloader 驱动程序,并在<strong>独立</strong>模式下运行 Pulsar。</p>
+<p>在 <code>conf/standalone.conf</code> 文件中设置以下配置。</p>
 <pre><code class="hljs css language-conf"><span class="hljs-attr">managedLedgerOffloadDriver</span>=filesystem<br /><span class="hljs-attr">fileSystemURI</span>=hdfs://<span class="hljs-number">127.0</span>.<span class="hljs-number">0.1</span>:<span class="hljs-number">9000</span><br /><span class="hljs-attr">fileSystemProfilePath</span>=../conf/filesystem_<span class="hljs-literal">off</span>load_core_site.xml<br /></code></pre>    
 <blockquote>
 <p><strong>Note</strong></p>
-<p>For testing purposes, you can set the following two configurations to speed up ledger rollover, but it is not recommended that you set them in the production environment.</p>
+<p>为测试目的,您可以设置以下两个配置来加速 ledger 切换, 但不建议在生产环境中设置它们。</p>
 </blockquote>
 <pre><code class="hljs"><span class="hljs-attr">managedLedgerMinLedgerRolloverTimeMinutes</span>=<span class="hljs-number">1</span><br /><span class="hljs-attr">managedLedgerMaxEntriesPerLedger</span>=<span class="hljs-number">100</span><br /></code></pre>    
 </span></div></div><div id="tab-group-25400-content-25402" class="tab-pane" data-group="group_25400" tabindex="-1"><div><span><blockquote>
 <p><strong>Note</strong></p>
-<p>In this section, it is assumed that you have enabled NFS service and set the shared path of your NFS service. In this section, <code>/Users/test</code> is used as the shared path of NFS service.</p>
+<p>在本节中,假定您已启用 NFS 服务并设置 NFS 服务的共享路径。 在本节中, <code>/Users/test</code> 被用作 NFS 服务的共享路径。</p>
 </blockquote>
-<p>To offload data to NFS, follow these steps.</p>
-<h3><a class="anchor" aria-hidden="true" id="step-1-install-the-filesystem-offloader"></a><a href="#step-1-install-the-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2  [...]
-<p>For details, see <a href="#installation">installation</a>.</p>
-<h3><a class="anchor" aria-hidden="true" id="step-2-mont-your-nfs-to-your-local-filesystem"></a><a href="#step-2-mont-your-nfs-to-your-local-filesystem" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h- [...]
-<p>This example mounts mounts <em>/Users/pulsar_nfs</em> to <em>/Users/test</em>.</p>
+<p>要将数据卸载到 NFS,请执行以下步骤。</p>
+<h3><a class="anchor" aria-hidden="true" id="第-1-步-安装-filesystem-offloader"></a><a href="#第-1-步-安装-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
+<p>更多详细信息,请参阅 <a href="#installation">安装</a>。</p>
+<h3><a class="anchor" aria-hidden="true" id="第-2-步将-nfs-置于本地文件系统"></a><a href="#第-2-步将-nfs-置于本地文件系统" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.2 [...]
+<p>此示例将挂载 <em>/Users/pulsar_nfs</em> 到 <em>/Users/test</em>。</p>
 <pre><code class="hljs">mount -e <span class="hljs-number">192.168</span>.0.<span class="hljs-number">103</span><span class="hljs-symbol">:/Users/test/Users/pulsar_nfs</span><br /></code></pre>    
-<h3><a class="anchor" aria-hidden="true" id="step-3-configure-the-filesystem-offloader-driver"></a><a href="#step-3-configure-the-filesystem-offloader-driver" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9z [...]
-<p>As indicated in the <a href="#configuration">configuration</a> section, you need to configure some properties for the filesystem offloader driver before using it. This tutorial assumes that you have configured the filesystem offloader driver as below and run Pulsar in <strong>standalone</strong> mode.</p>
+<h3><a class="anchor" aria-hidden="true" id="第-3-步-配置-filesystem-offloader-驱动程序"></a><a href="#第-3-步-配置-filesystem-offloader-驱动程序" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5 [...]
+<p>正如 <a href="#configuration">配置</a> 部分所指明的那样,需要先配置  filesystem offloader 驱动程序的一些属性,然后才能使用。 本教程假设您已按以下方式配置  filesystem offloader 驱动程序,并在<strong>独立</strong>模式下运行 Pulsar。</p>
 <ol>
-<li>Set the following configurations in the <code>conf/standalone.conf</code> file.</li>
+<li>在 <code>conf/standalone.conf</code> 文件中设置以下配置。</li>
 </ol>
 <pre><code class="hljs css language-conf"><span class="hljs-attr">managedLedgerOffloadDriver</span>=filesystem<br /><span class="hljs-attr">fileSystemProfilePath</span>=../conf/filesystem_<span class="hljs-literal">off</span>load_core_site.xml<br /></code></pre>    
 <ol start="2">
-<li>Modify the <em>filesystem_offload_core_site.xml</em> as follows.</li>
+<li>修改 <em>filesystem_offload_core_site.xml</em>,如下所示。</li>
 </ol>
 <pre><code class="hljs"><span class="hljs-tag">&lt;<span class="hljs-name">property</span>&gt;</span><br />    <span class="hljs-tag">&lt;<span class="hljs-name">name</span>&gt;</span>fs.defaultFS<span class="hljs-tag">&lt;/<span class="hljs-name">name</span>&gt;</span><br />    <span class="hljs-tag">&lt;<span class="hljs-name">value</span>&gt;</span>file:///<span class="hljs-tag">&lt;/<span class="hljs-name">value</span>&gt;</span><br /><span class="hljs-tag">&lt;/<span class="hljs-nam [...]
 </span></div></div></div></div>
-<h3><a class="anchor" aria-hidden="true" id="step-4-offload-data-from-bookkeeper-to-filesystem"></a><a href="#step-4-offload-data-from-bookkeeper-to-filesystem" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4  [...]
-<p>Execute the following commands in the repository where you download Pulsar tarball. For example, <code>~/path/to/apache-pulsar-2.5.1</code>.</p>
+<h3><a class="anchor" aria-hidden="true" id="第-4-步将数据从-bookkeeper-卸载到文件系统"></a><a href="#第-4-步将数据从-bookkeeper-卸载到文件系统" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 [...]
+<p>在下载 Pulsar tar 包的仓库中执行以下命令。 例如, <code>~/path/to/apache-pulsar-2.5.1</code>。</p>
 <ol>
 <li><p>启动 Pulsar 单机模式。</p>
 <pre><code class="hljs">./bin/pulsar standalone -a <span class="hljs-number">127.0</span><span class="hljs-number">.0</span><span class="hljs-number">.1</span>
 </code></pre></li>
-<li><p>To ensure the data generated is not deleted immediately, it is recommended to set the <a href="https://pulsar.apache.org/docs/en/next/cookbooks-retention-expiry/#retention-policies">retention policy</a>, which can be either a <strong>size</strong> limit or a <strong>time</strong> limit. The larger value you set for the retention policy, the longer the data can be retained.</p>
+<li><p>为了确保生成的数据不会立即被删除,建议设置 <a href="https://pulsar.apache.org/docs/en/next/cookbooks-retention-expiry/#retention-policies">保留策略</a>, 可以是 <strong>大小</strong> 限制或 <strong>时间</strong> 限制。 为保留策略设定的值越大,数据保留的时间越长。</p>
 <pre><code class="hljs">./<span class="hljs-string">bin/</span><span class="hljs-string">pulsarctl </span><span class="hljs-string">namespaces </span><span class="hljs-built_in">set-retention</span> <span class="hljs-string">public/</span><span class="hljs-string">default </span><span class="hljs-built_in">--size</span> <span class="hljs-string">100M </span><span class="hljs-built_in">--time</span> <span class="hljs-string">2d
 </span></code></pre>
 <blockquote>
 <p><strong>提示</strong></p>
-<p>For more information about the <code>pulsarctl namespaces set-retention options</code> command, including flags, descriptions, default values, and shorthands, see <a href="https://docs.streamnative.io/pulsarctl/v2.7.0.6/#-em-set-retention-em-">here</a>.</p>
+<p>关于 <code>pulsar-admin namespaces set-offload-threshold options</code> 命令的更多信息,包括标志、描述、默认值和速记方法,参见<a href="https://docs.streamnative.io/pulsarctl/v2.7.0.6/#-em-set-retention-em-">这里</a>。</p>
 </blockquote></li>
-<li><p>Produce data using pulsar-client.</p>
+<li><p>使用 pulsar-client 生成数据。</p>
 <pre><code class="hljs">./bin/pulsar-client produce -m <span class="hljs-string">"Hello FileSystem Offloader"</span> -n <span class="hljs-number">1000</span> <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre></li>
-<li><p>The offloading operation starts after a ledger rollover is triggered. To ensure offload data successfully, it is recommended that you wait until several ledger rollovers are triggered. In this case, you might need to wait for a second. You can check the ledger status using pulsarctl.</p>
+<li><p>卸载操作在触发 ledger 切换后开始。 为了确保卸载数据成功,建议您等待多个 ledger 切换被触发。 在这种情况下,可能需要等待一秒钟。 您可以使用 pulsarctl 检查 ledger 状态。</p>
 <pre><code class="hljs">./bin/pulsarctl topics internal-stats <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre>
 <p><strong>输出</strong></p>
-<p>The data of the ledger 696 is not offloaded.</p>
+<p>ledger 696 的数据未卸载。</p>
 <pre><code class="hljs">{
 <span class="hljs-attr">"version"</span>: <span class="hljs-number">1</span>,
 <span class="hljs-attr">"creationDate"</span>: <span class="hljs-string">"2020-06-16T21:46:25.807+08:00"</span>,
@@ -302,14 +302,14 @@ Reason: <span class="hljs-builtin-name">Error</span> offloading: org.apache.book
 <span class="hljs-attr">"cursors"</span>: {}
 }
 </code></pre></li>
-<li><p>Wait a second and send more messages to the topic.</p>
+<li><p>请稍等,然后向 topic 发送更多消息。</p>
 <pre><code class="hljs">./bin/pulsar-client produce -m <span class="hljs-string">"Hello FileSystem Offloader"</span> -n <span class="hljs-number">1000</span> <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre></li>
-<li><p>Check the ledger status using pulsarctl.</p>
+<li><p>使用 pulsarctl 检查 ledger 状态。</p>
 <pre><code class="hljs">./bin/pulsarctl topics internal-stats <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre>
 <p><strong>输出</strong></p>
-<p>The ledger 696 is rollovered.</p>
+<p>ledger 696已经切换。</p>
 <pre><code class="hljs">{
 <span class="hljs-attr">"version"</span>: <span class="hljs-number">2</span>,
 <span class="hljs-attr">"creationDate"</span>: <span class="hljs-string">"2020-06-16T21:46:25.807+08:00"</span>,
@@ -329,19 +329,19 @@ Reason: <span class="hljs-builtin-name">Error</span> offloading: org.apache.book
 <span class="hljs-attr">"cursors"</span>: {}
 }
 </code></pre></li>
-<li><p>Trigger the offloading operation manually using pulsarctl.</p>
+<li><p>使用 pulsarctl 手动触发卸载操作。</p>
 <pre><code class="hljs">./bin/pulsarctl topic offload -s <span class="hljs-number">0</span> <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre>
 <p><strong>输出</strong></p>
-<p>Data in ledgers before the ledge 697 is offloaded.</p>
+<p>ledger 中的数据先于 ledge 697 已卸载。</p>
 <pre><code class="hljs"><span class="hljs-comment"># offload info, the ledgers before 697 will be offloaded</span>
 Offload triggered <span class="hljs-keyword">for</span> persistent:<span class="hljs-regexp">//</span>public<span class="hljs-regexp">/default/</span>fs-test3 <span class="hljs-keyword">for</span> messages before <span class="hljs-number">697</span>:<span class="hljs-number">0</span>:-<span class="hljs-number">1</span>
 </code></pre></li>
-<li><p>Check the ledger status using pulsarctl.</p>
+<li><p>使用 pulsarctl 检查 ledger 状态。</p>
 <pre><code class="hljs">./bin/pulsarctl topic <span class="hljs-type">internal</span>-<span class="hljs-keyword">info</span> <span class="hljs-built_in">public</span>/<span class="hljs-keyword">default</span>/fs-test
 </code></pre>
 <p><strong>输出</strong></p>
-<p>The data of the ledger 696 is offloaded.</p>
+<p>ledger 696 的数据已卸载。</p>
 <pre><code class="hljs">{
 <span class="hljs-attr">"version"</span>: <span class="hljs-number">4</span>,
 <span class="hljs-attr">"creationDate"</span>: <span class="hljs-string">"2020-06-16T21:46:25.807+08:00"</span>,
@@ -361,10 +361,10 @@ Offload triggered <span class="hljs-keyword">for</span> persistent:<span class="
 <span class="hljs-attr">"cursors"</span>: {}
 }
 </code></pre>
-<p>And the <strong>Capacity Used</strong> is changed from 4 KB to 116.46 KB.</p>
+<p>并且 <strong>所用容量</strong> 已经从 4 KB 变成 116.46 KB。</p>
 <p><img src="/docs/assets/FileSystem-8.png" alt=""></p></li>
 </ol>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.7.1/tiered-storage-gcs"><span class="arrow-prev">← </span><span>GCS offloader</span></a><a class="docs-next button" href="/docs/zh-CN/2.7.1/tiered-storage-azure"><span class="function-name-prevnext">Azure BlobStore offloader</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#安装">安装</a><ul class="toc-headings"><li> [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.7.1/tiered-storage-gcs"><span class="arrow-prev">← </span><span>GCS offloader</span></a><a class="docs-next button" href="/docs/zh-CN/2.7.1/tiered-storage-azure"><span class="function-name-prevnext">Azure BlobStore offloader</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#安装">安装</a><ul class="toc-headings"><li> [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.7.2/tiered-storage-filesystem.html b/content/docs/zh-CN/2.7.2/tiered-storage-filesystem.html
index 15a93f2..7a220c3 100644
--- a/content/docs/zh-CN/2.7.2/tiered-storage-filesystem.html
+++ b/content/docs/zh-CN/2.7.2/tiered-storage-filesystem.html
@@ -142,27 +142,27 @@ ls offloaders
 </ul>
 <h3><a class="anchor" aria-hidden="true" id="自动运行-filesystem-offloader"></a><a href="#自动运行-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c [...]
 <p>您可以将命名空间策略配置为在达到阈值后自动卸载数据。 该阈值基于一个 topic 在 Pulsar 集群的数据存储大小而定。 一旦 topic 到达阈值,就自动触发卸载操作。</p>
-<p>Threshold value|Action |---|--- | &gt; 0 | It triggers the offloading operation if the topic storage reaches its threshold. = 0| 它使 broker 竭尽全力地 offload 数据。 &lt; 0 |It disables automatic offloading operation.</p>
-<p>Automatic offload runs when a new segment is added to a topic log. If you set the threshold on a namespace, but few messages are being produced to the topic, the filesystem offloader does not work until the current segment is full.</p>
-<p>You can configure the threshold using CLI tools, such as pulsar-admin.</p>
+<p>阈值|动作 |---|--- | &gt; 0 | 如果 topic 存储达到其阈值,它就会触发卸载操作。 = 0| 它使 broker 竭尽全力地 offload 数据。 &lt; 0 | 它将禁用自动卸载操作。</p>
+<p>Automatic offload runs when a new segment is added to a topic log. 如果在命名空间上设置了阈值,但向该 topic 生产的消息很少,filesystem offloader 将会停止工作,直至当前 segment 达到饱和。</p>
+<p>通过命令行工具(CLI)可以设置阈值大小,比如 pulsar-admin。</p>
 <h4><a class="anchor" aria-hidden="true" id="示例"></a><a href="#示例" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c [...]
-<p>This example sets the filesystem offloader threshold to 10 MB using pulsar-admin.</p>
+<p>该示例使用 pulsar-admin 将 filesystem offloader 的阈值大小设置为 10 MB。</p>
 <pre><code class="hljs css language-bash">pulsar-admin namespaces <span class="hljs-built_in">set</span>-offload-threshold --size 10M my-tenant/my-namespace
 </code></pre>
 <blockquote>
 <h4><a class="anchor" aria-hidden="true" id="提示"></a><a href="#提示" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c [...]
 <p>关于 <code>pulsar-admin namespaces set-offload-threshold options</code> 命令的更多信息,包括标志、描述、默认值和速记方法,见<a href="/docs/zh-CN/2.7.2/pulsar-admin#set-offload-threshold">这里</a>。</p>
 </blockquote>
-<h3><a class="anchor" aria-hidden="true" id="run-filesystem-offloader-manually"></a><a href="#run-filesystem-offloader-manually" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S1 [...]
-<p>For individual topics, you can trigger the filesystem offloader manually using one of the following methods:</p>
+<h3><a class="anchor" aria-hidden="true" id="手动运行-filesystem-offloader"></a><a href="#手动运行-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c [...]
+<p>对于每一个 topic,使用下列方法之一可以手动触发 filesystem offloader:</p>
 <ul>
-<li><p>Use the REST endpoint.</p></li>
+<li><p>使用 REST 端点。</p></li>
 <li><p>使用命令行工具(例如 pulsar-admin)。</p></li>
 </ul>
-<p>To manually trigger the filesystem offloader via CLI tools, you need to specify the maximum amount of data (threshold) that should be retained on a Pulsar cluster for a topic. 如果 Pulsar 集群上 topic 的数据大小超过了这个阈值,那么该 topic 下的 segment 就会被陆续卸载到 filesystem 上,直到不再超过这个阈值。 优先卸载旧的 segment。</p>
+<p>要想用命令行工具触发 filesystem offloader,需要指定一个 topic 应该保留在 Pulsar 集群中的最大数据量(阈值)。 如果 Pulsar 集群上 topic 的数据大小超过了这个阈值,那么该 topic 下的 segment 就会被陆续卸载到 filesystem 上,直到不再超过这个阈值。 优先卸载旧的 segment。</p>
 <h4><a class="anchor" aria-hidden="true" id="示例-1"></a><a href="#示例-1" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
 <ul>
-<li><p>This example manually run the filesystem offloader using pulsar-admin.</p>
+<li><p>此示例使用 pulsar-admin 手动运行 filesystem offloader。</p>
 <pre><code class="hljs css language-bash">pulsar-admin topics offload --size-threshold 10M persistent://my-tenant/my-namespace/topic1
 </code></pre>
 <p><strong>输出</strong></p>
@@ -199,96 +199,96 @@ Reason: <span class="hljs-builtin-name">Error</span> offloading: org.apache.book
 </blockquote></li>
 </ul>
 <h2><a class="anchor" aria-hidden="true" id="教程"></a><a href="#教程" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c [...]
-<p>This section provides step-by-step instructions on how to use the filesystem offloader to move data from Pulsar to Hadoop Distributed File System (HDFS) or Network File system (NFS).</p>
-<pre><code class="hljs">&lt;div class=&quot;tabs&quot;&gt;&lt;div class=&quot;nav-tabs&quot;&gt;&lt;div id=&quot;tab-group-24829-tab-24830&quot; class=&quot;nav-link active&quot; data-group=&quot;group_24829&quot; data-tab=&quot;tab-group-24829-content-24830&quot;&gt;HDFS&lt;/div&gt;&lt;div id=&quot;tab-group-24829-tab-24831&quot; class=&quot;nav-link&quot; data-group=&quot;group_24829&quot; data-tab=&quot;tab-group-24829-content-24831&quot;&gt;NFS&lt;/div&gt;&lt;/div&gt;&lt;div class=&q [...]
+<p>本节提供有关如何使用  filesystem offloader  将数据从 Pulsar 移动到 Hadoop 分布式文件系统(HDFS)或网络文件系统(NFS)的分步说明。</p>
+<pre><code class="hljs">&lt;div class=&quot;tabs&quot;&gt;&lt;div class=&quot;nav-tabs&quot;&gt;&lt;div id=&quot;tab-group-24829-tab-24830&quot; class=&quot;nav-link active&quot; data-group=&quot;group_24829&quot; data-tab=&quot;tab-group-24829-content-24830&quot;&gt;HDFS&lt;/div&gt;&lt;div id=&quot;tab-group-24829-tab-24831&quot; class=&quot;nav-link&quot; data-group=&quot;group_24829&quot; data-tab=&quot;tab-group-24829-content-24831&quot;&gt;NFS&lt;/div&gt;&lt;/div&gt;&lt;div class=&q [...]
 </code></pre>
-<p><h3><a class="anchor" aria-hidden="true" id="step-1-prepare-the-hdfs-environment"></a><a href="#step-1-prepare-the-hdfs-environment" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22  [...]
-<p>This tutorial sets up a Hadoop single node cluster and uses Hadoop 3.2.1.</p>
+<p><h3><a class="anchor" aria-hidden="true" id="第-1-步准备-hdfs-环境"></a><a href="#第-1-步准备-hdfs-环境" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2 [...]
+<p>本教程使用 Hadoop 3.2.1设置一个 Hadoop 单个节点集群。</p>
 <blockquote>
 <p><strong>提示</strong></p>
-<p>For details about how to set up a Hadoop single node cluster, see <a href="https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html">here</a>.</p>
+<p>有关如何设置 Hadoop 单节点集群的详细信息,请参见<a href="https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html">此处</a>。</p>
 </blockquote>
 <ol>
-<li>Download and uncompress Hadoop 3.2.1.</li>
+<li>下载并解压缩 Hadoop 3.2.1。</li>
 </ol>
 <pre><code class="hljs">wget <span class="hljs-symbol">https:</span>/<span class="hljs-regexp">/mirrors.bfsu.edu.cn/apache</span><span class="hljs-regexp">/hadoop/common</span><span class="hljs-regexp">/hadoop-3.2.1/hadoop</span><span class="hljs-number">-3.2</span>.<span class="hljs-number">1</span>.tar.gz  <br /><br />tar -zxvf hadoop<span class="hljs-number">-3.2</span>.<span class="hljs-number">1</span>.tar.gz -C <span class="hljs-variable">$HADOOP_HOME</span><br /></code></pre>    
 <ol start="2">
-<li>Configure Hadoop.</li>
+<li>配置 Hadoop。</li>
 </ol>
 <pre><code class="hljs"><span class="hljs-meta"># $HADOOP_HOME/etc/hadoop/core-site.xml</span><br /><span class="hljs-params">&lt;configuration&gt;</span><br />    <span class="hljs-params">&lt;property&gt;</span><br />        <span class="hljs-params">&lt;name&gt;</span>fs.defaultFS<span class="hljs-params">&lt;/name&gt;</span><br />        <span class="hljs-params">&lt;value&gt;</span>hdfs:<span class="hljs-comment">//localhost:9000&lt;/value&gt;</span><br />    <span class="hljs-param [...]
 <ol start="3">
-<li>Set passphraseless ssh.</li>
+<li>设置无密码 ssh。</li>
 </ol>
-<pre><code class="hljs"><span class="hljs-comment"># Now check that you can ssh to the localhost without a passphrase:</span><br /><span class="hljs-variable">$ </span>ssh localhost<br /><span class="hljs-comment"># If you cannot ssh to localhost without a passphrase, execute the following commands</span><br /><span class="hljs-variable">$ </span>ssh-keygen -t rsa -P <span class="hljs-string">''</span> -f ~<span class="hljs-regexp">/.ssh/id</span>_rsa<br /><span class="hljs-variable">$ < [...]
+<pre><code class="hljs"><span class="hljs-comment"># 现在检查无需密码是否可以使用 ssh 连接到 localhost:</span><br /><span class="hljs-variable">$ </span>ssh localhost<br /><span class="hljs-comment"># 如果在无密码的情况下无法 ssh 连接到 localhost,请执行以下命令</span><br /><span class="hljs-variable">$ </span>ssh-keygen -t rsa -P <span class="hljs-string">''</span> -f ~<span class="hljs-regexp">/.ssh/id</span>_rsa<br /><span class="hljs-variable">$ </span>cat ~<span class="hljs-regexp">/.ssh/id</span>_rsa.pub &gt;&gt; ~<span  [...]
 <ol start="4">
-<li>Start HDFS.</li>
+<li>启动 HDFS。</li>
 </ol>
-<pre><code class="hljs"><span class="hljs-comment"># don't execute this command repeatedly, repeat execute will cauld the clusterId of the datanode is not consistent with namenode</span><br /><span class="hljs-variable">$HADOOP_HOME</span><span class="hljs-regexp">/bin/</span>hadoop namenode -format<br /><span class="hljs-variable">$HADOOP_HOME</span><span class="hljs-regexp">/sbin/</span>start-dfs.sh<br /></code></pre>    
+<pre><code class="hljs"><span class="hljs-comment"># 不重复执行此命令, 重复执行会捕获数据集群标识符与命名方式</span><br /><span class="hljs-variable">$HADOOP_HOME</span><span class="hljs-regexp">/bin/</span>hadoop namenode -format<br /><span class="hljs-variable">$HADOOP_HOME</span><span class="hljs-regexp">/sbin/</span>start-dfs.sh<br /></code></pre>    
 <ol start="5">
-<li>Navigate to the <a href="http://localhost:9870/">HDFS website</a>.</li>
+<li>导航到 <a href="http://localhost:9870/">HDFS 网站</a>。</li>
 </ol>
-<p>You can see the <strong>Overview</strong> page.</p>
+<p>您可以查看 <strong>概述</strong> 页面。</p>
 <p><img src="/docs/assets/FileSystem-1.png" alt=""></p>
 <ol>
-<li><p>At the top navigation bar, click <strong>Datanodes</strong> to check DataNode information.</p>
+<li><p>在顶部导航栏,单击 <strong>数据节点</strong> 查看数据节点信息。</p>
 <p><img src="/docs/assets/FileSystem-2.png" alt=""></p></li>
-<li><p>Click <strong>HTTP Address</strong> to get more detailed information about localhost:9866.</p>
-<p>As can be seen below, the size of <strong>Capacity Used</strong> is 4 KB, which is the initial value.</p>
+<li><p>单击 <strong>HTTP 地址</strong> 获取更多关于 localhost:9866 的详细信息。</p>
+<p>如下文所示, <strong>所用容量</strong> 的大小是 4 KB,它是初始值。</p>
 <p><img src="/docs/assets/FileSystem-3.png" alt=""></p></li>
 </ol>
-<h3><a class="anchor" aria-hidden="true" id="step-2-install-the-filesystem-offloader"></a><a href="#step-2-install-the-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2  [...]
-<p>For details, see <a href="#installation">installation</a>.</p>
-<h3><a class="anchor" aria-hidden="true" id="step-3-configure-the-filesystem-offloader"></a><a href="#step-3-configure-the-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1  [...]
-<p>As indicated in the <a href="#configuration">configuration</a> section, you need to configure some properties for the filesystem offloader driver before using it. This tutorial assumes that you have configured the filesystem offloader driver as below and run Pulsar in <strong>standalone</strong> mode.</p>
-<p>Set the following configurations in the <code>conf/standalone.conf</code> file.</p>
+<h3><a class="anchor" aria-hidden="true" id="第-2-步-安装-filesystem-offloader"></a><a href="#第-2-步-安装-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
+<p>更多详细信息,请参阅 <a href="#installation">安装</a>。</p>
+<h3><a class="anchor" aria-hidden="true" id="第-3-步-配置-filesystem-offloader"></a><a href="#第-3-步-配置-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
+<p>正如 <a href="#configuration">配置</a> 部分所指明的那样,需要先配置  filesystem offloader 驱动程序的一些属性,然后才能使用。 本教程假设您已按以下方式配置  filesystem offloader 驱动程序,并在<strong>独立</strong>模式下运行 Pulsar。</p>
+<p>在 <code>conf/standalone.conf</code> 文件中设置以下配置。</p>
 <pre><code class="hljs css language-conf"><span class="hljs-attr">managedLedgerOffloadDriver</span>=filesystem<br /><span class="hljs-attr">fileSystemURI</span>=hdfs://<span class="hljs-number">127.0</span>.<span class="hljs-number">0.1</span>:<span class="hljs-number">9000</span><br /><span class="hljs-attr">fileSystemProfilePath</span>=../conf/filesystem_<span class="hljs-literal">off</span>load_core_site.xml<br /></code></pre>    
 <blockquote>
 <p><strong>Note</strong></p>
-<p>For testing purposes, you can set the following two configurations to speed up ledger rollover, but it is not recommended that you set them in the production environment.</p>
+<p>为测试目的,您可以设置以下两个配置来加速 ledger 切换, 但不建议在生产环境中设置它们。</p>
 </blockquote>
 <pre><code class="hljs"><span class="hljs-attr">managedLedgerMinLedgerRolloverTimeMinutes</span>=<span class="hljs-number">1</span><br /><span class="hljs-attr">managedLedgerMaxEntriesPerLedger</span>=<span class="hljs-number">100</span><br /></code></pre>    
 </span></div></div><div id="tab-group-24829-content-24831" class="tab-pane" data-group="group_24829" tabindex="-1"><div><span><blockquote>
 <p><strong>Note</strong></p>
-<p>In this section, it is assumed that you have enabled NFS service and set the shared path of your NFS service. In this section, <code>/Users/test</code> is used as the shared path of NFS service.</p>
+<p>在本节中,假定您已启用 NFS 服务并设置 NFS 服务的共享路径。 在本节中, <code>/Users/test</code> 被用作 NFS 服务的共享路径。</p>
 </blockquote>
-<p>To offload data to NFS, follow these steps.</p>
-<h3><a class="anchor" aria-hidden="true" id="step-1-install-the-filesystem-offloader"></a><a href="#step-1-install-the-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2  [...]
-<p>For details, see <a href="#installation">installation</a>.</p>
-<h3><a class="anchor" aria-hidden="true" id="step-2-mont-your-nfs-to-your-local-filesystem"></a><a href="#step-2-mont-your-nfs-to-your-local-filesystem" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h- [...]
-<p>This example mounts mounts <em>/Users/pulsar_nfs</em> to <em>/Users/test</em>.</p>
+<p>要将数据卸载到 NFS,请执行以下步骤。</p>
+<h3><a class="anchor" aria-hidden="true" id="第-1-步-安装-filesystem-offloader"></a><a href="#第-1-步-安装-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
+<p>更多详细信息,请参阅 <a href="#installation">安装</a>。</p>
+<h3><a class="anchor" aria-hidden="true" id="第-2-步将-nfs-置于本地文件系统"></a><a href="#第-2-步将-nfs-置于本地文件系统" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.2 [...]
+<p>此示例将挂载 <em>/Users/pulsar_nfs</em> 到 <em>/Users/test</em>。</p>
 <pre><code class="hljs">mount -e <span class="hljs-number">192.168</span>.0.<span class="hljs-number">103</span><span class="hljs-symbol">:/Users/test/Users/pulsar_nfs</span><br /></code></pre>    
-<h3><a class="anchor" aria-hidden="true" id="step-3-configure-the-filesystem-offloader-driver"></a><a href="#step-3-configure-the-filesystem-offloader-driver" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9z [...]
-<p>As indicated in the <a href="#configuration">configuration</a> section, you need to configure some properties for the filesystem offloader driver before using it. This tutorial assumes that you have configured the filesystem offloader driver as below and run Pulsar in <strong>standalone</strong> mode.</p>
+<h3><a class="anchor" aria-hidden="true" id="第-3-步-配置-filesystem-offloader-驱动程序"></a><a href="#第-3-步-配置-filesystem-offloader-驱动程序" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5 [...]
+<p>正如 <a href="#configuration">配置</a> 部分所指明的那样,需要先配置  filesystem offloader 驱动程序的一些属性,然后才能使用。 本教程假设您已按以下方式配置  filesystem offloader 驱动程序,并在<strong>独立</strong>模式下运行 Pulsar。</p>
 <ol>
-<li>Set the following configurations in the <code>conf/standalone.conf</code> file.</li>
+<li>在 <code>conf/standalone.conf</code> 文件中设置以下配置。</li>
 </ol>
 <pre><code class="hljs css language-conf"><span class="hljs-attr">managedLedgerOffloadDriver</span>=filesystem<br /><span class="hljs-attr">fileSystemProfilePath</span>=../conf/filesystem_<span class="hljs-literal">off</span>load_core_site.xml<br /></code></pre>    
 <ol start="2">
-<li>Modify the <em>filesystem_offload_core_site.xml</em> as follows.</li>
+<li>修改 <em>filesystem_offload_core_site.xml</em>,如下所示。</li>
 </ol>
 <pre><code class="hljs"><span class="hljs-tag">&lt;<span class="hljs-name">property</span>&gt;</span><br />    <span class="hljs-tag">&lt;<span class="hljs-name">name</span>&gt;</span>fs.defaultFS<span class="hljs-tag">&lt;/<span class="hljs-name">name</span>&gt;</span><br />    <span class="hljs-tag">&lt;<span class="hljs-name">value</span>&gt;</span>file:///<span class="hljs-tag">&lt;/<span class="hljs-name">value</span>&gt;</span><br /><span class="hljs-tag">&lt;/<span class="hljs-nam [...]
 </span></div></div></div></div>
-<h3><a class="anchor" aria-hidden="true" id="step-4-offload-data-from-bookkeeper-to-filesystem"></a><a href="#step-4-offload-data-from-bookkeeper-to-filesystem" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4  [...]
-<p>Execute the following commands in the repository where you download Pulsar tarball. For example, <code>~/path/to/apache-pulsar-2.5.1</code>.</p>
+<h3><a class="anchor" aria-hidden="true" id="第-4-步将数据从-bookkeeper-卸载到文件系统"></a><a href="#第-4-步将数据从-bookkeeper-卸载到文件系统" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 [...]
+<p>在下载 Pulsar tar 包的仓库中执行以下命令。 例如, <code>~/path/to/apache-pulsar-2.5.1</code>。</p>
 <ol>
 <li><p>启动 Pulsar 单机模式。</p>
 <pre><code class="hljs">./bin/pulsar standalone -a <span class="hljs-number">127.0</span><span class="hljs-number">.0</span><span class="hljs-number">.1</span>
 </code></pre></li>
-<li><p>To ensure the data generated is not deleted immediately, it is recommended to set the <a href="https://pulsar.apache.org/docs/en/next/cookbooks-retention-expiry/#retention-policies">retention policy</a>, which can be either a <strong>size</strong> limit or a <strong>time</strong> limit. The larger value you set for the retention policy, the longer the data can be retained.</p>
+<li><p>为了确保生成的数据不会立即被删除,建议设置 <a href="https://pulsar.apache.org/docs/en/next/cookbooks-retention-expiry/#retention-policies">保留策略</a>, 可以是 <strong>大小</strong> 限制或 <strong>时间</strong> 限制。 为保留策略设定的值越大,数据保留的时间越长。</p>
 <pre><code class="hljs">./<span class="hljs-string">bin/</span><span class="hljs-string">pulsarctl </span><span class="hljs-string">namespaces </span><span class="hljs-built_in">set-retention</span> <span class="hljs-string">public/</span><span class="hljs-string">default </span><span class="hljs-built_in">--size</span> <span class="hljs-string">100M </span><span class="hljs-built_in">--time</span> <span class="hljs-string">2d
 </span></code></pre>
 <blockquote>
 <p><strong>提示</strong></p>
-<p>For more information about the <code>pulsarctl namespaces set-retention options</code> command, including flags, descriptions, default values, and shorthands, see <a href="https://docs.streamnative.io/pulsarctl/v2.7.0.6/#-em-set-retention-em-">here</a>.</p>
+<p>关于 <code>pulsar-admin namespaces set-offload-threshold options</code> 命令的更多信息,包括标志、描述、默认值和速记方法,参见<a href="https://docs.streamnative.io/pulsarctl/v2.7.0.6/#-em-set-retention-em-">这里</a>。</p>
 </blockquote></li>
-<li><p>Produce data using pulsar-client.</p>
+<li><p>使用 pulsar-client 生成数据。</p>
 <pre><code class="hljs">./bin/pulsar-client produce -m <span class="hljs-string">"Hello FileSystem Offloader"</span> -n <span class="hljs-number">1000</span> <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre></li>
-<li><p>The offloading operation starts after a ledger rollover is triggered. To ensure offload data successfully, it is recommended that you wait until several ledger rollovers are triggered. In this case, you might need to wait for a second. You can check the ledger status using pulsarctl.</p>
+<li><p>卸载操作在触发 ledger 切换后开始。 为了确保卸载数据成功,建议您等待多个 ledger 切换被触发。 在这种情况下,可能需要等待一秒钟。 您可以使用 pulsarctl 检查 ledger 状态。</p>
 <pre><code class="hljs">./bin/pulsarctl topics internal-stats <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre>
 <p><strong>输出</strong></p>
-<p>The data of the ledger 696 is not offloaded.</p>
+<p>ledger 696 的数据未卸载。</p>
 <pre><code class="hljs">{
 <span class="hljs-attr">"version"</span>: <span class="hljs-number">1</span>,
 <span class="hljs-attr">"creationDate"</span>: <span class="hljs-string">"2020-06-16T21:46:25.807+08:00"</span>,
@@ -302,14 +302,14 @@ Reason: <span class="hljs-builtin-name">Error</span> offloading: org.apache.book
 <span class="hljs-attr">"cursors"</span>: {}
 }
 </code></pre></li>
-<li><p>Wait a second and send more messages to the topic.</p>
+<li><p>请稍等,然后向 topic 发送更多消息。</p>
 <pre><code class="hljs">./bin/pulsar-client produce -m <span class="hljs-string">"Hello FileSystem Offloader"</span> -n <span class="hljs-number">1000</span> <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre></li>
-<li><p>Check the ledger status using pulsarctl.</p>
+<li><p>使用 pulsarctl 检查 ledger 状态。</p>
 <pre><code class="hljs">./bin/pulsarctl topics internal-stats <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre>
 <p><strong>输出</strong></p>
-<p>The ledger 696 is rollovered.</p>
+<p>ledger 696已经切换。</p>
 <pre><code class="hljs">{
 <span class="hljs-attr">"version"</span>: <span class="hljs-number">2</span>,
 <span class="hljs-attr">"creationDate"</span>: <span class="hljs-string">"2020-06-16T21:46:25.807+08:00"</span>,
@@ -329,19 +329,19 @@ Reason: <span class="hljs-builtin-name">Error</span> offloading: org.apache.book
 <span class="hljs-attr">"cursors"</span>: {}
 }
 </code></pre></li>
-<li><p>Trigger the offloading operation manually using pulsarctl.</p>
+<li><p>使用 pulsarctl 手动触发卸载操作。</p>
 <pre><code class="hljs">./bin/pulsarctl topic offload -s <span class="hljs-number">0</span> <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre>
 <p><strong>输出</strong></p>
-<p>Data in ledgers before the ledge 697 is offloaded.</p>
+<p>ledger 中的数据先于 ledge 697 已卸载。</p>
 <pre><code class="hljs"><span class="hljs-comment"># offload info, the ledgers before 697 will be offloaded</span>
 Offload triggered <span class="hljs-keyword">for</span> persistent:<span class="hljs-regexp">//</span>public<span class="hljs-regexp">/default/</span>fs-test3 <span class="hljs-keyword">for</span> messages before <span class="hljs-number">697</span>:<span class="hljs-number">0</span>:-<span class="hljs-number">1</span>
 </code></pre></li>
-<li><p>Check the ledger status using pulsarctl.</p>
+<li><p>使用 pulsarctl 检查 ledger 状态。</p>
 <pre><code class="hljs">./bin/pulsarctl topic <span class="hljs-type">internal</span>-<span class="hljs-keyword">info</span> <span class="hljs-built_in">public</span>/<span class="hljs-keyword">default</span>/fs-test
 </code></pre>
 <p><strong>输出</strong></p>
-<p>The data of the ledger 696 is offloaded.</p>
+<p>ledger 696 的数据已卸载。</p>
 <pre><code class="hljs">{
 <span class="hljs-attr">"version"</span>: <span class="hljs-number">4</span>,
 <span class="hljs-attr">"creationDate"</span>: <span class="hljs-string">"2020-06-16T21:46:25.807+08:00"</span>,
@@ -361,10 +361,10 @@ Offload triggered <span class="hljs-keyword">for</span> persistent:<span class="
 <span class="hljs-attr">"cursors"</span>: {}
 }
 </code></pre>
-<p>And the <strong>Capacity Used</strong> is changed from 4 KB to 116.46 KB.</p>
+<p>并且 <strong>所用容量</strong> 已经从 4 KB 变成 116.46 KB。</p>
 <p><img src="/docs/assets/FileSystem-8.png" alt=""></p></li>
 </ol>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.7.2/tiered-storage-gcs"><span class="arrow-prev">← </span><span>GCS offloader</span></a><a class="docs-next button" href="/docs/zh-CN/2.7.2/tiered-storage-azure"><span class="function-name-prevnext">Azure BlobStore offloader</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#安装">安装</a><ul class="toc-headings"><li> [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.7.2/tiered-storage-gcs"><span class="arrow-prev">← </span><span>GCS offloader</span></a><a class="docs-next button" href="/docs/zh-CN/2.7.2/tiered-storage-azure"><span class="function-name-prevnext">Azure BlobStore offloader</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#安装">安装</a><ul class="toc-headings"><li> [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.7.2/tiered-storage-filesystem/index.html b/content/docs/zh-CN/2.7.2/tiered-storage-filesystem/index.html
index 15a93f2..7a220c3 100644
--- a/content/docs/zh-CN/2.7.2/tiered-storage-filesystem/index.html
+++ b/content/docs/zh-CN/2.7.2/tiered-storage-filesystem/index.html
@@ -142,27 +142,27 @@ ls offloaders
 </ul>
 <h3><a class="anchor" aria-hidden="true" id="自动运行-filesystem-offloader"></a><a href="#自动运行-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c [...]
 <p>您可以将命名空间策略配置为在达到阈值后自动卸载数据。 该阈值基于一个 topic 在 Pulsar 集群的数据存储大小而定。 一旦 topic 到达阈值,就自动触发卸载操作。</p>
-<p>Threshold value|Action |---|--- | &gt; 0 | It triggers the offloading operation if the topic storage reaches its threshold. = 0| 它使 broker 竭尽全力地 offload 数据。 &lt; 0 |It disables automatic offloading operation.</p>
-<p>Automatic offload runs when a new segment is added to a topic log. If you set the threshold on a namespace, but few messages are being produced to the topic, the filesystem offloader does not work until the current segment is full.</p>
-<p>You can configure the threshold using CLI tools, such as pulsar-admin.</p>
+<p>阈值|动作 |---|--- | &gt; 0 | 如果 topic 存储达到其阈值,它就会触发卸载操作。 = 0| 它使 broker 竭尽全力地 offload 数据。 &lt; 0 | 它将禁用自动卸载操作。</p>
+<p>Automatic offload runs when a new segment is added to a topic log. 如果在命名空间上设置了阈值,但向该 topic 生产的消息很少,filesystem offloader 将会停止工作,直至当前 segment 达到饱和。</p>
+<p>通过命令行工具(CLI)可以设置阈值大小,比如 pulsar-admin。</p>
 <h4><a class="anchor" aria-hidden="true" id="示例"></a><a href="#示例" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c [...]
-<p>This example sets the filesystem offloader threshold to 10 MB using pulsar-admin.</p>
+<p>该示例使用 pulsar-admin 将 filesystem offloader 的阈值大小设置为 10 MB。</p>
 <pre><code class="hljs css language-bash">pulsar-admin namespaces <span class="hljs-built_in">set</span>-offload-threshold --size 10M my-tenant/my-namespace
 </code></pre>
 <blockquote>
 <h4><a class="anchor" aria-hidden="true" id="提示"></a><a href="#提示" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c [...]
 <p>关于 <code>pulsar-admin namespaces set-offload-threshold options</code> 命令的更多信息,包括标志、描述、默认值和速记方法,见<a href="/docs/zh-CN/2.7.2/pulsar-admin#set-offload-threshold">这里</a>。</p>
 </blockquote>
-<h3><a class="anchor" aria-hidden="true" id="run-filesystem-offloader-manually"></a><a href="#run-filesystem-offloader-manually" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S1 [...]
-<p>For individual topics, you can trigger the filesystem offloader manually using one of the following methods:</p>
+<h3><a class="anchor" aria-hidden="true" id="手动运行-filesystem-offloader"></a><a href="#手动运行-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c [...]
+<p>对于每一个 topic,使用下列方法之一可以手动触发 filesystem offloader:</p>
 <ul>
-<li><p>Use the REST endpoint.</p></li>
+<li><p>使用 REST 端点。</p></li>
 <li><p>使用命令行工具(例如 pulsar-admin)。</p></li>
 </ul>
-<p>To manually trigger the filesystem offloader via CLI tools, you need to specify the maximum amount of data (threshold) that should be retained on a Pulsar cluster for a topic. 如果 Pulsar 集群上 topic 的数据大小超过了这个阈值,那么该 topic 下的 segment 就会被陆续卸载到 filesystem 上,直到不再超过这个阈值。 优先卸载旧的 segment。</p>
+<p>要想用命令行工具触发 filesystem offloader,需要指定一个 topic 应该保留在 Pulsar 集群中的最大数据量(阈值)。 如果 Pulsar 集群上 topic 的数据大小超过了这个阈值,那么该 topic 下的 segment 就会被陆续卸载到 filesystem 上,直到不再超过这个阈值。 优先卸载旧的 segment。</p>
 <h4><a class="anchor" aria-hidden="true" id="示例-1"></a><a href="#示例-1" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
 <ul>
-<li><p>This example manually run the filesystem offloader using pulsar-admin.</p>
+<li><p>此示例使用 pulsar-admin 手动运行 filesystem offloader。</p>
 <pre><code class="hljs css language-bash">pulsar-admin topics offload --size-threshold 10M persistent://my-tenant/my-namespace/topic1
 </code></pre>
 <p><strong>输出</strong></p>
@@ -199,96 +199,96 @@ Reason: <span class="hljs-builtin-name">Error</span> offloading: org.apache.book
 </blockquote></li>
 </ul>
 <h2><a class="anchor" aria-hidden="true" id="教程"></a><a href="#教程" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c [...]
-<p>This section provides step-by-step instructions on how to use the filesystem offloader to move data from Pulsar to Hadoop Distributed File System (HDFS) or Network File system (NFS).</p>
-<pre><code class="hljs">&lt;div class=&quot;tabs&quot;&gt;&lt;div class=&quot;nav-tabs&quot;&gt;&lt;div id=&quot;tab-group-24829-tab-24830&quot; class=&quot;nav-link active&quot; data-group=&quot;group_24829&quot; data-tab=&quot;tab-group-24829-content-24830&quot;&gt;HDFS&lt;/div&gt;&lt;div id=&quot;tab-group-24829-tab-24831&quot; class=&quot;nav-link&quot; data-group=&quot;group_24829&quot; data-tab=&quot;tab-group-24829-content-24831&quot;&gt;NFS&lt;/div&gt;&lt;/div&gt;&lt;div class=&q [...]
+<p>本节提供有关如何使用  filesystem offloader  将数据从 Pulsar 移动到 Hadoop 分布式文件系统(HDFS)或网络文件系统(NFS)的分步说明。</p>
+<pre><code class="hljs">&lt;div class=&quot;tabs&quot;&gt;&lt;div class=&quot;nav-tabs&quot;&gt;&lt;div id=&quot;tab-group-24829-tab-24830&quot; class=&quot;nav-link active&quot; data-group=&quot;group_24829&quot; data-tab=&quot;tab-group-24829-content-24830&quot;&gt;HDFS&lt;/div&gt;&lt;div id=&quot;tab-group-24829-tab-24831&quot; class=&quot;nav-link&quot; data-group=&quot;group_24829&quot; data-tab=&quot;tab-group-24829-content-24831&quot;&gt;NFS&lt;/div&gt;&lt;/div&gt;&lt;div class=&q [...]
 </code></pre>
-<p><h3><a class="anchor" aria-hidden="true" id="step-1-prepare-the-hdfs-environment"></a><a href="#step-1-prepare-the-hdfs-environment" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22  [...]
-<p>This tutorial sets up a Hadoop single node cluster and uses Hadoop 3.2.1.</p>
+<p><h3><a class="anchor" aria-hidden="true" id="第-1-步准备-hdfs-环境"></a><a href="#第-1-步准备-hdfs-环境" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2 [...]
+<p>本教程使用 Hadoop 3.2.1设置一个 Hadoop 单个节点集群。</p>
 <blockquote>
 <p><strong>提示</strong></p>
-<p>For details about how to set up a Hadoop single node cluster, see <a href="https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html">here</a>.</p>
+<p>有关如何设置 Hadoop 单节点集群的详细信息,请参见<a href="https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html">此处</a>。</p>
 </blockquote>
 <ol>
-<li>Download and uncompress Hadoop 3.2.1.</li>
+<li>下载并解压缩 Hadoop 3.2.1。</li>
 </ol>
 <pre><code class="hljs">wget <span class="hljs-symbol">https:</span>/<span class="hljs-regexp">/mirrors.bfsu.edu.cn/apache</span><span class="hljs-regexp">/hadoop/common</span><span class="hljs-regexp">/hadoop-3.2.1/hadoop</span><span class="hljs-number">-3.2</span>.<span class="hljs-number">1</span>.tar.gz  <br /><br />tar -zxvf hadoop<span class="hljs-number">-3.2</span>.<span class="hljs-number">1</span>.tar.gz -C <span class="hljs-variable">$HADOOP_HOME</span><br /></code></pre>    
 <ol start="2">
-<li>Configure Hadoop.</li>
+<li>配置 Hadoop。</li>
 </ol>
 <pre><code class="hljs"><span class="hljs-meta"># $HADOOP_HOME/etc/hadoop/core-site.xml</span><br /><span class="hljs-params">&lt;configuration&gt;</span><br />    <span class="hljs-params">&lt;property&gt;</span><br />        <span class="hljs-params">&lt;name&gt;</span>fs.defaultFS<span class="hljs-params">&lt;/name&gt;</span><br />        <span class="hljs-params">&lt;value&gt;</span>hdfs:<span class="hljs-comment">//localhost:9000&lt;/value&gt;</span><br />    <span class="hljs-param [...]
 <ol start="3">
-<li>Set passphraseless ssh.</li>
+<li>设置无密码 ssh。</li>
 </ol>
-<pre><code class="hljs"><span class="hljs-comment"># Now check that you can ssh to the localhost without a passphrase:</span><br /><span class="hljs-variable">$ </span>ssh localhost<br /><span class="hljs-comment"># If you cannot ssh to localhost without a passphrase, execute the following commands</span><br /><span class="hljs-variable">$ </span>ssh-keygen -t rsa -P <span class="hljs-string">''</span> -f ~<span class="hljs-regexp">/.ssh/id</span>_rsa<br /><span class="hljs-variable">$ < [...]
+<pre><code class="hljs"><span class="hljs-comment"># 现在检查无需密码是否可以使用 ssh 连接到 localhost:</span><br /><span class="hljs-variable">$ </span>ssh localhost<br /><span class="hljs-comment"># 如果在无密码的情况下无法 ssh 连接到 localhost,请执行以下命令</span><br /><span class="hljs-variable">$ </span>ssh-keygen -t rsa -P <span class="hljs-string">''</span> -f ~<span class="hljs-regexp">/.ssh/id</span>_rsa<br /><span class="hljs-variable">$ </span>cat ~<span class="hljs-regexp">/.ssh/id</span>_rsa.pub &gt;&gt; ~<span  [...]
 <ol start="4">
-<li>Start HDFS.</li>
+<li>启动 HDFS。</li>
 </ol>
-<pre><code class="hljs"><span class="hljs-comment"># don't execute this command repeatedly, repeat execute will cauld the clusterId of the datanode is not consistent with namenode</span><br /><span class="hljs-variable">$HADOOP_HOME</span><span class="hljs-regexp">/bin/</span>hadoop namenode -format<br /><span class="hljs-variable">$HADOOP_HOME</span><span class="hljs-regexp">/sbin/</span>start-dfs.sh<br /></code></pre>    
+<pre><code class="hljs"><span class="hljs-comment"># 不重复执行此命令, 重复执行会捕获数据集群标识符与命名方式</span><br /><span class="hljs-variable">$HADOOP_HOME</span><span class="hljs-regexp">/bin/</span>hadoop namenode -format<br /><span class="hljs-variable">$HADOOP_HOME</span><span class="hljs-regexp">/sbin/</span>start-dfs.sh<br /></code></pre>    
 <ol start="5">
-<li>Navigate to the <a href="http://localhost:9870/">HDFS website</a>.</li>
+<li>导航到 <a href="http://localhost:9870/">HDFS 网站</a>。</li>
 </ol>
-<p>You can see the <strong>Overview</strong> page.</p>
+<p>您可以查看 <strong>概述</strong> 页面。</p>
 <p><img src="/docs/assets/FileSystem-1.png" alt=""></p>
 <ol>
-<li><p>At the top navigation bar, click <strong>Datanodes</strong> to check DataNode information.</p>
+<li><p>在顶部导航栏,单击 <strong>数据节点</strong> 查看数据节点信息。</p>
 <p><img src="/docs/assets/FileSystem-2.png" alt=""></p></li>
-<li><p>Click <strong>HTTP Address</strong> to get more detailed information about localhost:9866.</p>
-<p>As can be seen below, the size of <strong>Capacity Used</strong> is 4 KB, which is the initial value.</p>
+<li><p>单击 <strong>HTTP 地址</strong> 获取更多关于 localhost:9866 的详细信息。</p>
+<p>如下文所示, <strong>所用容量</strong> 的大小是 4 KB,它是初始值。</p>
 <p><img src="/docs/assets/FileSystem-3.png" alt=""></p></li>
 </ol>
-<h3><a class="anchor" aria-hidden="true" id="step-2-install-the-filesystem-offloader"></a><a href="#step-2-install-the-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2  [...]
-<p>For details, see <a href="#installation">installation</a>.</p>
-<h3><a class="anchor" aria-hidden="true" id="step-3-configure-the-filesystem-offloader"></a><a href="#step-3-configure-the-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1  [...]
-<p>As indicated in the <a href="#configuration">configuration</a> section, you need to configure some properties for the filesystem offloader driver before using it. This tutorial assumes that you have configured the filesystem offloader driver as below and run Pulsar in <strong>standalone</strong> mode.</p>
-<p>Set the following configurations in the <code>conf/standalone.conf</code> file.</p>
+<h3><a class="anchor" aria-hidden="true" id="第-2-步-安装-filesystem-offloader"></a><a href="#第-2-步-安装-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
+<p>更多详细信息,请参阅 <a href="#installation">安装</a>。</p>
+<h3><a class="anchor" aria-hidden="true" id="第-3-步-配置-filesystem-offloader"></a><a href="#第-3-步-配置-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
+<p>正如 <a href="#configuration">配置</a> 部分所指明的那样,需要先配置  filesystem offloader 驱动程序的一些属性,然后才能使用。 本教程假设您已按以下方式配置  filesystem offloader 驱动程序,并在<strong>独立</strong>模式下运行 Pulsar。</p>
+<p>在 <code>conf/standalone.conf</code> 文件中设置以下配置。</p>
 <pre><code class="hljs css language-conf"><span class="hljs-attr">managedLedgerOffloadDriver</span>=filesystem<br /><span class="hljs-attr">fileSystemURI</span>=hdfs://<span class="hljs-number">127.0</span>.<span class="hljs-number">0.1</span>:<span class="hljs-number">9000</span><br /><span class="hljs-attr">fileSystemProfilePath</span>=../conf/filesystem_<span class="hljs-literal">off</span>load_core_site.xml<br /></code></pre>    
 <blockquote>
 <p><strong>Note</strong></p>
-<p>For testing purposes, you can set the following two configurations to speed up ledger rollover, but it is not recommended that you set them in the production environment.</p>
+<p>为测试目的,您可以设置以下两个配置来加速 ledger 切换, 但不建议在生产环境中设置它们。</p>
 </blockquote>
 <pre><code class="hljs"><span class="hljs-attr">managedLedgerMinLedgerRolloverTimeMinutes</span>=<span class="hljs-number">1</span><br /><span class="hljs-attr">managedLedgerMaxEntriesPerLedger</span>=<span class="hljs-number">100</span><br /></code></pre>    
 </span></div></div><div id="tab-group-24829-content-24831" class="tab-pane" data-group="group_24829" tabindex="-1"><div><span><blockquote>
 <p><strong>Note</strong></p>
-<p>In this section, it is assumed that you have enabled NFS service and set the shared path of your NFS service. In this section, <code>/Users/test</code> is used as the shared path of NFS service.</p>
+<p>在本节中,假定您已启用 NFS 服务并设置 NFS 服务的共享路径。 在本节中, <code>/Users/test</code> 被用作 NFS 服务的共享路径。</p>
 </blockquote>
-<p>To offload data to NFS, follow these steps.</p>
-<h3><a class="anchor" aria-hidden="true" id="step-1-install-the-filesystem-offloader"></a><a href="#step-1-install-the-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2  [...]
-<p>For details, see <a href="#installation">installation</a>.</p>
-<h3><a class="anchor" aria-hidden="true" id="step-2-mont-your-nfs-to-your-local-filesystem"></a><a href="#step-2-mont-your-nfs-to-your-local-filesystem" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h- [...]
-<p>This example mounts mounts <em>/Users/pulsar_nfs</em> to <em>/Users/test</em>.</p>
+<p>要将数据卸载到 NFS,请执行以下步骤。</p>
+<h3><a class="anchor" aria-hidden="true" id="第-1-步-安装-filesystem-offloader"></a><a href="#第-1-步-安装-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
+<p>更多详细信息,请参阅 <a href="#installation">安装</a>。</p>
+<h3><a class="anchor" aria-hidden="true" id="第-2-步将-nfs-置于本地文件系统"></a><a href="#第-2-步将-nfs-置于本地文件系统" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.2 [...]
+<p>此示例将挂载 <em>/Users/pulsar_nfs</em> 到 <em>/Users/test</em>。</p>
 <pre><code class="hljs">mount -e <span class="hljs-number">192.168</span>.0.<span class="hljs-number">103</span><span class="hljs-symbol">:/Users/test/Users/pulsar_nfs</span><br /></code></pre>    
-<h3><a class="anchor" aria-hidden="true" id="step-3-configure-the-filesystem-offloader-driver"></a><a href="#step-3-configure-the-filesystem-offloader-driver" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9z [...]
-<p>As indicated in the <a href="#configuration">configuration</a> section, you need to configure some properties for the filesystem offloader driver before using it. This tutorial assumes that you have configured the filesystem offloader driver as below and run Pulsar in <strong>standalone</strong> mode.</p>
+<h3><a class="anchor" aria-hidden="true" id="第-3-步-配置-filesystem-offloader-驱动程序"></a><a href="#第-3-步-配置-filesystem-offloader-驱动程序" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5 [...]
+<p>正如 <a href="#configuration">配置</a> 部分所指明的那样,需要先配置  filesystem offloader 驱动程序的一些属性,然后才能使用。 本教程假设您已按以下方式配置  filesystem offloader 驱动程序,并在<strong>独立</strong>模式下运行 Pulsar。</p>
 <ol>
-<li>Set the following configurations in the <code>conf/standalone.conf</code> file.</li>
+<li>在 <code>conf/standalone.conf</code> 文件中设置以下配置。</li>
 </ol>
 <pre><code class="hljs css language-conf"><span class="hljs-attr">managedLedgerOffloadDriver</span>=filesystem<br /><span class="hljs-attr">fileSystemProfilePath</span>=../conf/filesystem_<span class="hljs-literal">off</span>load_core_site.xml<br /></code></pre>    
 <ol start="2">
-<li>Modify the <em>filesystem_offload_core_site.xml</em> as follows.</li>
+<li>修改 <em>filesystem_offload_core_site.xml</em>,如下所示。</li>
 </ol>
 <pre><code class="hljs"><span class="hljs-tag">&lt;<span class="hljs-name">property</span>&gt;</span><br />    <span class="hljs-tag">&lt;<span class="hljs-name">name</span>&gt;</span>fs.defaultFS<span class="hljs-tag">&lt;/<span class="hljs-name">name</span>&gt;</span><br />    <span class="hljs-tag">&lt;<span class="hljs-name">value</span>&gt;</span>file:///<span class="hljs-tag">&lt;/<span class="hljs-name">value</span>&gt;</span><br /><span class="hljs-tag">&lt;/<span class="hljs-nam [...]
 </span></div></div></div></div>
-<h3><a class="anchor" aria-hidden="true" id="step-4-offload-data-from-bookkeeper-to-filesystem"></a><a href="#step-4-offload-data-from-bookkeeper-to-filesystem" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4  [...]
-<p>Execute the following commands in the repository where you download Pulsar tarball. For example, <code>~/path/to/apache-pulsar-2.5.1</code>.</p>
+<h3><a class="anchor" aria-hidden="true" id="第-4-步将数据从-bookkeeper-卸载到文件系统"></a><a href="#第-4-步将数据从-bookkeeper-卸载到文件系统" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 [...]
+<p>在下载 Pulsar tar 包的仓库中执行以下命令。 例如, <code>~/path/to/apache-pulsar-2.5.1</code>。</p>
 <ol>
 <li><p>启动 Pulsar 单机模式。</p>
 <pre><code class="hljs">./bin/pulsar standalone -a <span class="hljs-number">127.0</span><span class="hljs-number">.0</span><span class="hljs-number">.1</span>
 </code></pre></li>
-<li><p>To ensure the data generated is not deleted immediately, it is recommended to set the <a href="https://pulsar.apache.org/docs/en/next/cookbooks-retention-expiry/#retention-policies">retention policy</a>, which can be either a <strong>size</strong> limit or a <strong>time</strong> limit. The larger value you set for the retention policy, the longer the data can be retained.</p>
+<li><p>为了确保生成的数据不会立即被删除,建议设置 <a href="https://pulsar.apache.org/docs/en/next/cookbooks-retention-expiry/#retention-policies">保留策略</a>, 可以是 <strong>大小</strong> 限制或 <strong>时间</strong> 限制。 为保留策略设定的值越大,数据保留的时间越长。</p>
 <pre><code class="hljs">./<span class="hljs-string">bin/</span><span class="hljs-string">pulsarctl </span><span class="hljs-string">namespaces </span><span class="hljs-built_in">set-retention</span> <span class="hljs-string">public/</span><span class="hljs-string">default </span><span class="hljs-built_in">--size</span> <span class="hljs-string">100M </span><span class="hljs-built_in">--time</span> <span class="hljs-string">2d
 </span></code></pre>
 <blockquote>
 <p><strong>提示</strong></p>
-<p>For more information about the <code>pulsarctl namespaces set-retention options</code> command, including flags, descriptions, default values, and shorthands, see <a href="https://docs.streamnative.io/pulsarctl/v2.7.0.6/#-em-set-retention-em-">here</a>.</p>
+<p>关于 <code>pulsar-admin namespaces set-offload-threshold options</code> 命令的更多信息,包括标志、描述、默认值和速记方法,参见<a href="https://docs.streamnative.io/pulsarctl/v2.7.0.6/#-em-set-retention-em-">这里</a>。</p>
 </blockquote></li>
-<li><p>Produce data using pulsar-client.</p>
+<li><p>使用 pulsar-client 生成数据。</p>
 <pre><code class="hljs">./bin/pulsar-client produce -m <span class="hljs-string">"Hello FileSystem Offloader"</span> -n <span class="hljs-number">1000</span> <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre></li>
-<li><p>The offloading operation starts after a ledger rollover is triggered. To ensure offload data successfully, it is recommended that you wait until several ledger rollovers are triggered. In this case, you might need to wait for a second. You can check the ledger status using pulsarctl.</p>
+<li><p>卸载操作在触发 ledger 切换后开始。 为了确保卸载数据成功,建议您等待多个 ledger 切换被触发。 在这种情况下,可能需要等待一秒钟。 您可以使用 pulsarctl 检查 ledger 状态。</p>
 <pre><code class="hljs">./bin/pulsarctl topics internal-stats <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre>
 <p><strong>输出</strong></p>
-<p>The data of the ledger 696 is not offloaded.</p>
+<p>ledger 696 的数据未卸载。</p>
 <pre><code class="hljs">{
 <span class="hljs-attr">"version"</span>: <span class="hljs-number">1</span>,
 <span class="hljs-attr">"creationDate"</span>: <span class="hljs-string">"2020-06-16T21:46:25.807+08:00"</span>,
@@ -302,14 +302,14 @@ Reason: <span class="hljs-builtin-name">Error</span> offloading: org.apache.book
 <span class="hljs-attr">"cursors"</span>: {}
 }
 </code></pre></li>
-<li><p>Wait a second and send more messages to the topic.</p>
+<li><p>请稍等,然后向 topic 发送更多消息。</p>
 <pre><code class="hljs">./bin/pulsar-client produce -m <span class="hljs-string">"Hello FileSystem Offloader"</span> -n <span class="hljs-number">1000</span> <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre></li>
-<li><p>Check the ledger status using pulsarctl.</p>
+<li><p>使用 pulsarctl 检查 ledger 状态。</p>
 <pre><code class="hljs">./bin/pulsarctl topics internal-stats <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre>
 <p><strong>输出</strong></p>
-<p>The ledger 696 is rollovered.</p>
+<p>ledger 696已经切换。</p>
 <pre><code class="hljs">{
 <span class="hljs-attr">"version"</span>: <span class="hljs-number">2</span>,
 <span class="hljs-attr">"creationDate"</span>: <span class="hljs-string">"2020-06-16T21:46:25.807+08:00"</span>,
@@ -329,19 +329,19 @@ Reason: <span class="hljs-builtin-name">Error</span> offloading: org.apache.book
 <span class="hljs-attr">"cursors"</span>: {}
 }
 </code></pre></li>
-<li><p>Trigger the offloading operation manually using pulsarctl.</p>
+<li><p>使用 pulsarctl 手动触发卸载操作。</p>
 <pre><code class="hljs">./bin/pulsarctl topic offload -s <span class="hljs-number">0</span> <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre>
 <p><strong>输出</strong></p>
-<p>Data in ledgers before the ledge 697 is offloaded.</p>
+<p>ledger 中的数据先于 ledge 697 已卸载。</p>
 <pre><code class="hljs"><span class="hljs-comment"># offload info, the ledgers before 697 will be offloaded</span>
 Offload triggered <span class="hljs-keyword">for</span> persistent:<span class="hljs-regexp">//</span>public<span class="hljs-regexp">/default/</span>fs-test3 <span class="hljs-keyword">for</span> messages before <span class="hljs-number">697</span>:<span class="hljs-number">0</span>:-<span class="hljs-number">1</span>
 </code></pre></li>
-<li><p>Check the ledger status using pulsarctl.</p>
+<li><p>使用 pulsarctl 检查 ledger 状态。</p>
 <pre><code class="hljs">./bin/pulsarctl topic <span class="hljs-type">internal</span>-<span class="hljs-keyword">info</span> <span class="hljs-built_in">public</span>/<span class="hljs-keyword">default</span>/fs-test
 </code></pre>
 <p><strong>输出</strong></p>
-<p>The data of the ledger 696 is offloaded.</p>
+<p>ledger 696 的数据已卸载。</p>
 <pre><code class="hljs">{
 <span class="hljs-attr">"version"</span>: <span class="hljs-number">4</span>,
 <span class="hljs-attr">"creationDate"</span>: <span class="hljs-string">"2020-06-16T21:46:25.807+08:00"</span>,
@@ -361,10 +361,10 @@ Offload triggered <span class="hljs-keyword">for</span> persistent:<span class="
 <span class="hljs-attr">"cursors"</span>: {}
 }
 </code></pre>
-<p>And the <strong>Capacity Used</strong> is changed from 4 KB to 116.46 KB.</p>
+<p>并且 <strong>所用容量</strong> 已经从 4 KB 变成 116.46 KB。</p>
 <p><img src="/docs/assets/FileSystem-8.png" alt=""></p></li>
 </ol>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.7.2/tiered-storage-gcs"><span class="arrow-prev">← </span><span>GCS offloader</span></a><a class="docs-next button" href="/docs/zh-CN/2.7.2/tiered-storage-azure"><span class="function-name-prevnext">Azure BlobStore offloader</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#安装">安装</a><ul class="toc-headings"><li> [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.7.2/tiered-storage-gcs"><span class="arrow-prev">← </span><span>GCS offloader</span></a><a class="docs-next button" href="/docs/zh-CN/2.7.2/tiered-storage-azure"><span class="function-name-prevnext">Azure BlobStore offloader</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#安装">安装</a><ul class="toc-headings"><li> [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.7.3/tiered-storage-filesystem.html b/content/docs/zh-CN/2.7.3/tiered-storage-filesystem.html
index eef68fc..740e8f6 100644
--- a/content/docs/zh-CN/2.7.3/tiered-storage-filesystem.html
+++ b/content/docs/zh-CN/2.7.3/tiered-storage-filesystem.html
@@ -142,27 +142,27 @@ ls offloaders
 </ul>
 <h3><a class="anchor" aria-hidden="true" id="自动运行-filesystem-offloader"></a><a href="#自动运行-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c [...]
 <p>您可以将命名空间策略配置为在达到阈值后自动卸载数据。 该阈值基于一个 topic 在 Pulsar 集群的数据存储大小而定。 一旦 topic 到达阈值,就自动触发卸载操作。</p>
-<p>Threshold value|Action |---|--- | &gt; 0 | It triggers the offloading operation if the topic storage reaches its threshold. = 0| 它使 broker 竭尽全力地 offload 数据。 &lt; 0 |It disables automatic offloading operation.</p>
-<p>Automatic offload runs when a new segment is added to a topic log. If you set the threshold on a namespace, but few messages are being produced to the topic, the filesystem offloader does not work until the current segment is full.</p>
-<p>You can configure the threshold using CLI tools, such as pulsar-admin.</p>
+<p>阈值|动作 |---|--- | &gt; 0 | 如果 topic 存储达到其阈值,它就会触发卸载操作。 = 0| 它使 broker 竭尽全力地 offload 数据。 &lt; 0 | 它将禁用自动卸载操作。</p>
+<p>Automatic offload runs when a new segment is added to a topic log. 如果在命名空间上设置了阈值,但向该 topic 生产的消息很少,filesystem offloader 将会停止工作,直至当前 segment 达到饱和。</p>
+<p>通过命令行工具(CLI)可以设置阈值大小,比如 pulsar-admin。</p>
 <h4><a class="anchor" aria-hidden="true" id="示例"></a><a href="#示例" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c [...]
-<p>This example sets the filesystem offloader threshold to 10 MB using pulsar-admin.</p>
+<p>该示例使用 pulsar-admin 将 filesystem offloader 的阈值大小设置为 10 MB。</p>
 <pre><code class="hljs css language-bash">pulsar-admin namespaces <span class="hljs-built_in">set</span>-offload-threshold --size 10M my-tenant/my-namespace
 </code></pre>
 <blockquote>
 <h4><a class="anchor" aria-hidden="true" id="提示"></a><a href="#提示" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c [...]
 <p>关于 <code>pulsar-admin namespaces set-offload-threshold options</code> 命令的更多信息,包括标志、描述、默认值和速记方法,见<a href="/docs/zh-CN/2.7.3/pulsar-admin#set-offload-threshold">这里</a>。</p>
 </blockquote>
-<h3><a class="anchor" aria-hidden="true" id="run-filesystem-offloader-manually"></a><a href="#run-filesystem-offloader-manually" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S1 [...]
-<p>For individual topics, you can trigger the filesystem offloader manually using one of the following methods:</p>
+<h3><a class="anchor" aria-hidden="true" id="手动运行-filesystem-offloader"></a><a href="#手动运行-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c [...]
+<p>对于每一个 topic,使用下列方法之一可以手动触发 filesystem offloader:</p>
 <ul>
-<li><p>Use the REST endpoint.</p></li>
+<li><p>使用 REST 端点。</p></li>
 <li><p>使用命令行工具(例如 pulsar-admin)。</p></li>
 </ul>
-<p>To manually trigger the filesystem offloader via CLI tools, you need to specify the maximum amount of data (threshold) that should be retained on a Pulsar cluster for a topic. 如果 Pulsar 集群上 topic 的数据大小超过了这个阈值,那么该 topic 下的 segment 就会被陆续卸载到 filesystem 上,直到不再超过这个阈值。 优先卸载旧的 segment。</p>
+<p>要想用命令行工具触发 filesystem offloader,需要指定一个 topic 应该保留在 Pulsar 集群中的最大数据量(阈值)。 如果 Pulsar 集群上 topic 的数据大小超过了这个阈值,那么该 topic 下的 segment 就会被陆续卸载到 filesystem 上,直到不再超过这个阈值。 优先卸载旧的 segment。</p>
 <h4><a class="anchor" aria-hidden="true" id="示例-1"></a><a href="#示例-1" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
 <ul>
-<li><p>This example manually run the filesystem offloader using pulsar-admin.</p>
+<li><p>此示例使用 pulsar-admin 手动运行 filesystem offloader。</p>
 <pre><code class="hljs css language-bash">pulsar-admin topics offload --size-threshold 10M persistent://my-tenant/my-namespace/topic1
 </code></pre>
 <p><strong>输出</strong></p>
@@ -199,96 +199,96 @@ Reason: <span class="hljs-builtin-name">Error</span> offloading: org.apache.book
 </blockquote></li>
 </ul>
 <h2><a class="anchor" aria-hidden="true" id="教程"></a><a href="#教程" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c [...]
-<p>This section provides step-by-step instructions on how to use the filesystem offloader to move data from Pulsar to Hadoop Distributed File System (HDFS) or Network File system (NFS).</p>
-<pre><code class="hljs">&lt;div class=&quot;tabs&quot;&gt;&lt;div class=&quot;nav-tabs&quot;&gt;&lt;div id=&quot;tab-group-24258-tab-24259&quot; class=&quot;nav-link active&quot; data-group=&quot;group_24258&quot; data-tab=&quot;tab-group-24258-content-24259&quot;&gt;HDFS&lt;/div&gt;&lt;div id=&quot;tab-group-24258-tab-24260&quot; class=&quot;nav-link&quot; data-group=&quot;group_24258&quot; data-tab=&quot;tab-group-24258-content-24260&quot;&gt;NFS&lt;/div&gt;&lt;/div&gt;&lt;div class=&q [...]
+<p>本节提供有关如何使用  filesystem offloader  将数据从 Pulsar 移动到 Hadoop 分布式文件系统(HDFS)或网络文件系统(NFS)的分步说明。</p>
+<pre><code class="hljs">&lt;div class=&quot;tabs&quot;&gt;&lt;div class=&quot;nav-tabs&quot;&gt;&lt;div id=&quot;tab-group-24258-tab-24259&quot; class=&quot;nav-link active&quot; data-group=&quot;group_24258&quot; data-tab=&quot;tab-group-24258-content-24259&quot;&gt;HDFS&lt;/div&gt;&lt;div id=&quot;tab-group-24258-tab-24260&quot; class=&quot;nav-link&quot; data-group=&quot;group_24258&quot; data-tab=&quot;tab-group-24258-content-24260&quot;&gt;NFS&lt;/div&gt;&lt;/div&gt;&lt;div class=&q [...]
 </code></pre>
-<p><h3><a class="anchor" aria-hidden="true" id="step-1-prepare-the-hdfs-environment"></a><a href="#step-1-prepare-the-hdfs-environment" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22  [...]
-<p>This tutorial sets up a Hadoop single node cluster and uses Hadoop 3.2.1.</p>
+<p><h3><a class="anchor" aria-hidden="true" id="第-1-步准备-hdfs-环境"></a><a href="#第-1-步准备-hdfs-环境" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2 [...]
+<p>本教程使用 Hadoop 3.2.1设置一个 Hadoop 单个节点集群。</p>
 <blockquote>
 <p><strong>提示</strong></p>
-<p>For details about how to set up a Hadoop single node cluster, see <a href="https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html">here</a>.</p>
+<p>有关如何设置 Hadoop 单节点集群的详细信息,请参见<a href="https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html">此处</a>。</p>
 </blockquote>
 <ol>
-<li>Download and uncompress Hadoop 3.2.1.</li>
+<li>下载并解压缩 Hadoop 3.2.1。</li>
 </ol>
 <pre><code class="hljs">wget <span class="hljs-symbol">https:</span>/<span class="hljs-regexp">/mirrors.bfsu.edu.cn/apache</span><span class="hljs-regexp">/hadoop/common</span><span class="hljs-regexp">/hadoop-3.2.1/hadoop</span><span class="hljs-number">-3.2</span>.<span class="hljs-number">1</span>.tar.gz  <br /><br />tar -zxvf hadoop<span class="hljs-number">-3.2</span>.<span class="hljs-number">1</span>.tar.gz -C <span class="hljs-variable">$HADOOP_HOME</span><br /></code></pre>    
 <ol start="2">
-<li>Configure Hadoop.</li>
+<li>配置 Hadoop。</li>
 </ol>
 <pre><code class="hljs"><span class="hljs-meta"># $HADOOP_HOME/etc/hadoop/core-site.xml</span><br /><span class="hljs-params">&lt;configuration&gt;</span><br />    <span class="hljs-params">&lt;property&gt;</span><br />        <span class="hljs-params">&lt;name&gt;</span>fs.defaultFS<span class="hljs-params">&lt;/name&gt;</span><br />        <span class="hljs-params">&lt;value&gt;</span>hdfs:<span class="hljs-comment">//localhost:9000&lt;/value&gt;</span><br />    <span class="hljs-param [...]
 <ol start="3">
-<li>Set passphraseless ssh.</li>
+<li>设置无密码 ssh。</li>
 </ol>
-<pre><code class="hljs"><span class="hljs-comment"># Now check that you can ssh to the localhost without a passphrase:</span><br /><span class="hljs-variable">$ </span>ssh localhost<br /><span class="hljs-comment"># If you cannot ssh to localhost without a passphrase, execute the following commands</span><br /><span class="hljs-variable">$ </span>ssh-keygen -t rsa -P <span class="hljs-string">''</span> -f ~<span class="hljs-regexp">/.ssh/id</span>_rsa<br /><span class="hljs-variable">$ < [...]
+<pre><code class="hljs"><span class="hljs-comment"># 现在检查无需密码是否可以使用 ssh 连接到 localhost:</span><br /><span class="hljs-variable">$ </span>ssh localhost<br /><span class="hljs-comment"># 如果在无密码的情况下无法 ssh 连接到 localhost,请执行以下命令</span><br /><span class="hljs-variable">$ </span>ssh-keygen -t rsa -P <span class="hljs-string">''</span> -f ~<span class="hljs-regexp">/.ssh/id</span>_rsa<br /><span class="hljs-variable">$ </span>cat ~<span class="hljs-regexp">/.ssh/id</span>_rsa.pub &gt;&gt; ~<span  [...]
 <ol start="4">
-<li>Start HDFS.</li>
+<li>启动 HDFS。</li>
 </ol>
-<pre><code class="hljs"><span class="hljs-comment"># don't execute this command repeatedly, repeat execute will cauld the clusterId of the datanode is not consistent with namenode</span><br /><span class="hljs-variable">$HADOOP_HOME</span><span class="hljs-regexp">/bin/</span>hadoop namenode -format<br /><span class="hljs-variable">$HADOOP_HOME</span><span class="hljs-regexp">/sbin/</span>start-dfs.sh<br /></code></pre>    
+<pre><code class="hljs"><span class="hljs-comment"># 不重复执行此命令, 重复执行会捕获数据集群标识符与命名方式</span><br /><span class="hljs-variable">$HADOOP_HOME</span><span class="hljs-regexp">/bin/</span>hadoop namenode -format<br /><span class="hljs-variable">$HADOOP_HOME</span><span class="hljs-regexp">/sbin/</span>start-dfs.sh<br /></code></pre>    
 <ol start="5">
-<li>Navigate to the <a href="http://localhost:9870/">HDFS website</a>.</li>
+<li>导航到 <a href="http://localhost:9870/">HDFS 网站</a>。</li>
 </ol>
-<p>You can see the <strong>Overview</strong> page.</p>
+<p>您可以查看 <strong>概述</strong> 页面。</p>
 <p><img src="/docs/assets/FileSystem-1.png" alt=""></p>
 <ol>
-<li><p>At the top navigation bar, click <strong>Datanodes</strong> to check DataNode information.</p>
+<li><p>在顶部导航栏,单击 <strong>数据节点</strong> 查看数据节点信息。</p>
 <p><img src="/docs/assets/FileSystem-2.png" alt=""></p></li>
-<li><p>Click <strong>HTTP Address</strong> to get more detailed information about localhost:9866.</p>
-<p>As can be seen below, the size of <strong>Capacity Used</strong> is 4 KB, which is the initial value.</p>
+<li><p>单击 <strong>HTTP 地址</strong> 获取更多关于 localhost:9866 的详细信息。</p>
+<p>如下文所示, <strong>所用容量</strong> 的大小是 4 KB,它是初始值。</p>
 <p><img src="/docs/assets/FileSystem-3.png" alt=""></p></li>
 </ol>
-<h3><a class="anchor" aria-hidden="true" id="step-2-install-the-filesystem-offloader"></a><a href="#step-2-install-the-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2  [...]
-<p>For details, see <a href="#installation">installation</a>.</p>
-<h3><a class="anchor" aria-hidden="true" id="step-3-configure-the-filesystem-offloader"></a><a href="#step-3-configure-the-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1  [...]
-<p>As indicated in the <a href="#configuration">configuration</a> section, you need to configure some properties for the filesystem offloader driver before using it. This tutorial assumes that you have configured the filesystem offloader driver as below and run Pulsar in <strong>standalone</strong> mode.</p>
-<p>Set the following configurations in the <code>conf/standalone.conf</code> file.</p>
+<h3><a class="anchor" aria-hidden="true" id="第-2-步-安装-filesystem-offloader"></a><a href="#第-2-步-安装-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
+<p>更多详细信息,请参阅 <a href="#installation">安装</a>。</p>
+<h3><a class="anchor" aria-hidden="true" id="第-3-步-配置-filesystem-offloader"></a><a href="#第-3-步-配置-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
+<p>正如 <a href="#configuration">配置</a> 部分所指明的那样,需要先配置  filesystem offloader 驱动程序的一些属性,然后才能使用。 本教程假设您已按以下方式配置  filesystem offloader 驱动程序,并在<strong>独立</strong>模式下运行 Pulsar。</p>
+<p>在 <code>conf/standalone.conf</code> 文件中设置以下配置。</p>
 <pre><code class="hljs css language-conf"><span class="hljs-attr">managedLedgerOffloadDriver</span>=filesystem<br /><span class="hljs-attr">fileSystemURI</span>=hdfs://<span class="hljs-number">127.0</span>.<span class="hljs-number">0.1</span>:<span class="hljs-number">9000</span><br /><span class="hljs-attr">fileSystemProfilePath</span>=../conf/filesystem_<span class="hljs-literal">off</span>load_core_site.xml<br /></code></pre>    
 <blockquote>
 <p><strong>Note</strong></p>
-<p>For testing purposes, you can set the following two configurations to speed up ledger rollover, but it is not recommended that you set them in the production environment.</p>
+<p>为测试目的,您可以设置以下两个配置来加速 ledger 切换, 但不建议在生产环境中设置它们。</p>
 </blockquote>
 <pre><code class="hljs"><span class="hljs-attr">managedLedgerMinLedgerRolloverTimeMinutes</span>=<span class="hljs-number">1</span><br /><span class="hljs-attr">managedLedgerMaxEntriesPerLedger</span>=<span class="hljs-number">100</span><br /></code></pre>    
 </span></div></div><div id="tab-group-24258-content-24260" class="tab-pane" data-group="group_24258" tabindex="-1"><div><span><blockquote>
 <p><strong>Note</strong></p>
-<p>In this section, it is assumed that you have enabled NFS service and set the shared path of your NFS service. In this section, <code>/Users/test</code> is used as the shared path of NFS service.</p>
+<p>在本节中,假定您已启用 NFS 服务并设置 NFS 服务的共享路径。 在本节中, <code>/Users/test</code> 被用作 NFS 服务的共享路径。</p>
 </blockquote>
-<p>To offload data to NFS, follow these steps.</p>
-<h3><a class="anchor" aria-hidden="true" id="step-1-install-the-filesystem-offloader"></a><a href="#step-1-install-the-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2  [...]
-<p>For details, see <a href="#installation">installation</a>.</p>
-<h3><a class="anchor" aria-hidden="true" id="step-2-mont-your-nfs-to-your-local-filesystem"></a><a href="#step-2-mont-your-nfs-to-your-local-filesystem" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h- [...]
-<p>This example mounts mounts <em>/Users/pulsar_nfs</em> to <em>/Users/test</em>.</p>
+<p>要将数据卸载到 NFS,请执行以下步骤。</p>
+<h3><a class="anchor" aria-hidden="true" id="第-1-步-安装-filesystem-offloader"></a><a href="#第-1-步-安装-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
+<p>更多详细信息,请参阅 <a href="#installation">安装</a>。</p>
+<h3><a class="anchor" aria-hidden="true" id="第-2-步将-nfs-置于本地文件系统"></a><a href="#第-2-步将-nfs-置于本地文件系统" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.2 [...]
+<p>此示例将挂载 <em>/Users/pulsar_nfs</em> 到 <em>/Users/test</em>。</p>
 <pre><code class="hljs">mount -e <span class="hljs-number">192.168</span>.0.<span class="hljs-number">103</span><span class="hljs-symbol">:/Users/test/Users/pulsar_nfs</span><br /></code></pre>    
-<h3><a class="anchor" aria-hidden="true" id="step-3-configure-the-filesystem-offloader-driver"></a><a href="#step-3-configure-the-filesystem-offloader-driver" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9z [...]
-<p>As indicated in the <a href="#configuration">configuration</a> section, you need to configure some properties for the filesystem offloader driver before using it. This tutorial assumes that you have configured the filesystem offloader driver as below and run Pulsar in <strong>standalone</strong> mode.</p>
+<h3><a class="anchor" aria-hidden="true" id="第-3-步-配置-filesystem-offloader-驱动程序"></a><a href="#第-3-步-配置-filesystem-offloader-驱动程序" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5 [...]
+<p>正如 <a href="#configuration">配置</a> 部分所指明的那样,需要先配置  filesystem offloader 驱动程序的一些属性,然后才能使用。 本教程假设您已按以下方式配置  filesystem offloader 驱动程序,并在<strong>独立</strong>模式下运行 Pulsar。</p>
 <ol>
-<li>Set the following configurations in the <code>conf/standalone.conf</code> file.</li>
+<li>在 <code>conf/standalone.conf</code> 文件中设置以下配置。</li>
 </ol>
 <pre><code class="hljs css language-conf"><span class="hljs-attr">managedLedgerOffloadDriver</span>=filesystem<br /><span class="hljs-attr">fileSystemProfilePath</span>=../conf/filesystem_<span class="hljs-literal">off</span>load_core_site.xml<br /></code></pre>    
 <ol start="2">
-<li>Modify the <em>filesystem_offload_core_site.xml</em> as follows.</li>
+<li>修改 <em>filesystem_offload_core_site.xml</em>,如下所示。</li>
 </ol>
 <pre><code class="hljs"><span class="hljs-tag">&lt;<span class="hljs-name">property</span>&gt;</span><br />    <span class="hljs-tag">&lt;<span class="hljs-name">name</span>&gt;</span>fs.defaultFS<span class="hljs-tag">&lt;/<span class="hljs-name">name</span>&gt;</span><br />    <span class="hljs-tag">&lt;<span class="hljs-name">value</span>&gt;</span>file:///<span class="hljs-tag">&lt;/<span class="hljs-name">value</span>&gt;</span><br /><span class="hljs-tag">&lt;/<span class="hljs-nam [...]
 </span></div></div></div></div>
-<h3><a class="anchor" aria-hidden="true" id="step-4-offload-data-from-bookkeeper-to-filesystem"></a><a href="#step-4-offload-data-from-bookkeeper-to-filesystem" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4  [...]
-<p>Execute the following commands in the repository where you download Pulsar tarball. For example, <code>~/path/to/apache-pulsar-2.5.1</code>.</p>
+<h3><a class="anchor" aria-hidden="true" id="第-4-步将数据从-bookkeeper-卸载到文件系统"></a><a href="#第-4-步将数据从-bookkeeper-卸载到文件系统" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 [...]
+<p>在下载 Pulsar tar 包的仓库中执行以下命令。 例如, <code>~/path/to/apache-pulsar-2.5.1</code>。</p>
 <ol>
 <li><p>启动 Pulsar 单机模式。</p>
 <pre><code class="hljs">./bin/pulsar standalone -a <span class="hljs-number">127.0</span><span class="hljs-number">.0</span><span class="hljs-number">.1</span>
 </code></pre></li>
-<li><p>To ensure the data generated is not deleted immediately, it is recommended to set the <a href="https://pulsar.apache.org/docs/en/next/cookbooks-retention-expiry/#retention-policies">retention policy</a>, which can be either a <strong>size</strong> limit or a <strong>time</strong> limit. The larger value you set for the retention policy, the longer the data can be retained.</p>
+<li><p>为了确保生成的数据不会立即被删除,建议设置 <a href="https://pulsar.apache.org/docs/en/next/cookbooks-retention-expiry/#retention-policies">保留策略</a>, 可以是 <strong>大小</strong> 限制或 <strong>时间</strong> 限制。 为保留策略设定的值越大,数据保留的时间越长。</p>
 <pre><code class="hljs">./<span class="hljs-string">bin/</span><span class="hljs-string">pulsarctl </span><span class="hljs-string">namespaces </span><span class="hljs-built_in">set-retention</span> <span class="hljs-string">public/</span><span class="hljs-string">default </span><span class="hljs-built_in">--size</span> <span class="hljs-string">100M </span><span class="hljs-built_in">--time</span> <span class="hljs-string">2d
 </span></code></pre>
 <blockquote>
 <p><strong>提示</strong></p>
-<p>For more information about the <code>pulsarctl namespaces set-retention options</code> command, including flags, descriptions, default values, and shorthands, see <a href="https://docs.streamnative.io/pulsarctl/v2.7.0.6/#-em-set-retention-em-">here</a>.</p>
+<p>关于 <code>pulsar-admin namespaces set-offload-threshold options</code> 命令的更多信息,包括标志、描述、默认值和速记方法,参见<a href="https://docs.streamnative.io/pulsarctl/v2.7.0.6/#-em-set-retention-em-">这里</a>。</p>
 </blockquote></li>
-<li><p>Produce data using pulsar-client.</p>
+<li><p>使用 pulsar-client 生成数据。</p>
 <pre><code class="hljs">./bin/pulsar-client produce -m <span class="hljs-string">"Hello FileSystem Offloader"</span> -n <span class="hljs-number">1000</span> <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre></li>
-<li><p>The offloading operation starts after a ledger rollover is triggered. To ensure offload data successfully, it is recommended that you wait until several ledger rollovers are triggered. In this case, you might need to wait for a second. You can check the ledger status using pulsarctl.</p>
+<li><p>卸载操作在触发 ledger 切换后开始。 为了确保卸载数据成功,建议您等待多个 ledger 切换被触发。 在这种情况下,可能需要等待一秒钟。 您可以使用 pulsarctl 检查 ledger 状态。</p>
 <pre><code class="hljs">./bin/pulsarctl topics internal-stats <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre>
 <p><strong>输出</strong></p>
-<p>The data of the ledger 696 is not offloaded.</p>
+<p>ledger 696 的数据未卸载。</p>
 <pre><code class="hljs">{
 <span class="hljs-attr">"version"</span>: <span class="hljs-number">1</span>,
 <span class="hljs-attr">"creationDate"</span>: <span class="hljs-string">"2020-06-16T21:46:25.807+08:00"</span>,
@@ -302,14 +302,14 @@ Reason: <span class="hljs-builtin-name">Error</span> offloading: org.apache.book
 <span class="hljs-attr">"cursors"</span>: {}
 }
 </code></pre></li>
-<li><p>Wait a second and send more messages to the topic.</p>
+<li><p>请稍等,然后向 topic 发送更多消息。</p>
 <pre><code class="hljs">./bin/pulsar-client produce -m <span class="hljs-string">"Hello FileSystem Offloader"</span> -n <span class="hljs-number">1000</span> <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre></li>
-<li><p>Check the ledger status using pulsarctl.</p>
+<li><p>使用 pulsarctl 检查 ledger 状态。</p>
 <pre><code class="hljs">./bin/pulsarctl topics internal-stats <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre>
 <p><strong>输出</strong></p>
-<p>The ledger 696 is rollovered.</p>
+<p>ledger 696已经切换。</p>
 <pre><code class="hljs">{
 <span class="hljs-attr">"version"</span>: <span class="hljs-number">2</span>,
 <span class="hljs-attr">"creationDate"</span>: <span class="hljs-string">"2020-06-16T21:46:25.807+08:00"</span>,
@@ -329,19 +329,19 @@ Reason: <span class="hljs-builtin-name">Error</span> offloading: org.apache.book
 <span class="hljs-attr">"cursors"</span>: {}
 }
 </code></pre></li>
-<li><p>Trigger the offloading operation manually using pulsarctl.</p>
+<li><p>使用 pulsarctl 手动触发卸载操作。</p>
 <pre><code class="hljs">./bin/pulsarctl topic offload -s <span class="hljs-number">0</span> <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre>
 <p><strong>输出</strong></p>
-<p>Data in ledgers before the ledge 697 is offloaded.</p>
+<p>ledger 中的数据先于 ledge 697 已卸载。</p>
 <pre><code class="hljs"><span class="hljs-comment"># offload info, the ledgers before 697 will be offloaded</span>
 Offload triggered <span class="hljs-keyword">for</span> persistent:<span class="hljs-regexp">//</span>public<span class="hljs-regexp">/default/</span>fs-test3 <span class="hljs-keyword">for</span> messages before <span class="hljs-number">697</span>:<span class="hljs-number">0</span>:-<span class="hljs-number">1</span>
 </code></pre></li>
-<li><p>Check the ledger status using pulsarctl.</p>
+<li><p>使用 pulsarctl 检查 ledger 状态。</p>
 <pre><code class="hljs">./bin/pulsarctl topic <span class="hljs-type">internal</span>-<span class="hljs-keyword">info</span> <span class="hljs-built_in">public</span>/<span class="hljs-keyword">default</span>/fs-test
 </code></pre>
 <p><strong>输出</strong></p>
-<p>The data of the ledger 696 is offloaded.</p>
+<p>ledger 696 的数据已卸载。</p>
 <pre><code class="hljs">{
 <span class="hljs-attr">"version"</span>: <span class="hljs-number">4</span>,
 <span class="hljs-attr">"creationDate"</span>: <span class="hljs-string">"2020-06-16T21:46:25.807+08:00"</span>,
@@ -361,10 +361,10 @@ Offload triggered <span class="hljs-keyword">for</span> persistent:<span class="
 <span class="hljs-attr">"cursors"</span>: {}
 }
 </code></pre>
-<p>And the <strong>Capacity Used</strong> is changed from 4 KB to 116.46 KB.</p>
+<p>并且 <strong>所用容量</strong> 已经从 4 KB 变成 116.46 KB。</p>
 <p><img src="/docs/assets/FileSystem-8.png" alt=""></p></li>
 </ol>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.7.3/tiered-storage-gcs"><span class="arrow-prev">← </span><span>GCS offloader</span></a><a class="docs-next button" href="/docs/zh-CN/2.7.3/tiered-storage-azure"><span class="function-name-prevnext">Azure BlobStore offloader</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#安装">安装</a><ul class="toc-headings"><li> [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.7.3/tiered-storage-gcs"><span class="arrow-prev">← </span><span>GCS offloader</span></a><a class="docs-next button" href="/docs/zh-CN/2.7.3/tiered-storage-azure"><span class="function-name-prevnext">Azure BlobStore offloader</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#安装">安装</a><ul class="toc-headings"><li> [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.7.3/tiered-storage-filesystem/index.html b/content/docs/zh-CN/2.7.3/tiered-storage-filesystem/index.html
index eef68fc..740e8f6 100644
--- a/content/docs/zh-CN/2.7.3/tiered-storage-filesystem/index.html
+++ b/content/docs/zh-CN/2.7.3/tiered-storage-filesystem/index.html
@@ -142,27 +142,27 @@ ls offloaders
 </ul>
 <h3><a class="anchor" aria-hidden="true" id="自动运行-filesystem-offloader"></a><a href="#自动运行-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c [...]
 <p>您可以将命名空间策略配置为在达到阈值后自动卸载数据。 该阈值基于一个 topic 在 Pulsar 集群的数据存储大小而定。 一旦 topic 到达阈值,就自动触发卸载操作。</p>
-<p>Threshold value|Action |---|--- | &gt; 0 | It triggers the offloading operation if the topic storage reaches its threshold. = 0| 它使 broker 竭尽全力地 offload 数据。 &lt; 0 |It disables automatic offloading operation.</p>
-<p>Automatic offload runs when a new segment is added to a topic log. If you set the threshold on a namespace, but few messages are being produced to the topic, the filesystem offloader does not work until the current segment is full.</p>
-<p>You can configure the threshold using CLI tools, such as pulsar-admin.</p>
+<p>阈值|动作 |---|--- | &gt; 0 | 如果 topic 存储达到其阈值,它就会触发卸载操作。 = 0| 它使 broker 竭尽全力地 offload 数据。 &lt; 0 | 它将禁用自动卸载操作。</p>
+<p>Automatic offload runs when a new segment is added to a topic log. 如果在命名空间上设置了阈值,但向该 topic 生产的消息很少,filesystem offloader 将会停止工作,直至当前 segment 达到饱和。</p>
+<p>通过命令行工具(CLI)可以设置阈值大小,比如 pulsar-admin。</p>
 <h4><a class="anchor" aria-hidden="true" id="示例"></a><a href="#示例" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c [...]
-<p>This example sets the filesystem offloader threshold to 10 MB using pulsar-admin.</p>
+<p>该示例使用 pulsar-admin 将 filesystem offloader 的阈值大小设置为 10 MB。</p>
 <pre><code class="hljs css language-bash">pulsar-admin namespaces <span class="hljs-built_in">set</span>-offload-threshold --size 10M my-tenant/my-namespace
 </code></pre>
 <blockquote>
 <h4><a class="anchor" aria-hidden="true" id="提示"></a><a href="#提示" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c [...]
 <p>关于 <code>pulsar-admin namespaces set-offload-threshold options</code> 命令的更多信息,包括标志、描述、默认值和速记方法,见<a href="/docs/zh-CN/2.7.3/pulsar-admin#set-offload-threshold">这里</a>。</p>
 </blockquote>
-<h3><a class="anchor" aria-hidden="true" id="run-filesystem-offloader-manually"></a><a href="#run-filesystem-offloader-manually" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S1 [...]
-<p>For individual topics, you can trigger the filesystem offloader manually using one of the following methods:</p>
+<h3><a class="anchor" aria-hidden="true" id="手动运行-filesystem-offloader"></a><a href="#手动运行-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c [...]
+<p>对于每一个 topic,使用下列方法之一可以手动触发 filesystem offloader:</p>
 <ul>
-<li><p>Use the REST endpoint.</p></li>
+<li><p>使用 REST 端点。</p></li>
 <li><p>使用命令行工具(例如 pulsar-admin)。</p></li>
 </ul>
-<p>To manually trigger the filesystem offloader via CLI tools, you need to specify the maximum amount of data (threshold) that should be retained on a Pulsar cluster for a topic. 如果 Pulsar 集群上 topic 的数据大小超过了这个阈值,那么该 topic 下的 segment 就会被陆续卸载到 filesystem 上,直到不再超过这个阈值。 优先卸载旧的 segment。</p>
+<p>要想用命令行工具触发 filesystem offloader,需要指定一个 topic 应该保留在 Pulsar 集群中的最大数据量(阈值)。 如果 Pulsar 集群上 topic 的数据大小超过了这个阈值,那么该 topic 下的 segment 就会被陆续卸载到 filesystem 上,直到不再超过这个阈值。 优先卸载旧的 segment。</p>
 <h4><a class="anchor" aria-hidden="true" id="示例-1"></a><a href="#示例-1" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
 <ul>
-<li><p>This example manually run the filesystem offloader using pulsar-admin.</p>
+<li><p>此示例使用 pulsar-admin 手动运行 filesystem offloader。</p>
 <pre><code class="hljs css language-bash">pulsar-admin topics offload --size-threshold 10M persistent://my-tenant/my-namespace/topic1
 </code></pre>
 <p><strong>输出</strong></p>
@@ -199,96 +199,96 @@ Reason: <span class="hljs-builtin-name">Error</span> offloading: org.apache.book
 </blockquote></li>
 </ul>
 <h2><a class="anchor" aria-hidden="true" id="教程"></a><a href="#教程" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c [...]
-<p>This section provides step-by-step instructions on how to use the filesystem offloader to move data from Pulsar to Hadoop Distributed File System (HDFS) or Network File system (NFS).</p>
-<pre><code class="hljs">&lt;div class=&quot;tabs&quot;&gt;&lt;div class=&quot;nav-tabs&quot;&gt;&lt;div id=&quot;tab-group-24258-tab-24259&quot; class=&quot;nav-link active&quot; data-group=&quot;group_24258&quot; data-tab=&quot;tab-group-24258-content-24259&quot;&gt;HDFS&lt;/div&gt;&lt;div id=&quot;tab-group-24258-tab-24260&quot; class=&quot;nav-link&quot; data-group=&quot;group_24258&quot; data-tab=&quot;tab-group-24258-content-24260&quot;&gt;NFS&lt;/div&gt;&lt;/div&gt;&lt;div class=&q [...]
+<p>本节提供有关如何使用  filesystem offloader  将数据从 Pulsar 移动到 Hadoop 分布式文件系统(HDFS)或网络文件系统(NFS)的分步说明。</p>
+<pre><code class="hljs">&lt;div class=&quot;tabs&quot;&gt;&lt;div class=&quot;nav-tabs&quot;&gt;&lt;div id=&quot;tab-group-24258-tab-24259&quot; class=&quot;nav-link active&quot; data-group=&quot;group_24258&quot; data-tab=&quot;tab-group-24258-content-24259&quot;&gt;HDFS&lt;/div&gt;&lt;div id=&quot;tab-group-24258-tab-24260&quot; class=&quot;nav-link&quot; data-group=&quot;group_24258&quot; data-tab=&quot;tab-group-24258-content-24260&quot;&gt;NFS&lt;/div&gt;&lt;/div&gt;&lt;div class=&q [...]
 </code></pre>
-<p><h3><a class="anchor" aria-hidden="true" id="step-1-prepare-the-hdfs-environment"></a><a href="#step-1-prepare-the-hdfs-environment" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22  [...]
-<p>This tutorial sets up a Hadoop single node cluster and uses Hadoop 3.2.1.</p>
+<p><h3><a class="anchor" aria-hidden="true" id="第-1-步准备-hdfs-环境"></a><a href="#第-1-步准备-hdfs-环境" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2 [...]
+<p>本教程使用 Hadoop 3.2.1设置一个 Hadoop 单个节点集群。</p>
 <blockquote>
 <p><strong>提示</strong></p>
-<p>For details about how to set up a Hadoop single node cluster, see <a href="https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html">here</a>.</p>
+<p>有关如何设置 Hadoop 单节点集群的详细信息,请参见<a href="https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html">此处</a>。</p>
 </blockquote>
 <ol>
-<li>Download and uncompress Hadoop 3.2.1.</li>
+<li>下载并解压缩 Hadoop 3.2.1。</li>
 </ol>
 <pre><code class="hljs">wget <span class="hljs-symbol">https:</span>/<span class="hljs-regexp">/mirrors.bfsu.edu.cn/apache</span><span class="hljs-regexp">/hadoop/common</span><span class="hljs-regexp">/hadoop-3.2.1/hadoop</span><span class="hljs-number">-3.2</span>.<span class="hljs-number">1</span>.tar.gz  <br /><br />tar -zxvf hadoop<span class="hljs-number">-3.2</span>.<span class="hljs-number">1</span>.tar.gz -C <span class="hljs-variable">$HADOOP_HOME</span><br /></code></pre>    
 <ol start="2">
-<li>Configure Hadoop.</li>
+<li>配置 Hadoop。</li>
 </ol>
 <pre><code class="hljs"><span class="hljs-meta"># $HADOOP_HOME/etc/hadoop/core-site.xml</span><br /><span class="hljs-params">&lt;configuration&gt;</span><br />    <span class="hljs-params">&lt;property&gt;</span><br />        <span class="hljs-params">&lt;name&gt;</span>fs.defaultFS<span class="hljs-params">&lt;/name&gt;</span><br />        <span class="hljs-params">&lt;value&gt;</span>hdfs:<span class="hljs-comment">//localhost:9000&lt;/value&gt;</span><br />    <span class="hljs-param [...]
 <ol start="3">
-<li>Set passphraseless ssh.</li>
+<li>设置无密码 ssh。</li>
 </ol>
-<pre><code class="hljs"><span class="hljs-comment"># Now check that you can ssh to the localhost without a passphrase:</span><br /><span class="hljs-variable">$ </span>ssh localhost<br /><span class="hljs-comment"># If you cannot ssh to localhost without a passphrase, execute the following commands</span><br /><span class="hljs-variable">$ </span>ssh-keygen -t rsa -P <span class="hljs-string">''</span> -f ~<span class="hljs-regexp">/.ssh/id</span>_rsa<br /><span class="hljs-variable">$ < [...]
+<pre><code class="hljs"><span class="hljs-comment"># 现在检查无需密码是否可以使用 ssh 连接到 localhost:</span><br /><span class="hljs-variable">$ </span>ssh localhost<br /><span class="hljs-comment"># 如果在无密码的情况下无法 ssh 连接到 localhost,请执行以下命令</span><br /><span class="hljs-variable">$ </span>ssh-keygen -t rsa -P <span class="hljs-string">''</span> -f ~<span class="hljs-regexp">/.ssh/id</span>_rsa<br /><span class="hljs-variable">$ </span>cat ~<span class="hljs-regexp">/.ssh/id</span>_rsa.pub &gt;&gt; ~<span  [...]
 <ol start="4">
-<li>Start HDFS.</li>
+<li>启动 HDFS。</li>
 </ol>
-<pre><code class="hljs"><span class="hljs-comment"># don't execute this command repeatedly, repeat execute will cauld the clusterId of the datanode is not consistent with namenode</span><br /><span class="hljs-variable">$HADOOP_HOME</span><span class="hljs-regexp">/bin/</span>hadoop namenode -format<br /><span class="hljs-variable">$HADOOP_HOME</span><span class="hljs-regexp">/sbin/</span>start-dfs.sh<br /></code></pre>    
+<pre><code class="hljs"><span class="hljs-comment"># 不重复执行此命令, 重复执行会捕获数据集群标识符与命名方式</span><br /><span class="hljs-variable">$HADOOP_HOME</span><span class="hljs-regexp">/bin/</span>hadoop namenode -format<br /><span class="hljs-variable">$HADOOP_HOME</span><span class="hljs-regexp">/sbin/</span>start-dfs.sh<br /></code></pre>    
 <ol start="5">
-<li>Navigate to the <a href="http://localhost:9870/">HDFS website</a>.</li>
+<li>导航到 <a href="http://localhost:9870/">HDFS 网站</a>。</li>
 </ol>
-<p>You can see the <strong>Overview</strong> page.</p>
+<p>您可以查看 <strong>概述</strong> 页面。</p>
 <p><img src="/docs/assets/FileSystem-1.png" alt=""></p>
 <ol>
-<li><p>At the top navigation bar, click <strong>Datanodes</strong> to check DataNode information.</p>
+<li><p>在顶部导航栏,单击 <strong>数据节点</strong> 查看数据节点信息。</p>
 <p><img src="/docs/assets/FileSystem-2.png" alt=""></p></li>
-<li><p>Click <strong>HTTP Address</strong> to get more detailed information about localhost:9866.</p>
-<p>As can be seen below, the size of <strong>Capacity Used</strong> is 4 KB, which is the initial value.</p>
+<li><p>单击 <strong>HTTP 地址</strong> 获取更多关于 localhost:9866 的详细信息。</p>
+<p>如下文所示, <strong>所用容量</strong> 的大小是 4 KB,它是初始值。</p>
 <p><img src="/docs/assets/FileSystem-3.png" alt=""></p></li>
 </ol>
-<h3><a class="anchor" aria-hidden="true" id="step-2-install-the-filesystem-offloader"></a><a href="#step-2-install-the-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2  [...]
-<p>For details, see <a href="#installation">installation</a>.</p>
-<h3><a class="anchor" aria-hidden="true" id="step-3-configure-the-filesystem-offloader"></a><a href="#step-3-configure-the-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1  [...]
-<p>As indicated in the <a href="#configuration">configuration</a> section, you need to configure some properties for the filesystem offloader driver before using it. This tutorial assumes that you have configured the filesystem offloader driver as below and run Pulsar in <strong>standalone</strong> mode.</p>
-<p>Set the following configurations in the <code>conf/standalone.conf</code> file.</p>
+<h3><a class="anchor" aria-hidden="true" id="第-2-步-安装-filesystem-offloader"></a><a href="#第-2-步-安装-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
+<p>更多详细信息,请参阅 <a href="#installation">安装</a>。</p>
+<h3><a class="anchor" aria-hidden="true" id="第-3-步-配置-filesystem-offloader"></a><a href="#第-3-步-配置-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
+<p>正如 <a href="#configuration">配置</a> 部分所指明的那样,需要先配置  filesystem offloader 驱动程序的一些属性,然后才能使用。 本教程假设您已按以下方式配置  filesystem offloader 驱动程序,并在<strong>独立</strong>模式下运行 Pulsar。</p>
+<p>在 <code>conf/standalone.conf</code> 文件中设置以下配置。</p>
 <pre><code class="hljs css language-conf"><span class="hljs-attr">managedLedgerOffloadDriver</span>=filesystem<br /><span class="hljs-attr">fileSystemURI</span>=hdfs://<span class="hljs-number">127.0</span>.<span class="hljs-number">0.1</span>:<span class="hljs-number">9000</span><br /><span class="hljs-attr">fileSystemProfilePath</span>=../conf/filesystem_<span class="hljs-literal">off</span>load_core_site.xml<br /></code></pre>    
 <blockquote>
 <p><strong>Note</strong></p>
-<p>For testing purposes, you can set the following two configurations to speed up ledger rollover, but it is not recommended that you set them in the production environment.</p>
+<p>为测试目的,您可以设置以下两个配置来加速 ledger 切换, 但不建议在生产环境中设置它们。</p>
 </blockquote>
 <pre><code class="hljs"><span class="hljs-attr">managedLedgerMinLedgerRolloverTimeMinutes</span>=<span class="hljs-number">1</span><br /><span class="hljs-attr">managedLedgerMaxEntriesPerLedger</span>=<span class="hljs-number">100</span><br /></code></pre>    
 </span></div></div><div id="tab-group-24258-content-24260" class="tab-pane" data-group="group_24258" tabindex="-1"><div><span><blockquote>
 <p><strong>Note</strong></p>
-<p>In this section, it is assumed that you have enabled NFS service and set the shared path of your NFS service. In this section, <code>/Users/test</code> is used as the shared path of NFS service.</p>
+<p>在本节中,假定您已启用 NFS 服务并设置 NFS 服务的共享路径。 在本节中, <code>/Users/test</code> 被用作 NFS 服务的共享路径。</p>
 </blockquote>
-<p>To offload data to NFS, follow these steps.</p>
-<h3><a class="anchor" aria-hidden="true" id="step-1-install-the-filesystem-offloader"></a><a href="#step-1-install-the-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2  [...]
-<p>For details, see <a href="#installation">installation</a>.</p>
-<h3><a class="anchor" aria-hidden="true" id="step-2-mont-your-nfs-to-your-local-filesystem"></a><a href="#step-2-mont-your-nfs-to-your-local-filesystem" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h- [...]
-<p>This example mounts mounts <em>/Users/pulsar_nfs</em> to <em>/Users/test</em>.</p>
+<p>要将数据卸载到 NFS,请执行以下步骤。</p>
+<h3><a class="anchor" aria-hidden="true" id="第-1-步-安装-filesystem-offloader"></a><a href="#第-1-步-安装-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
+<p>更多详细信息,请参阅 <a href="#installation">安装</a>。</p>
+<h3><a class="anchor" aria-hidden="true" id="第-2-步将-nfs-置于本地文件系统"></a><a href="#第-2-步将-nfs-置于本地文件系统" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.2 [...]
+<p>此示例将挂载 <em>/Users/pulsar_nfs</em> 到 <em>/Users/test</em>。</p>
 <pre><code class="hljs">mount -e <span class="hljs-number">192.168</span>.0.<span class="hljs-number">103</span><span class="hljs-symbol">:/Users/test/Users/pulsar_nfs</span><br /></code></pre>    
-<h3><a class="anchor" aria-hidden="true" id="step-3-configure-the-filesystem-offloader-driver"></a><a href="#step-3-configure-the-filesystem-offloader-driver" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9z [...]
-<p>As indicated in the <a href="#configuration">configuration</a> section, you need to configure some properties for the filesystem offloader driver before using it. This tutorial assumes that you have configured the filesystem offloader driver as below and run Pulsar in <strong>standalone</strong> mode.</p>
+<h3><a class="anchor" aria-hidden="true" id="第-3-步-配置-filesystem-offloader-驱动程序"></a><a href="#第-3-步-配置-filesystem-offloader-驱动程序" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5 [...]
+<p>正如 <a href="#configuration">配置</a> 部分所指明的那样,需要先配置  filesystem offloader 驱动程序的一些属性,然后才能使用。 本教程假设您已按以下方式配置  filesystem offloader 驱动程序,并在<strong>独立</strong>模式下运行 Pulsar。</p>
 <ol>
-<li>Set the following configurations in the <code>conf/standalone.conf</code> file.</li>
+<li>在 <code>conf/standalone.conf</code> 文件中设置以下配置。</li>
 </ol>
 <pre><code class="hljs css language-conf"><span class="hljs-attr">managedLedgerOffloadDriver</span>=filesystem<br /><span class="hljs-attr">fileSystemProfilePath</span>=../conf/filesystem_<span class="hljs-literal">off</span>load_core_site.xml<br /></code></pre>    
 <ol start="2">
-<li>Modify the <em>filesystem_offload_core_site.xml</em> as follows.</li>
+<li>修改 <em>filesystem_offload_core_site.xml</em>,如下所示。</li>
 </ol>
 <pre><code class="hljs"><span class="hljs-tag">&lt;<span class="hljs-name">property</span>&gt;</span><br />    <span class="hljs-tag">&lt;<span class="hljs-name">name</span>&gt;</span>fs.defaultFS<span class="hljs-tag">&lt;/<span class="hljs-name">name</span>&gt;</span><br />    <span class="hljs-tag">&lt;<span class="hljs-name">value</span>&gt;</span>file:///<span class="hljs-tag">&lt;/<span class="hljs-name">value</span>&gt;</span><br /><span class="hljs-tag">&lt;/<span class="hljs-nam [...]
 </span></div></div></div></div>
-<h3><a class="anchor" aria-hidden="true" id="step-4-offload-data-from-bookkeeper-to-filesystem"></a><a href="#step-4-offload-data-from-bookkeeper-to-filesystem" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4  [...]
-<p>Execute the following commands in the repository where you download Pulsar tarball. For example, <code>~/path/to/apache-pulsar-2.5.1</code>.</p>
+<h3><a class="anchor" aria-hidden="true" id="第-4-步将数据从-bookkeeper-卸载到文件系统"></a><a href="#第-4-步将数据从-bookkeeper-卸载到文件系统" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 [...]
+<p>在下载 Pulsar tar 包的仓库中执行以下命令。 例如, <code>~/path/to/apache-pulsar-2.5.1</code>。</p>
 <ol>
 <li><p>启动 Pulsar 单机模式。</p>
 <pre><code class="hljs">./bin/pulsar standalone -a <span class="hljs-number">127.0</span><span class="hljs-number">.0</span><span class="hljs-number">.1</span>
 </code></pre></li>
-<li><p>To ensure the data generated is not deleted immediately, it is recommended to set the <a href="https://pulsar.apache.org/docs/en/next/cookbooks-retention-expiry/#retention-policies">retention policy</a>, which can be either a <strong>size</strong> limit or a <strong>time</strong> limit. The larger value you set for the retention policy, the longer the data can be retained.</p>
+<li><p>为了确保生成的数据不会立即被删除,建议设置 <a href="https://pulsar.apache.org/docs/en/next/cookbooks-retention-expiry/#retention-policies">保留策略</a>, 可以是 <strong>大小</strong> 限制或 <strong>时间</strong> 限制。 为保留策略设定的值越大,数据保留的时间越长。</p>
 <pre><code class="hljs">./<span class="hljs-string">bin/</span><span class="hljs-string">pulsarctl </span><span class="hljs-string">namespaces </span><span class="hljs-built_in">set-retention</span> <span class="hljs-string">public/</span><span class="hljs-string">default </span><span class="hljs-built_in">--size</span> <span class="hljs-string">100M </span><span class="hljs-built_in">--time</span> <span class="hljs-string">2d
 </span></code></pre>
 <blockquote>
 <p><strong>提示</strong></p>
-<p>For more information about the <code>pulsarctl namespaces set-retention options</code> command, including flags, descriptions, default values, and shorthands, see <a href="https://docs.streamnative.io/pulsarctl/v2.7.0.6/#-em-set-retention-em-">here</a>.</p>
+<p>关于 <code>pulsar-admin namespaces set-offload-threshold options</code> 命令的更多信息,包括标志、描述、默认值和速记方法,参见<a href="https://docs.streamnative.io/pulsarctl/v2.7.0.6/#-em-set-retention-em-">这里</a>。</p>
 </blockquote></li>
-<li><p>Produce data using pulsar-client.</p>
+<li><p>使用 pulsar-client 生成数据。</p>
 <pre><code class="hljs">./bin/pulsar-client produce -m <span class="hljs-string">"Hello FileSystem Offloader"</span> -n <span class="hljs-number">1000</span> <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre></li>
-<li><p>The offloading operation starts after a ledger rollover is triggered. To ensure offload data successfully, it is recommended that you wait until several ledger rollovers are triggered. In this case, you might need to wait for a second. You can check the ledger status using pulsarctl.</p>
+<li><p>卸载操作在触发 ledger 切换后开始。 为了确保卸载数据成功,建议您等待多个 ledger 切换被触发。 在这种情况下,可能需要等待一秒钟。 您可以使用 pulsarctl 检查 ledger 状态。</p>
 <pre><code class="hljs">./bin/pulsarctl topics internal-stats <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre>
 <p><strong>输出</strong></p>
-<p>The data of the ledger 696 is not offloaded.</p>
+<p>ledger 696 的数据未卸载。</p>
 <pre><code class="hljs">{
 <span class="hljs-attr">"version"</span>: <span class="hljs-number">1</span>,
 <span class="hljs-attr">"creationDate"</span>: <span class="hljs-string">"2020-06-16T21:46:25.807+08:00"</span>,
@@ -302,14 +302,14 @@ Reason: <span class="hljs-builtin-name">Error</span> offloading: org.apache.book
 <span class="hljs-attr">"cursors"</span>: {}
 }
 </code></pre></li>
-<li><p>Wait a second and send more messages to the topic.</p>
+<li><p>请稍等,然后向 topic 发送更多消息。</p>
 <pre><code class="hljs">./bin/pulsar-client produce -m <span class="hljs-string">"Hello FileSystem Offloader"</span> -n <span class="hljs-number">1000</span> <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre></li>
-<li><p>Check the ledger status using pulsarctl.</p>
+<li><p>使用 pulsarctl 检查 ledger 状态。</p>
 <pre><code class="hljs">./bin/pulsarctl topics internal-stats <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre>
 <p><strong>输出</strong></p>
-<p>The ledger 696 is rollovered.</p>
+<p>ledger 696已经切换。</p>
 <pre><code class="hljs">{
 <span class="hljs-attr">"version"</span>: <span class="hljs-number">2</span>,
 <span class="hljs-attr">"creationDate"</span>: <span class="hljs-string">"2020-06-16T21:46:25.807+08:00"</span>,
@@ -329,19 +329,19 @@ Reason: <span class="hljs-builtin-name">Error</span> offloading: org.apache.book
 <span class="hljs-attr">"cursors"</span>: {}
 }
 </code></pre></li>
-<li><p>Trigger the offloading operation manually using pulsarctl.</p>
+<li><p>使用 pulsarctl 手动触发卸载操作。</p>
 <pre><code class="hljs">./bin/pulsarctl topic offload -s <span class="hljs-number">0</span> <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre>
 <p><strong>输出</strong></p>
-<p>Data in ledgers before the ledge 697 is offloaded.</p>
+<p>ledger 中的数据先于 ledge 697 已卸载。</p>
 <pre><code class="hljs"><span class="hljs-comment"># offload info, the ledgers before 697 will be offloaded</span>
 Offload triggered <span class="hljs-keyword">for</span> persistent:<span class="hljs-regexp">//</span>public<span class="hljs-regexp">/default/</span>fs-test3 <span class="hljs-keyword">for</span> messages before <span class="hljs-number">697</span>:<span class="hljs-number">0</span>:-<span class="hljs-number">1</span>
 </code></pre></li>
-<li><p>Check the ledger status using pulsarctl.</p>
+<li><p>使用 pulsarctl 检查 ledger 状态。</p>
 <pre><code class="hljs">./bin/pulsarctl topic <span class="hljs-type">internal</span>-<span class="hljs-keyword">info</span> <span class="hljs-built_in">public</span>/<span class="hljs-keyword">default</span>/fs-test
 </code></pre>
 <p><strong>输出</strong></p>
-<p>The data of the ledger 696 is offloaded.</p>
+<p>ledger 696 的数据已卸载。</p>
 <pre><code class="hljs">{
 <span class="hljs-attr">"version"</span>: <span class="hljs-number">4</span>,
 <span class="hljs-attr">"creationDate"</span>: <span class="hljs-string">"2020-06-16T21:46:25.807+08:00"</span>,
@@ -361,10 +361,10 @@ Offload triggered <span class="hljs-keyword">for</span> persistent:<span class="
 <span class="hljs-attr">"cursors"</span>: {}
 }
 </code></pre>
-<p>And the <strong>Capacity Used</strong> is changed from 4 KB to 116.46 KB.</p>
+<p>并且 <strong>所用容量</strong> 已经从 4 KB 变成 116.46 KB。</p>
 <p><img src="/docs/assets/FileSystem-8.png" alt=""></p></li>
 </ol>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.7.3/tiered-storage-gcs"><span class="arrow-prev">← </span><span>GCS offloader</span></a><a class="docs-next button" href="/docs/zh-CN/2.7.3/tiered-storage-azure"><span class="function-name-prevnext">Azure BlobStore offloader</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#安装">安装</a><ul class="toc-headings"><li> [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.7.3/tiered-storage-gcs"><span class="arrow-prev">← </span><span>GCS offloader</span></a><a class="docs-next button" href="/docs/zh-CN/2.7.3/tiered-storage-azure"><span class="function-name-prevnext">Azure BlobStore offloader</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#安装">安装</a><ul class="toc-headings"><li> [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.8.0/tiered-storage-filesystem.html b/content/docs/zh-CN/2.8.0/tiered-storage-filesystem.html
index 9e9368d..7c091c1 100644
--- a/content/docs/zh-CN/2.8.0/tiered-storage-filesystem.html
+++ b/content/docs/zh-CN/2.8.0/tiered-storage-filesystem.html
@@ -142,27 +142,27 @@ ls offloaders
 </ul>
 <h3><a class="anchor" aria-hidden="true" id="自动运行-filesystem-offloader"></a><a href="#自动运行-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c [...]
 <p>您可以将命名空间策略配置为在达到阈值后自动卸载数据。 该阈值基于一个 topic 在 Pulsar 集群的数据存储大小而定。 一旦 topic 到达阈值,就自动触发卸载操作。</p>
-<p>Threshold value|Action |---|--- | &gt; 0 | It triggers the offloading operation if the topic storage reaches its threshold. = 0| 它使 broker 竭尽全力地 offload 数据。 &lt; 0 |It disables automatic offloading operation.</p>
-<p>Automatic offload runs when a new segment is added to a topic log. If you set the threshold on a namespace, but few messages are being produced to the topic, the filesystem offloader does not work until the current segment is full.</p>
-<p>You can configure the threshold using CLI tools, such as pulsar-admin.</p>
+<p>阈值|动作 |---|--- | &gt; 0 | 如果 topic 存储达到其阈值,它就会触发卸载操作。 = 0| 它使 broker 竭尽全力地 offload 数据。 &lt; 0 | 它将禁用自动卸载操作。</p>
+<p>Automatic offload runs when a new segment is added to a topic log. 如果在命名空间上设置了阈值,但向该 topic 生产的消息很少,filesystem offloader 将会停止工作,直至当前 segment 达到饱和。</p>
+<p>通过命令行工具(CLI)可以设置阈值大小,比如 pulsar-admin。</p>
 <h4><a class="anchor" aria-hidden="true" id="示例"></a><a href="#示例" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c [...]
-<p>This example sets the filesystem offloader threshold to 10 MB using pulsar-admin.</p>
+<p>该示例使用 pulsar-admin 将 filesystem offloader 的阈值大小设置为 10 MB。</p>
 <pre><code class="hljs css language-bash">pulsar-admin namespaces <span class="hljs-built_in">set</span>-offload-threshold --size 10M my-tenant/my-namespace
 </code></pre>
 <blockquote>
 <h4><a class="anchor" aria-hidden="true" id="提示"></a><a href="#提示" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c [...]
 <p>关于 <code>pulsar-admin namespaces set-offload-threshold options</code> 命令的更多信息,包括标志、描述、默认值和速记方法,见<a href="/docs/zh-CN/2.8.0/pulsar-admin#set-offload-threshold">这里</a>。</p>
 </blockquote>
-<h3><a class="anchor" aria-hidden="true" id="run-filesystem-offloader-manually"></a><a href="#run-filesystem-offloader-manually" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S1 [...]
-<p>For individual topics, you can trigger the filesystem offloader manually using one of the following methods:</p>
+<h3><a class="anchor" aria-hidden="true" id="手动运行-filesystem-offloader"></a><a href="#手动运行-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c [...]
+<p>对于每一个 topic,使用下列方法之一可以手动触发 filesystem offloader:</p>
 <ul>
-<li><p>Use the REST endpoint.</p></li>
+<li><p>使用 REST 端点。</p></li>
 <li><p>使用命令行工具(例如 pulsar-admin)。</p></li>
 </ul>
-<p>To manually trigger the filesystem offloader via CLI tools, you need to specify the maximum amount of data (threshold) that should be retained on a Pulsar cluster for a topic. 如果 Pulsar 集群上 topic 的数据大小超过了这个阈值,那么该 topic 下的 segment 就会被陆续卸载到 filesystem 上,直到不再超过这个阈值。 优先卸载旧的 segment。</p>
+<p>要想用命令行工具触发 filesystem offloader,需要指定一个 topic 应该保留在 Pulsar 集群中的最大数据量(阈值)。 如果 Pulsar 集群上 topic 的数据大小超过了这个阈值,那么该 topic 下的 segment 就会被陆续卸载到 filesystem 上,直到不再超过这个阈值。 优先卸载旧的 segment。</p>
 <h4><a class="anchor" aria-hidden="true" id="示例-1"></a><a href="#示例-1" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
 <ul>
-<li><p>This example manually run the filesystem offloader using pulsar-admin.</p>
+<li><p>此示例使用 pulsar-admin 手动运行 filesystem offloader。</p>
 <pre><code class="hljs css language-bash">pulsar-admin topics offload --size-threshold 10M persistent://my-tenant/my-namespace/topic1
 </code></pre>
 <p><strong>输出</strong></p>
@@ -199,96 +199,96 @@ Reason: <span class="hljs-builtin-name">Error</span> offloading: org.apache.book
 </blockquote></li>
 </ul>
 <h2><a class="anchor" aria-hidden="true" id="教程"></a><a href="#教程" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c [...]
-<p>This section provides step-by-step instructions on how to use the filesystem offloader to move data from Pulsar to Hadoop Distributed File System (HDFS) or Network File system (NFS).</p>
-<pre><code class="hljs">&lt;div class=&quot;tabs&quot;&gt;&lt;div class=&quot;nav-tabs&quot;&gt;&lt;div id=&quot;tab-group-23659-tab-23660&quot; class=&quot;nav-link active&quot; data-group=&quot;group_23659&quot; data-tab=&quot;tab-group-23659-content-23660&quot;&gt;HDFS&lt;/div&gt;&lt;div id=&quot;tab-group-23659-tab-23661&quot; class=&quot;nav-link&quot; data-group=&quot;group_23659&quot; data-tab=&quot;tab-group-23659-content-23661&quot;&gt;NFS&lt;/div&gt;&lt;/div&gt;&lt;div class=&q [...]
+<p>本节提供有关如何使用  filesystem offloader  将数据从 Pulsar 移动到 Hadoop 分布式文件系统(HDFS)或网络文件系统(NFS)的分步说明。</p>
+<pre><code class="hljs">&lt;div class=&quot;tabs&quot;&gt;&lt;div class=&quot;nav-tabs&quot;&gt;&lt;div id=&quot;tab-group-23659-tab-23660&quot; class=&quot;nav-link active&quot; data-group=&quot;group_23659&quot; data-tab=&quot;tab-group-23659-content-23660&quot;&gt;HDFS&lt;/div&gt;&lt;div id=&quot;tab-group-23659-tab-23661&quot; class=&quot;nav-link&quot; data-group=&quot;group_23659&quot; data-tab=&quot;tab-group-23659-content-23661&quot;&gt;NFS&lt;/div&gt;&lt;/div&gt;&lt;div class=&q [...]
 </code></pre>
-<p><h3><a class="anchor" aria-hidden="true" id="step-1-prepare-the-hdfs-environment"></a><a href="#step-1-prepare-the-hdfs-environment" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22  [...]
-<p>This tutorial sets up a Hadoop single node cluster and uses Hadoop 3.2.1.</p>
+<p><h3><a class="anchor" aria-hidden="true" id="第-1-步准备-hdfs-环境"></a><a href="#第-1-步准备-hdfs-环境" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2 [...]
+<p>本教程使用 Hadoop 3.2.1设置一个 Hadoop 单个节点集群。</p>
 <blockquote>
 <p><strong>提示</strong></p>
-<p>For details about how to set up a Hadoop single node cluster, see <a href="https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html">here</a>.</p>
+<p>有关如何设置 Hadoop 单节点集群的详细信息,请参见<a href="https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html">此处</a>。</p>
 </blockquote>
 <ol>
-<li>Download and uncompress Hadoop 3.2.1.</li>
+<li>下载并解压缩 Hadoop 3.2.1。</li>
 </ol>
 <pre><code class="hljs">wget <span class="hljs-symbol">https:</span>/<span class="hljs-regexp">/mirrors.bfsu.edu.cn/apache</span><span class="hljs-regexp">/hadoop/common</span><span class="hljs-regexp">/hadoop-3.2.1/hadoop</span><span class="hljs-number">-3.2</span>.<span class="hljs-number">1</span>.tar.gz  <br /><br />tar -zxvf hadoop<span class="hljs-number">-3.2</span>.<span class="hljs-number">1</span>.tar.gz -C <span class="hljs-variable">$HADOOP_HOME</span><br /></code></pre>    
 <ol start="2">
-<li>Configure Hadoop.</li>
+<li>配置 Hadoop。</li>
 </ol>
 <pre><code class="hljs"><span class="hljs-meta"># $HADOOP_HOME/etc/hadoop/core-site.xml</span><br /><span class="hljs-params">&lt;configuration&gt;</span><br />    <span class="hljs-params">&lt;property&gt;</span><br />        <span class="hljs-params">&lt;name&gt;</span>fs.defaultFS<span class="hljs-params">&lt;/name&gt;</span><br />        <span class="hljs-params">&lt;value&gt;</span>hdfs:<span class="hljs-comment">//localhost:9000&lt;/value&gt;</span><br />    <span class="hljs-param [...]
 <ol start="3">
-<li>Set passphraseless ssh.</li>
+<li>设置无密码 ssh。</li>
 </ol>
-<pre><code class="hljs"><span class="hljs-comment"># Now check that you can ssh to the localhost without a passphrase:</span><br /><span class="hljs-variable">$ </span>ssh localhost<br /><span class="hljs-comment"># If you cannot ssh to localhost without a passphrase, execute the following commands</span><br /><span class="hljs-variable">$ </span>ssh-keygen -t rsa -P <span class="hljs-string">''</span> -f ~<span class="hljs-regexp">/.ssh/id</span>_rsa<br /><span class="hljs-variable">$ < [...]
+<pre><code class="hljs"><span class="hljs-comment"># 现在检查无需密码是否可以使用 ssh 连接到 localhost:</span><br /><span class="hljs-variable">$ </span>ssh localhost<br /><span class="hljs-comment"># 如果在无密码的情况下无法 ssh 连接到 localhost,请执行以下命令</span><br /><span class="hljs-variable">$ </span>ssh-keygen -t rsa -P <span class="hljs-string">''</span> -f ~<span class="hljs-regexp">/.ssh/id</span>_rsa<br /><span class="hljs-variable">$ </span>cat ~<span class="hljs-regexp">/.ssh/id</span>_rsa.pub &gt;&gt; ~<span  [...]
 <ol start="4">
-<li>Start HDFS.</li>
+<li>启动 HDFS。</li>
 </ol>
-<pre><code class="hljs"><span class="hljs-comment"># don't execute this command repeatedly, repeat execute will cauld the clusterId of the datanode is not consistent with namenode</span><br /><span class="hljs-variable">$HADOOP_HOME</span><span class="hljs-regexp">/bin/</span>hadoop namenode -format<br /><span class="hljs-variable">$HADOOP_HOME</span><span class="hljs-regexp">/sbin/</span>start-dfs.sh<br /></code></pre>    
+<pre><code class="hljs"><span class="hljs-comment"># 不重复执行此命令, 重复执行会捕获数据集群标识符与命名方式</span><br /><span class="hljs-variable">$HADOOP_HOME</span><span class="hljs-regexp">/bin/</span>hadoop namenode -format<br /><span class="hljs-variable">$HADOOP_HOME</span><span class="hljs-regexp">/sbin/</span>start-dfs.sh<br /></code></pre>    
 <ol start="5">
-<li>Navigate to the <a href="http://localhost:9870/">HDFS website</a>.</li>
+<li>导航到 <a href="http://localhost:9870/">HDFS 网站</a>。</li>
 </ol>
-<p>You can see the <strong>Overview</strong> page.</p>
+<p>您可以查看 <strong>概述</strong> 页面。</p>
 <p><img src="/docs/assets/FileSystem-1.png" alt=""></p>
 <ol>
-<li><p>At the top navigation bar, click <strong>Datanodes</strong> to check DataNode information.</p>
+<li><p>在顶部导航栏,单击 <strong>数据节点</strong> 查看数据节点信息。</p>
 <p><img src="/docs/assets/FileSystem-2.png" alt=""></p></li>
-<li><p>Click <strong>HTTP Address</strong> to get more detailed information about localhost:9866.</p>
-<p>As can be seen below, the size of <strong>Capacity Used</strong> is 4 KB, which is the initial value.</p>
+<li><p>单击 <strong>HTTP 地址</strong> 获取更多关于 localhost:9866 的详细信息。</p>
+<p>如下文所示, <strong>所用容量</strong> 的大小是 4 KB,它是初始值。</p>
 <p><img src="/docs/assets/FileSystem-3.png" alt=""></p></li>
 </ol>
-<h3><a class="anchor" aria-hidden="true" id="step-2-install-the-filesystem-offloader"></a><a href="#step-2-install-the-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2  [...]
-<p>For details, see <a href="#installation">installation</a>.</p>
-<h3><a class="anchor" aria-hidden="true" id="step-3-configure-the-filesystem-offloader"></a><a href="#step-3-configure-the-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1  [...]
-<p>As indicated in the <a href="#configuration">configuration</a> section, you need to configure some properties for the filesystem offloader driver before using it. This tutorial assumes that you have configured the filesystem offloader driver as below and run Pulsar in <strong>standalone</strong> mode.</p>
-<p>Set the following configurations in the <code>conf/standalone.conf</code> file.</p>
+<h3><a class="anchor" aria-hidden="true" id="第-2-步-安装-filesystem-offloader"></a><a href="#第-2-步-安装-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
+<p>更多详细信息,请参阅 <a href="#installation">安装</a>。</p>
+<h3><a class="anchor" aria-hidden="true" id="第-3-步-配置-filesystem-offloader"></a><a href="#第-3-步-配置-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
+<p>正如 <a href="#configuration">配置</a> 部分所指明的那样,需要先配置  filesystem offloader 驱动程序的一些属性,然后才能使用。 本教程假设您已按以下方式配置  filesystem offloader 驱动程序,并在<strong>独立</strong>模式下运行 Pulsar。</p>
+<p>在 <code>conf/standalone.conf</code> 文件中设置以下配置。</p>
 <pre><code class="hljs css language-conf"><span class="hljs-attr">managedLedgerOffloadDriver</span>=filesystem<br /><span class="hljs-attr">fileSystemURI</span>=hdfs://<span class="hljs-number">127.0</span>.<span class="hljs-number">0.1</span>:<span class="hljs-number">9000</span><br /><span class="hljs-attr">fileSystemProfilePath</span>=../conf/filesystem_<span class="hljs-literal">off</span>load_core_site.xml<br /></code></pre>    
 <blockquote>
 <p><strong>Note</strong></p>
-<p>For testing purposes, you can set the following two configurations to speed up ledger rollover, but it is not recommended that you set them in the production environment.</p>
+<p>为测试目的,您可以设置以下两个配置来加速 ledger 切换, 但不建议在生产环境中设置它们。</p>
 </blockquote>
 <pre><code class="hljs"><span class="hljs-attr">managedLedgerMinLedgerRolloverTimeMinutes</span>=<span class="hljs-number">1</span><br /><span class="hljs-attr">managedLedgerMaxEntriesPerLedger</span>=<span class="hljs-number">100</span><br /></code></pre>    
 </span></div></div><div id="tab-group-23659-content-23661" class="tab-pane" data-group="group_23659" tabindex="-1"><div><span><blockquote>
 <p><strong>Note</strong></p>
-<p>In this section, it is assumed that you have enabled NFS service and set the shared path of your NFS service. In this section, <code>/Users/test</code> is used as the shared path of NFS service.</p>
+<p>在本节中,假定您已启用 NFS 服务并设置 NFS 服务的共享路径。 在本节中, <code>/Users/test</code> 被用作 NFS 服务的共享路径。</p>
 </blockquote>
-<p>To offload data to NFS, follow these steps.</p>
-<h3><a class="anchor" aria-hidden="true" id="step-1-install-the-filesystem-offloader"></a><a href="#step-1-install-the-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2  [...]
-<p>For details, see <a href="#installation">installation</a>.</p>
-<h3><a class="anchor" aria-hidden="true" id="step-2-mont-your-nfs-to-your-local-filesystem"></a><a href="#step-2-mont-your-nfs-to-your-local-filesystem" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h- [...]
-<p>This example mounts mounts <em>/Users/pulsar_nfs</em> to <em>/Users/test</em>.</p>
+<p>要将数据卸载到 NFS,请执行以下步骤。</p>
+<h3><a class="anchor" aria-hidden="true" id="第-1-步-安装-filesystem-offloader"></a><a href="#第-1-步-安装-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
+<p>更多详细信息,请参阅 <a href="#installation">安装</a>。</p>
+<h3><a class="anchor" aria-hidden="true" id="第-2-步将-nfs-置于本地文件系统"></a><a href="#第-2-步将-nfs-置于本地文件系统" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.2 [...]
+<p>此示例将挂载 <em>/Users/pulsar_nfs</em> 到 <em>/Users/test</em>。</p>
 <pre><code class="hljs">mount -e <span class="hljs-number">192.168</span>.0.<span class="hljs-number">103</span><span class="hljs-symbol">:/Users/test/Users/pulsar_nfs</span><br /></code></pre>    
-<h3><a class="anchor" aria-hidden="true" id="step-3-configure-the-filesystem-offloader-driver"></a><a href="#step-3-configure-the-filesystem-offloader-driver" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9z [...]
-<p>As indicated in the <a href="#configuration">configuration</a> section, you need to configure some properties for the filesystem offloader driver before using it. This tutorial assumes that you have configured the filesystem offloader driver as below and run Pulsar in <strong>standalone</strong> mode.</p>
+<h3><a class="anchor" aria-hidden="true" id="第-3-步-配置-filesystem-offloader-驱动程序"></a><a href="#第-3-步-配置-filesystem-offloader-驱动程序" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5 [...]
+<p>正如 <a href="#configuration">配置</a> 部分所指明的那样,需要先配置  filesystem offloader 驱动程序的一些属性,然后才能使用。 本教程假设您已按以下方式配置  filesystem offloader 驱动程序,并在<strong>独立</strong>模式下运行 Pulsar。</p>
 <ol>
-<li>Set the following configurations in the <code>conf/standalone.conf</code> file.</li>
+<li>在 <code>conf/standalone.conf</code> 文件中设置以下配置。</li>
 </ol>
 <pre><code class="hljs css language-conf"><span class="hljs-attr">managedLedgerOffloadDriver</span>=filesystem<br /><span class="hljs-attr">fileSystemProfilePath</span>=../conf/filesystem_<span class="hljs-literal">off</span>load_core_site.xml<br /></code></pre>    
 <ol start="2">
-<li>Modify the <em>filesystem_offload_core_site.xml</em> as follows.</li>
+<li>修改 <em>filesystem_offload_core_site.xml</em>,如下所示。</li>
 </ol>
 <pre><code class="hljs"><span class="hljs-tag">&lt;<span class="hljs-name">property</span>&gt;</span><br />    <span class="hljs-tag">&lt;<span class="hljs-name">name</span>&gt;</span>fs.defaultFS<span class="hljs-tag">&lt;/<span class="hljs-name">name</span>&gt;</span><br />    <span class="hljs-tag">&lt;<span class="hljs-name">value</span>&gt;</span>file:///<span class="hljs-tag">&lt;/<span class="hljs-name">value</span>&gt;</span><br /><span class="hljs-tag">&lt;/<span class="hljs-nam [...]
 </span></div></div></div></div>
-<h3><a class="anchor" aria-hidden="true" id="step-4-offload-data-from-bookkeeper-to-filesystem"></a><a href="#step-4-offload-data-from-bookkeeper-to-filesystem" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4  [...]
-<p>Execute the following commands in the repository where you download Pulsar tarball. For example, <code>~/path/to/apache-pulsar-2.5.1</code>.</p>
+<h3><a class="anchor" aria-hidden="true" id="第-4-步将数据从-bookkeeper-卸载到文件系统"></a><a href="#第-4-步将数据从-bookkeeper-卸载到文件系统" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 [...]
+<p>在下载 Pulsar tar 包的仓库中执行以下命令。 例如, <code>~/path/to/apache-pulsar-2.5.1</code>。</p>
 <ol>
 <li><p>启动 Pulsar 单机模式。</p>
 <pre><code class="hljs">./bin/pulsar standalone -a <span class="hljs-number">127.0</span><span class="hljs-number">.0</span><span class="hljs-number">.1</span>
 </code></pre></li>
-<li><p>To ensure the data generated is not deleted immediately, it is recommended to set the <a href="https://pulsar.apache.org/docs/en/next/cookbooks-retention-expiry/#retention-policies">retention policy</a>, which can be either a <strong>size</strong> limit or a <strong>time</strong> limit. The larger value you set for the retention policy, the longer the data can be retained.</p>
+<li><p>为了确保生成的数据不会立即被删除,建议设置 <a href="https://pulsar.apache.org/docs/en/next/cookbooks-retention-expiry/#retention-policies">保留策略</a>, 可以是 <strong>大小</strong> 限制或 <strong>时间</strong> 限制。 为保留策略设定的值越大,数据保留的时间越长。</p>
 <pre><code class="hljs">./<span class="hljs-string">bin/</span><span class="hljs-string">pulsarctl </span><span class="hljs-string">namespaces </span><span class="hljs-built_in">set-retention</span> <span class="hljs-string">public/</span><span class="hljs-string">default </span><span class="hljs-built_in">--size</span> <span class="hljs-string">100M </span><span class="hljs-built_in">--time</span> <span class="hljs-string">2d
 </span></code></pre>
 <blockquote>
 <p><strong>提示</strong></p>
-<p>For more information about the <code>pulsarctl namespaces set-retention options</code> command, including flags, descriptions, default values, and shorthands, see <a href="https://docs.streamnative.io/pulsarctl/v2.7.0.6/#-em-set-retention-em-">here</a>.</p>
+<p>关于 <code>pulsar-admin namespaces set-offload-threshold options</code> 命令的更多信息,包括标志、描述、默认值和速记方法,参见<a href="https://docs.streamnative.io/pulsarctl/v2.7.0.6/#-em-set-retention-em-">这里</a>。</p>
 </blockquote></li>
-<li><p>Produce data using pulsar-client.</p>
+<li><p>使用 pulsar-client 生成数据。</p>
 <pre><code class="hljs">./bin/pulsar-client produce -m <span class="hljs-string">"Hello FileSystem Offloader"</span> -n <span class="hljs-number">1000</span> <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre></li>
-<li><p>The offloading operation starts after a ledger rollover is triggered. To ensure offload data successfully, it is recommended that you wait until several ledger rollovers are triggered. In this case, you might need to wait for a second. You can check the ledger status using pulsarctl.</p>
+<li><p>卸载操作在触发 ledger 切换后开始。 为了确保卸载数据成功,建议您等待多个 ledger 切换被触发。 在这种情况下,可能需要等待一秒钟。 您可以使用 pulsarctl 检查 ledger 状态。</p>
 <pre><code class="hljs">./bin/pulsarctl topics internal-stats <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre>
 <p><strong>输出</strong></p>
-<p>The data of the ledger 696 is not offloaded.</p>
+<p>ledger 696 的数据未卸载。</p>
 <pre><code class="hljs">{
 <span class="hljs-attr">"version"</span>: <span class="hljs-number">1</span>,
 <span class="hljs-attr">"creationDate"</span>: <span class="hljs-string">"2020-06-16T21:46:25.807+08:00"</span>,
@@ -302,14 +302,14 @@ Reason: <span class="hljs-builtin-name">Error</span> offloading: org.apache.book
 <span class="hljs-attr">"cursors"</span>: {}
 }
 </code></pre></li>
-<li><p>Wait a second and send more messages to the topic.</p>
+<li><p>请稍等,然后向 topic 发送更多消息。</p>
 <pre><code class="hljs">./bin/pulsar-client produce -m <span class="hljs-string">"Hello FileSystem Offloader"</span> -n <span class="hljs-number">1000</span> <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre></li>
-<li><p>Check the ledger status using pulsarctl.</p>
+<li><p>使用 pulsarctl 检查 ledger 状态。</p>
 <pre><code class="hljs">./bin/pulsarctl topics internal-stats <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre>
 <p><strong>输出</strong></p>
-<p>The ledger 696 is rollovered.</p>
+<p>ledger 696已经切换。</p>
 <pre><code class="hljs">{
 <span class="hljs-attr">"version"</span>: <span class="hljs-number">2</span>,
 <span class="hljs-attr">"creationDate"</span>: <span class="hljs-string">"2020-06-16T21:46:25.807+08:00"</span>,
@@ -329,19 +329,19 @@ Reason: <span class="hljs-builtin-name">Error</span> offloading: org.apache.book
 <span class="hljs-attr">"cursors"</span>: {}
 }
 </code></pre></li>
-<li><p>Trigger the offloading operation manually using pulsarctl.</p>
+<li><p>使用 pulsarctl 手动触发卸载操作。</p>
 <pre><code class="hljs">./bin/pulsarctl topic offload -s <span class="hljs-number">0</span> <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre>
 <p><strong>输出</strong></p>
-<p>Data in ledgers before the ledge 697 is offloaded.</p>
+<p>ledger 中的数据先于 ledge 697 已卸载。</p>
 <pre><code class="hljs"><span class="hljs-comment"># offload info, the ledgers before 697 will be offloaded</span>
 Offload triggered <span class="hljs-keyword">for</span> persistent:<span class="hljs-regexp">//</span>public<span class="hljs-regexp">/default/</span>fs-test3 <span class="hljs-keyword">for</span> messages before <span class="hljs-number">697</span>:<span class="hljs-number">0</span>:-<span class="hljs-number">1</span>
 </code></pre></li>
-<li><p>Check the ledger status using pulsarctl.</p>
+<li><p>使用 pulsarctl 检查 ledger 状态。</p>
 <pre><code class="hljs">./bin/pulsarctl topic <span class="hljs-type">internal</span>-<span class="hljs-keyword">info</span> <span class="hljs-built_in">public</span>/<span class="hljs-keyword">default</span>/fs-test
 </code></pre>
 <p><strong>输出</strong></p>
-<p>The data of the ledger 696 is offloaded.</p>
+<p>ledger 696 的数据已卸载。</p>
 <pre><code class="hljs">{
 <span class="hljs-attr">"version"</span>: <span class="hljs-number">4</span>,
 <span class="hljs-attr">"creationDate"</span>: <span class="hljs-string">"2020-06-16T21:46:25.807+08:00"</span>,
@@ -361,10 +361,10 @@ Offload triggered <span class="hljs-keyword">for</span> persistent:<span class="
 <span class="hljs-attr">"cursors"</span>: {}
 }
 </code></pre>
-<p>And the <strong>Capacity Used</strong> is changed from 4 KB to 116.46 KB.</p>
+<p>并且 <strong>所用容量</strong> 已经从 4 KB 变成 116.46 KB。</p>
 <p><img src="/docs/assets/FileSystem-8.png" alt=""></p></li>
 </ol>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.8.0/tiered-storage-gcs"><span class="arrow-prev">← </span><span>GCS offloader</span></a><a class="docs-next button" href="/docs/zh-CN/2.8.0/tiered-storage-azure"><span class="function-name-prevnext">Azure BlobStore offloader</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#安装">安装</a><ul class="toc-headings"><li> [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.8.0/tiered-storage-gcs"><span class="arrow-prev">← </span><span>GCS offloader</span></a><a class="docs-next button" href="/docs/zh-CN/2.8.0/tiered-storage-azure"><span class="function-name-prevnext">Azure BlobStore offloader</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#安装">安装</a><ul class="toc-headings"><li> [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.8.0/tiered-storage-filesystem/index.html b/content/docs/zh-CN/2.8.0/tiered-storage-filesystem/index.html
index 9e9368d..7c091c1 100644
--- a/content/docs/zh-CN/2.8.0/tiered-storage-filesystem/index.html
+++ b/content/docs/zh-CN/2.8.0/tiered-storage-filesystem/index.html
@@ -142,27 +142,27 @@ ls offloaders
 </ul>
 <h3><a class="anchor" aria-hidden="true" id="自动运行-filesystem-offloader"></a><a href="#自动运行-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c [...]
 <p>您可以将命名空间策略配置为在达到阈值后自动卸载数据。 该阈值基于一个 topic 在 Pulsar 集群的数据存储大小而定。 一旦 topic 到达阈值,就自动触发卸载操作。</p>
-<p>Threshold value|Action |---|--- | &gt; 0 | It triggers the offloading operation if the topic storage reaches its threshold. = 0| 它使 broker 竭尽全力地 offload 数据。 &lt; 0 |It disables automatic offloading operation.</p>
-<p>Automatic offload runs when a new segment is added to a topic log. If you set the threshold on a namespace, but few messages are being produced to the topic, the filesystem offloader does not work until the current segment is full.</p>
-<p>You can configure the threshold using CLI tools, such as pulsar-admin.</p>
+<p>阈值|动作 |---|--- | &gt; 0 | 如果 topic 存储达到其阈值,它就会触发卸载操作。 = 0| 它使 broker 竭尽全力地 offload 数据。 &lt; 0 | 它将禁用自动卸载操作。</p>
+<p>Automatic offload runs when a new segment is added to a topic log. 如果在命名空间上设置了阈值,但向该 topic 生产的消息很少,filesystem offloader 将会停止工作,直至当前 segment 达到饱和。</p>
+<p>通过命令行工具(CLI)可以设置阈值大小,比如 pulsar-admin。</p>
 <h4><a class="anchor" aria-hidden="true" id="示例"></a><a href="#示例" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c [...]
-<p>This example sets the filesystem offloader threshold to 10 MB using pulsar-admin.</p>
+<p>该示例使用 pulsar-admin 将 filesystem offloader 的阈值大小设置为 10 MB。</p>
 <pre><code class="hljs css language-bash">pulsar-admin namespaces <span class="hljs-built_in">set</span>-offload-threshold --size 10M my-tenant/my-namespace
 </code></pre>
 <blockquote>
 <h4><a class="anchor" aria-hidden="true" id="提示"></a><a href="#提示" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c [...]
 <p>关于 <code>pulsar-admin namespaces set-offload-threshold options</code> 命令的更多信息,包括标志、描述、默认值和速记方法,见<a href="/docs/zh-CN/2.8.0/pulsar-admin#set-offload-threshold">这里</a>。</p>
 </blockquote>
-<h3><a class="anchor" aria-hidden="true" id="run-filesystem-offloader-manually"></a><a href="#run-filesystem-offloader-manually" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S1 [...]
-<p>For individual topics, you can trigger the filesystem offloader manually using one of the following methods:</p>
+<h3><a class="anchor" aria-hidden="true" id="手动运行-filesystem-offloader"></a><a href="#手动运行-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c [...]
+<p>对于每一个 topic,使用下列方法之一可以手动触发 filesystem offloader:</p>
 <ul>
-<li><p>Use the REST endpoint.</p></li>
+<li><p>使用 REST 端点。</p></li>
 <li><p>使用命令行工具(例如 pulsar-admin)。</p></li>
 </ul>
-<p>To manually trigger the filesystem offloader via CLI tools, you need to specify the maximum amount of data (threshold) that should be retained on a Pulsar cluster for a topic. 如果 Pulsar 集群上 topic 的数据大小超过了这个阈值,那么该 topic 下的 segment 就会被陆续卸载到 filesystem 上,直到不再超过这个阈值。 优先卸载旧的 segment。</p>
+<p>要想用命令行工具触发 filesystem offloader,需要指定一个 topic 应该保留在 Pulsar 集群中的最大数据量(阈值)。 如果 Pulsar 集群上 topic 的数据大小超过了这个阈值,那么该 topic 下的 segment 就会被陆续卸载到 filesystem 上,直到不再超过这个阈值。 优先卸载旧的 segment。</p>
 <h4><a class="anchor" aria-hidden="true" id="示例-1"></a><a href="#示例-1" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
 <ul>
-<li><p>This example manually run the filesystem offloader using pulsar-admin.</p>
+<li><p>此示例使用 pulsar-admin 手动运行 filesystem offloader。</p>
 <pre><code class="hljs css language-bash">pulsar-admin topics offload --size-threshold 10M persistent://my-tenant/my-namespace/topic1
 </code></pre>
 <p><strong>输出</strong></p>
@@ -199,96 +199,96 @@ Reason: <span class="hljs-builtin-name">Error</span> offloading: org.apache.book
 </blockquote></li>
 </ul>
 <h2><a class="anchor" aria-hidden="true" id="教程"></a><a href="#教程" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c [...]
-<p>This section provides step-by-step instructions on how to use the filesystem offloader to move data from Pulsar to Hadoop Distributed File System (HDFS) or Network File system (NFS).</p>
-<pre><code class="hljs">&lt;div class=&quot;tabs&quot;&gt;&lt;div class=&quot;nav-tabs&quot;&gt;&lt;div id=&quot;tab-group-23659-tab-23660&quot; class=&quot;nav-link active&quot; data-group=&quot;group_23659&quot; data-tab=&quot;tab-group-23659-content-23660&quot;&gt;HDFS&lt;/div&gt;&lt;div id=&quot;tab-group-23659-tab-23661&quot; class=&quot;nav-link&quot; data-group=&quot;group_23659&quot; data-tab=&quot;tab-group-23659-content-23661&quot;&gt;NFS&lt;/div&gt;&lt;/div&gt;&lt;div class=&q [...]
+<p>本节提供有关如何使用  filesystem offloader  将数据从 Pulsar 移动到 Hadoop 分布式文件系统(HDFS)或网络文件系统(NFS)的分步说明。</p>
+<pre><code class="hljs">&lt;div class=&quot;tabs&quot;&gt;&lt;div class=&quot;nav-tabs&quot;&gt;&lt;div id=&quot;tab-group-23659-tab-23660&quot; class=&quot;nav-link active&quot; data-group=&quot;group_23659&quot; data-tab=&quot;tab-group-23659-content-23660&quot;&gt;HDFS&lt;/div&gt;&lt;div id=&quot;tab-group-23659-tab-23661&quot; class=&quot;nav-link&quot; data-group=&quot;group_23659&quot; data-tab=&quot;tab-group-23659-content-23661&quot;&gt;NFS&lt;/div&gt;&lt;/div&gt;&lt;div class=&q [...]
 </code></pre>
-<p><h3><a class="anchor" aria-hidden="true" id="step-1-prepare-the-hdfs-environment"></a><a href="#step-1-prepare-the-hdfs-environment" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22  [...]
-<p>This tutorial sets up a Hadoop single node cluster and uses Hadoop 3.2.1.</p>
+<p><h3><a class="anchor" aria-hidden="true" id="第-1-步准备-hdfs-环境"></a><a href="#第-1-步准备-hdfs-环境" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2 [...]
+<p>本教程使用 Hadoop 3.2.1设置一个 Hadoop 单个节点集群。</p>
 <blockquote>
 <p><strong>提示</strong></p>
-<p>For details about how to set up a Hadoop single node cluster, see <a href="https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html">here</a>.</p>
+<p>有关如何设置 Hadoop 单节点集群的详细信息,请参见<a href="https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html">此处</a>。</p>
 </blockquote>
 <ol>
-<li>Download and uncompress Hadoop 3.2.1.</li>
+<li>下载并解压缩 Hadoop 3.2.1。</li>
 </ol>
 <pre><code class="hljs">wget <span class="hljs-symbol">https:</span>/<span class="hljs-regexp">/mirrors.bfsu.edu.cn/apache</span><span class="hljs-regexp">/hadoop/common</span><span class="hljs-regexp">/hadoop-3.2.1/hadoop</span><span class="hljs-number">-3.2</span>.<span class="hljs-number">1</span>.tar.gz  <br /><br />tar -zxvf hadoop<span class="hljs-number">-3.2</span>.<span class="hljs-number">1</span>.tar.gz -C <span class="hljs-variable">$HADOOP_HOME</span><br /></code></pre>    
 <ol start="2">
-<li>Configure Hadoop.</li>
+<li>配置 Hadoop。</li>
 </ol>
 <pre><code class="hljs"><span class="hljs-meta"># $HADOOP_HOME/etc/hadoop/core-site.xml</span><br /><span class="hljs-params">&lt;configuration&gt;</span><br />    <span class="hljs-params">&lt;property&gt;</span><br />        <span class="hljs-params">&lt;name&gt;</span>fs.defaultFS<span class="hljs-params">&lt;/name&gt;</span><br />        <span class="hljs-params">&lt;value&gt;</span>hdfs:<span class="hljs-comment">//localhost:9000&lt;/value&gt;</span><br />    <span class="hljs-param [...]
 <ol start="3">
-<li>Set passphraseless ssh.</li>
+<li>设置无密码 ssh。</li>
 </ol>
-<pre><code class="hljs"><span class="hljs-comment"># Now check that you can ssh to the localhost without a passphrase:</span><br /><span class="hljs-variable">$ </span>ssh localhost<br /><span class="hljs-comment"># If you cannot ssh to localhost without a passphrase, execute the following commands</span><br /><span class="hljs-variable">$ </span>ssh-keygen -t rsa -P <span class="hljs-string">''</span> -f ~<span class="hljs-regexp">/.ssh/id</span>_rsa<br /><span class="hljs-variable">$ < [...]
+<pre><code class="hljs"><span class="hljs-comment"># 现在检查无需密码是否可以使用 ssh 连接到 localhost:</span><br /><span class="hljs-variable">$ </span>ssh localhost<br /><span class="hljs-comment"># 如果在无密码的情况下无法 ssh 连接到 localhost,请执行以下命令</span><br /><span class="hljs-variable">$ </span>ssh-keygen -t rsa -P <span class="hljs-string">''</span> -f ~<span class="hljs-regexp">/.ssh/id</span>_rsa<br /><span class="hljs-variable">$ </span>cat ~<span class="hljs-regexp">/.ssh/id</span>_rsa.pub &gt;&gt; ~<span  [...]
 <ol start="4">
-<li>Start HDFS.</li>
+<li>启动 HDFS。</li>
 </ol>
-<pre><code class="hljs"><span class="hljs-comment"># don't execute this command repeatedly, repeat execute will cauld the clusterId of the datanode is not consistent with namenode</span><br /><span class="hljs-variable">$HADOOP_HOME</span><span class="hljs-regexp">/bin/</span>hadoop namenode -format<br /><span class="hljs-variable">$HADOOP_HOME</span><span class="hljs-regexp">/sbin/</span>start-dfs.sh<br /></code></pre>    
+<pre><code class="hljs"><span class="hljs-comment"># 不重复执行此命令, 重复执行会捕获数据集群标识符与命名方式</span><br /><span class="hljs-variable">$HADOOP_HOME</span><span class="hljs-regexp">/bin/</span>hadoop namenode -format<br /><span class="hljs-variable">$HADOOP_HOME</span><span class="hljs-regexp">/sbin/</span>start-dfs.sh<br /></code></pre>    
 <ol start="5">
-<li>Navigate to the <a href="http://localhost:9870/">HDFS website</a>.</li>
+<li>导航到 <a href="http://localhost:9870/">HDFS 网站</a>。</li>
 </ol>
-<p>You can see the <strong>Overview</strong> page.</p>
+<p>您可以查看 <strong>概述</strong> 页面。</p>
 <p><img src="/docs/assets/FileSystem-1.png" alt=""></p>
 <ol>
-<li><p>At the top navigation bar, click <strong>Datanodes</strong> to check DataNode information.</p>
+<li><p>在顶部导航栏,单击 <strong>数据节点</strong> 查看数据节点信息。</p>
 <p><img src="/docs/assets/FileSystem-2.png" alt=""></p></li>
-<li><p>Click <strong>HTTP Address</strong> to get more detailed information about localhost:9866.</p>
-<p>As can be seen below, the size of <strong>Capacity Used</strong> is 4 KB, which is the initial value.</p>
+<li><p>单击 <strong>HTTP 地址</strong> 获取更多关于 localhost:9866 的详细信息。</p>
+<p>如下文所示, <strong>所用容量</strong> 的大小是 4 KB,它是初始值。</p>
 <p><img src="/docs/assets/FileSystem-3.png" alt=""></p></li>
 </ol>
-<h3><a class="anchor" aria-hidden="true" id="step-2-install-the-filesystem-offloader"></a><a href="#step-2-install-the-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2  [...]
-<p>For details, see <a href="#installation">installation</a>.</p>
-<h3><a class="anchor" aria-hidden="true" id="step-3-configure-the-filesystem-offloader"></a><a href="#step-3-configure-the-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1  [...]
-<p>As indicated in the <a href="#configuration">configuration</a> section, you need to configure some properties for the filesystem offloader driver before using it. This tutorial assumes that you have configured the filesystem offloader driver as below and run Pulsar in <strong>standalone</strong> mode.</p>
-<p>Set the following configurations in the <code>conf/standalone.conf</code> file.</p>
+<h3><a class="anchor" aria-hidden="true" id="第-2-步-安装-filesystem-offloader"></a><a href="#第-2-步-安装-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
+<p>更多详细信息,请参阅 <a href="#installation">安装</a>。</p>
+<h3><a class="anchor" aria-hidden="true" id="第-3-步-配置-filesystem-offloader"></a><a href="#第-3-步-配置-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
+<p>正如 <a href="#configuration">配置</a> 部分所指明的那样,需要先配置  filesystem offloader 驱动程序的一些属性,然后才能使用。 本教程假设您已按以下方式配置  filesystem offloader 驱动程序,并在<strong>独立</strong>模式下运行 Pulsar。</p>
+<p>在 <code>conf/standalone.conf</code> 文件中设置以下配置。</p>
 <pre><code class="hljs css language-conf"><span class="hljs-attr">managedLedgerOffloadDriver</span>=filesystem<br /><span class="hljs-attr">fileSystemURI</span>=hdfs://<span class="hljs-number">127.0</span>.<span class="hljs-number">0.1</span>:<span class="hljs-number">9000</span><br /><span class="hljs-attr">fileSystemProfilePath</span>=../conf/filesystem_<span class="hljs-literal">off</span>load_core_site.xml<br /></code></pre>    
 <blockquote>
 <p><strong>Note</strong></p>
-<p>For testing purposes, you can set the following two configurations to speed up ledger rollover, but it is not recommended that you set them in the production environment.</p>
+<p>为测试目的,您可以设置以下两个配置来加速 ledger 切换, 但不建议在生产环境中设置它们。</p>
 </blockquote>
 <pre><code class="hljs"><span class="hljs-attr">managedLedgerMinLedgerRolloverTimeMinutes</span>=<span class="hljs-number">1</span><br /><span class="hljs-attr">managedLedgerMaxEntriesPerLedger</span>=<span class="hljs-number">100</span><br /></code></pre>    
 </span></div></div><div id="tab-group-23659-content-23661" class="tab-pane" data-group="group_23659" tabindex="-1"><div><span><blockquote>
 <p><strong>Note</strong></p>
-<p>In this section, it is assumed that you have enabled NFS service and set the shared path of your NFS service. In this section, <code>/Users/test</code> is used as the shared path of NFS service.</p>
+<p>在本节中,假定您已启用 NFS 服务并设置 NFS 服务的共享路径。 在本节中, <code>/Users/test</code> 被用作 NFS 服务的共享路径。</p>
 </blockquote>
-<p>To offload data to NFS, follow these steps.</p>
-<h3><a class="anchor" aria-hidden="true" id="step-1-install-the-filesystem-offloader"></a><a href="#step-1-install-the-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2  [...]
-<p>For details, see <a href="#installation">installation</a>.</p>
-<h3><a class="anchor" aria-hidden="true" id="step-2-mont-your-nfs-to-your-local-filesystem"></a><a href="#step-2-mont-your-nfs-to-your-local-filesystem" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h- [...]
-<p>This example mounts mounts <em>/Users/pulsar_nfs</em> to <em>/Users/test</em>.</p>
+<p>要将数据卸载到 NFS,请执行以下步骤。</p>
+<h3><a class="anchor" aria-hidden="true" id="第-1-步-安装-filesystem-offloader"></a><a href="#第-1-步-安装-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
+<p>更多详细信息,请参阅 <a href="#installation">安装</a>。</p>
+<h3><a class="anchor" aria-hidden="true" id="第-2-步将-nfs-置于本地文件系统"></a><a href="#第-2-步将-nfs-置于本地文件系统" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.2 [...]
+<p>此示例将挂载 <em>/Users/pulsar_nfs</em> 到 <em>/Users/test</em>。</p>
 <pre><code class="hljs">mount -e <span class="hljs-number">192.168</span>.0.<span class="hljs-number">103</span><span class="hljs-symbol">:/Users/test/Users/pulsar_nfs</span><br /></code></pre>    
-<h3><a class="anchor" aria-hidden="true" id="step-3-configure-the-filesystem-offloader-driver"></a><a href="#step-3-configure-the-filesystem-offloader-driver" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9z [...]
-<p>As indicated in the <a href="#configuration">configuration</a> section, you need to configure some properties for the filesystem offloader driver before using it. This tutorial assumes that you have configured the filesystem offloader driver as below and run Pulsar in <strong>standalone</strong> mode.</p>
+<h3><a class="anchor" aria-hidden="true" id="第-3-步-配置-filesystem-offloader-驱动程序"></a><a href="#第-3-步-配置-filesystem-offloader-驱动程序" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5 [...]
+<p>正如 <a href="#configuration">配置</a> 部分所指明的那样,需要先配置  filesystem offloader 驱动程序的一些属性,然后才能使用。 本教程假设您已按以下方式配置  filesystem offloader 驱动程序,并在<strong>独立</strong>模式下运行 Pulsar。</p>
 <ol>
-<li>Set the following configurations in the <code>conf/standalone.conf</code> file.</li>
+<li>在 <code>conf/standalone.conf</code> 文件中设置以下配置。</li>
 </ol>
 <pre><code class="hljs css language-conf"><span class="hljs-attr">managedLedgerOffloadDriver</span>=filesystem<br /><span class="hljs-attr">fileSystemProfilePath</span>=../conf/filesystem_<span class="hljs-literal">off</span>load_core_site.xml<br /></code></pre>    
 <ol start="2">
-<li>Modify the <em>filesystem_offload_core_site.xml</em> as follows.</li>
+<li>修改 <em>filesystem_offload_core_site.xml</em>,如下所示。</li>
 </ol>
 <pre><code class="hljs"><span class="hljs-tag">&lt;<span class="hljs-name">property</span>&gt;</span><br />    <span class="hljs-tag">&lt;<span class="hljs-name">name</span>&gt;</span>fs.defaultFS<span class="hljs-tag">&lt;/<span class="hljs-name">name</span>&gt;</span><br />    <span class="hljs-tag">&lt;<span class="hljs-name">value</span>&gt;</span>file:///<span class="hljs-tag">&lt;/<span class="hljs-name">value</span>&gt;</span><br /><span class="hljs-tag">&lt;/<span class="hljs-nam [...]
 </span></div></div></div></div>
-<h3><a class="anchor" aria-hidden="true" id="step-4-offload-data-from-bookkeeper-to-filesystem"></a><a href="#step-4-offload-data-from-bookkeeper-to-filesystem" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4  [...]
-<p>Execute the following commands in the repository where you download Pulsar tarball. For example, <code>~/path/to/apache-pulsar-2.5.1</code>.</p>
+<h3><a class="anchor" aria-hidden="true" id="第-4-步将数据从-bookkeeper-卸载到文件系统"></a><a href="#第-4-步将数据从-bookkeeper-卸载到文件系统" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 [...]
+<p>在下载 Pulsar tar 包的仓库中执行以下命令。 例如, <code>~/path/to/apache-pulsar-2.5.1</code>。</p>
 <ol>
 <li><p>启动 Pulsar 单机模式。</p>
 <pre><code class="hljs">./bin/pulsar standalone -a <span class="hljs-number">127.0</span><span class="hljs-number">.0</span><span class="hljs-number">.1</span>
 </code></pre></li>
-<li><p>To ensure the data generated is not deleted immediately, it is recommended to set the <a href="https://pulsar.apache.org/docs/en/next/cookbooks-retention-expiry/#retention-policies">retention policy</a>, which can be either a <strong>size</strong> limit or a <strong>time</strong> limit. The larger value you set for the retention policy, the longer the data can be retained.</p>
+<li><p>为了确保生成的数据不会立即被删除,建议设置 <a href="https://pulsar.apache.org/docs/en/next/cookbooks-retention-expiry/#retention-policies">保留策略</a>, 可以是 <strong>大小</strong> 限制或 <strong>时间</strong> 限制。 为保留策略设定的值越大,数据保留的时间越长。</p>
 <pre><code class="hljs">./<span class="hljs-string">bin/</span><span class="hljs-string">pulsarctl </span><span class="hljs-string">namespaces </span><span class="hljs-built_in">set-retention</span> <span class="hljs-string">public/</span><span class="hljs-string">default </span><span class="hljs-built_in">--size</span> <span class="hljs-string">100M </span><span class="hljs-built_in">--time</span> <span class="hljs-string">2d
 </span></code></pre>
 <blockquote>
 <p><strong>提示</strong></p>
-<p>For more information about the <code>pulsarctl namespaces set-retention options</code> command, including flags, descriptions, default values, and shorthands, see <a href="https://docs.streamnative.io/pulsarctl/v2.7.0.6/#-em-set-retention-em-">here</a>.</p>
+<p>关于 <code>pulsar-admin namespaces set-offload-threshold options</code> 命令的更多信息,包括标志、描述、默认值和速记方法,参见<a href="https://docs.streamnative.io/pulsarctl/v2.7.0.6/#-em-set-retention-em-">这里</a>。</p>
 </blockquote></li>
-<li><p>Produce data using pulsar-client.</p>
+<li><p>使用 pulsar-client 生成数据。</p>
 <pre><code class="hljs">./bin/pulsar-client produce -m <span class="hljs-string">"Hello FileSystem Offloader"</span> -n <span class="hljs-number">1000</span> <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre></li>
-<li><p>The offloading operation starts after a ledger rollover is triggered. To ensure offload data successfully, it is recommended that you wait until several ledger rollovers are triggered. In this case, you might need to wait for a second. You can check the ledger status using pulsarctl.</p>
+<li><p>卸载操作在触发 ledger 切换后开始。 为了确保卸载数据成功,建议您等待多个 ledger 切换被触发。 在这种情况下,可能需要等待一秒钟。 您可以使用 pulsarctl 检查 ledger 状态。</p>
 <pre><code class="hljs">./bin/pulsarctl topics internal-stats <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre>
 <p><strong>输出</strong></p>
-<p>The data of the ledger 696 is not offloaded.</p>
+<p>ledger 696 的数据未卸载。</p>
 <pre><code class="hljs">{
 <span class="hljs-attr">"version"</span>: <span class="hljs-number">1</span>,
 <span class="hljs-attr">"creationDate"</span>: <span class="hljs-string">"2020-06-16T21:46:25.807+08:00"</span>,
@@ -302,14 +302,14 @@ Reason: <span class="hljs-builtin-name">Error</span> offloading: org.apache.book
 <span class="hljs-attr">"cursors"</span>: {}
 }
 </code></pre></li>
-<li><p>Wait a second and send more messages to the topic.</p>
+<li><p>请稍等,然后向 topic 发送更多消息。</p>
 <pre><code class="hljs">./bin/pulsar-client produce -m <span class="hljs-string">"Hello FileSystem Offloader"</span> -n <span class="hljs-number">1000</span> <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre></li>
-<li><p>Check the ledger status using pulsarctl.</p>
+<li><p>使用 pulsarctl 检查 ledger 状态。</p>
 <pre><code class="hljs">./bin/pulsarctl topics internal-stats <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre>
 <p><strong>输出</strong></p>
-<p>The ledger 696 is rollovered.</p>
+<p>ledger 696已经切换。</p>
 <pre><code class="hljs">{
 <span class="hljs-attr">"version"</span>: <span class="hljs-number">2</span>,
 <span class="hljs-attr">"creationDate"</span>: <span class="hljs-string">"2020-06-16T21:46:25.807+08:00"</span>,
@@ -329,19 +329,19 @@ Reason: <span class="hljs-builtin-name">Error</span> offloading: org.apache.book
 <span class="hljs-attr">"cursors"</span>: {}
 }
 </code></pre></li>
-<li><p>Trigger the offloading operation manually using pulsarctl.</p>
+<li><p>使用 pulsarctl 手动触发卸载操作。</p>
 <pre><code class="hljs">./bin/pulsarctl topic offload -s <span class="hljs-number">0</span> <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre>
 <p><strong>输出</strong></p>
-<p>Data in ledgers before the ledge 697 is offloaded.</p>
+<p>ledger 中的数据先于 ledge 697 已卸载。</p>
 <pre><code class="hljs"><span class="hljs-comment"># offload info, the ledgers before 697 will be offloaded</span>
 Offload triggered <span class="hljs-keyword">for</span> persistent:<span class="hljs-regexp">//</span>public<span class="hljs-regexp">/default/</span>fs-test3 <span class="hljs-keyword">for</span> messages before <span class="hljs-number">697</span>:<span class="hljs-number">0</span>:-<span class="hljs-number">1</span>
 </code></pre></li>
-<li><p>Check the ledger status using pulsarctl.</p>
+<li><p>使用 pulsarctl 检查 ledger 状态。</p>
 <pre><code class="hljs">./bin/pulsarctl topic <span class="hljs-type">internal</span>-<span class="hljs-keyword">info</span> <span class="hljs-built_in">public</span>/<span class="hljs-keyword">default</span>/fs-test
 </code></pre>
 <p><strong>输出</strong></p>
-<p>The data of the ledger 696 is offloaded.</p>
+<p>ledger 696 的数据已卸载。</p>
 <pre><code class="hljs">{
 <span class="hljs-attr">"version"</span>: <span class="hljs-number">4</span>,
 <span class="hljs-attr">"creationDate"</span>: <span class="hljs-string">"2020-06-16T21:46:25.807+08:00"</span>,
@@ -361,10 +361,10 @@ Offload triggered <span class="hljs-keyword">for</span> persistent:<span class="
 <span class="hljs-attr">"cursors"</span>: {}
 }
 </code></pre>
-<p>And the <strong>Capacity Used</strong> is changed from 4 KB to 116.46 KB.</p>
+<p>并且 <strong>所用容量</strong> 已经从 4 KB 变成 116.46 KB。</p>
 <p><img src="/docs/assets/FileSystem-8.png" alt=""></p></li>
 </ol>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.8.0/tiered-storage-gcs"><span class="arrow-prev">← </span><span>GCS offloader</span></a><a class="docs-next button" href="/docs/zh-CN/2.8.0/tiered-storage-azure"><span class="function-name-prevnext">Azure BlobStore offloader</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#安装">安装</a><ul class="toc-headings"><li> [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.8.0/tiered-storage-gcs"><span class="arrow-prev">← </span><span>GCS offloader</span></a><a class="docs-next button" href="/docs/zh-CN/2.8.0/tiered-storage-azure"><span class="function-name-prevnext">Azure BlobStore offloader</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#安装">安装</a><ul class="toc-headings"><li> [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/next/tiered-storage-filesystem.html b/content/docs/zh-CN/next/tiered-storage-filesystem.html
index 05463bd..f3e8886 100644
--- a/content/docs/zh-CN/next/tiered-storage-filesystem.html
+++ b/content/docs/zh-CN/next/tiered-storage-filesystem.html
@@ -143,27 +143,27 @@ ls offloaders
 </ul>
 <h3><a class="anchor" aria-hidden="true" id="自动运行-filesystem-offloader"></a><a href="#自动运行-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c [...]
 <p>您可以将命名空间策略配置为在达到阈值后自动卸载数据。 该阈值基于一个 topic 在 Pulsar 集群的数据存储大小而定。 一旦 topic 到达阈值,就自动触发卸载操作。</p>
-<p>Threshold value|Action |---|--- | &gt; 0 | It triggers the offloading operation if the topic storage reaches its threshold. = 0| 它使 broker 竭尽全力地 offload 数据。 &lt; 0 |It disables automatic offloading operation.</p>
-<p>Automatic offload runs when a new segment is added to a topic log. If you set the threshold on a namespace, but few messages are being produced to the topic, the filesystem offloader does not work until the current segment is full.</p>
-<p>You can configure the threshold using CLI tools, such as pulsar-admin.</p>
+<p>阈值|动作 |---|--- | &gt; 0 | 如果 topic 存储达到其阈值,它就会触发卸载操作。 = 0| 它使 broker 竭尽全力地 offload 数据。 &lt; 0 | 它将禁用自动卸载操作。</p>
+<p>Automatic offload runs when a new segment is added to a topic log. 如果在命名空间上设置了阈值,但向该 topic 生产的消息很少,filesystem offloader 将会停止工作,直至当前 segment 达到饱和。</p>
+<p>通过命令行工具(CLI)可以设置阈值大小,比如 pulsar-admin。</p>
 <h4><a class="anchor" aria-hidden="true" id="示例"></a><a href="#示例" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c [...]
-<p>This example sets the filesystem offloader threshold to 10 MB using pulsar-admin.</p>
+<p>该示例使用 pulsar-admin 将 filesystem offloader 的阈值大小设置为 10 MB。</p>
 <pre><code class="hljs css language-bash">pulsar-admin namespaces <span class="hljs-built_in">set</span>-offload-threshold --size 10M my-tenant/my-namespace
 </code></pre>
 <blockquote>
 <h4><a class="anchor" aria-hidden="true" id="提示"></a><a href="#提示" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c [...]
 <p>关于 <code>pulsar-admin namespaces set-offload-threshold options</code> 命令的更多信息,包括标志、描述、默认值和速记方法,见<a href="/docs/zh-CN/next/pulsar-admin#set-offload-threshold">这里</a>。</p>
 </blockquote>
-<h3><a class="anchor" aria-hidden="true" id="run-filesystem-offloader-manually"></a><a href="#run-filesystem-offloader-manually" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S1 [...]
-<p>For individual topics, you can trigger the filesystem offloader manually using one of the following methods:</p>
+<h3><a class="anchor" aria-hidden="true" id="手动运行-filesystem-offloader"></a><a href="#手动运行-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c [...]
+<p>对于每一个 topic,使用下列方法之一可以手动触发 filesystem offloader:</p>
 <ul>
-<li><p>Use the REST endpoint.</p></li>
+<li><p>使用 REST 端点。</p></li>
 <li><p>使用命令行工具(例如 pulsar-admin)。</p></li>
 </ul>
-<p>To manually trigger the filesystem offloader via CLI tools, you need to specify the maximum amount of data (threshold) that should be retained on a Pulsar cluster for a topic. 如果 Pulsar 集群上 topic 的数据大小超过了这个阈值,那么该 topic 下的 segment 就会被陆续卸载到 filesystem 上,直到不再超过这个阈值。 优先卸载旧的 segment。</p>
+<p>要想用命令行工具触发 filesystem offloader,需要指定一个 topic 应该保留在 Pulsar 集群中的最大数据量(阈值)。 如果 Pulsar 集群上 topic 的数据大小超过了这个阈值,那么该 topic 下的 segment 就会被陆续卸载到 filesystem 上,直到不再超过这个阈值。 优先卸载旧的 segment。</p>
 <h4><a class="anchor" aria-hidden="true" id="示例-1"></a><a href="#示例-1" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
 <ul>
-<li><p>This example manually run the filesystem offloader using pulsar-admin.</p>
+<li><p>此示例使用 pulsar-admin 手动运行 filesystem offloader。</p>
 <pre><code class="hljs css language-bash">pulsar-admin topics offload --size-threshold 10M persistent://my-tenant/my-namespace/topic1
 </code></pre>
 <p><strong>输出</strong></p>
@@ -200,96 +200,96 @@ Reason: <span class="hljs-builtin-name">Error</span> offloading: org.apache.book
 </blockquote></li>
 </ul>
 <h2><a class="anchor" aria-hidden="true" id="教程"></a><a href="#教程" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c [...]
-<p>This section provides step-by-step instructions on how to use the filesystem offloader to move data from Pulsar to Hadoop Distributed File System (HDFS) or Network File system (NFS).</p>
-<pre><code class="hljs">&lt;div class=&quot;tabs&quot;&gt;&lt;div class=&quot;nav-tabs&quot;&gt;&lt;div id=&quot;tab-group-3582-tab-3583&quot; class=&quot;nav-link active&quot; data-group=&quot;group_3582&quot; data-tab=&quot;tab-group-3582-content-3583&quot;&gt;HDFS&lt;/div&gt;&lt;div id=&quot;tab-group-3582-tab-3584&quot; class=&quot;nav-link&quot; data-group=&quot;group_3582&quot; data-tab=&quot;tab-group-3582-content-3584&quot;&gt;NFS&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;tab-co [...]
+<p>本节提供有关如何使用  filesystem offloader  将数据从 Pulsar 移动到 Hadoop 分布式文件系统(HDFS)或网络文件系统(NFS)的分步说明。</p>
+<pre><code class="hljs">&lt;div class=&quot;tabs&quot;&gt;&lt;div class=&quot;nav-tabs&quot;&gt;&lt;div id=&quot;tab-group-3582-tab-3583&quot; class=&quot;nav-link active&quot; data-group=&quot;group_3582&quot; data-tab=&quot;tab-group-3582-content-3583&quot;&gt;HDFS&lt;/div&gt;&lt;div id=&quot;tab-group-3582-tab-3584&quot; class=&quot;nav-link&quot; data-group=&quot;group_3582&quot; data-tab=&quot;tab-group-3582-content-3584&quot;&gt;NFS&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;tab-co [...]
 </code></pre>
-<p><h3><a class="anchor" aria-hidden="true" id="step-1-prepare-the-hdfs-environment"></a><a href="#step-1-prepare-the-hdfs-environment" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22  [...]
-<p>This tutorial sets up a Hadoop single node cluster and uses Hadoop 3.2.1.</p>
+<p><h3><a class="anchor" aria-hidden="true" id="第-1-步准备-hdfs-环境"></a><a href="#第-1-步准备-hdfs-环境" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2 [...]
+<p>本教程使用 Hadoop 3.2.1设置一个 Hadoop 单个节点集群。</p>
 <blockquote>
 <p><strong>提示</strong></p>
-<p>For details about how to set up a Hadoop single node cluster, see <a href="https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html">here</a>.</p>
+<p>有关如何设置 Hadoop 单节点集群的详细信息,请参见<a href="https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html">此处</a>。</p>
 </blockquote>
 <ol>
-<li>Download and uncompress Hadoop 3.2.1.</li>
+<li>下载并解压缩 Hadoop 3.2.1。</li>
 </ol>
 <pre><code class="hljs">wget <span class="hljs-symbol">https:</span>/<span class="hljs-regexp">/mirrors.bfsu.edu.cn/apache</span><span class="hljs-regexp">/hadoop/common</span><span class="hljs-regexp">/hadoop-3.2.1/hadoop</span><span class="hljs-number">-3.2</span>.<span class="hljs-number">1</span>.tar.gz  <br /><br />tar -zxvf hadoop<span class="hljs-number">-3.2</span>.<span class="hljs-number">1</span>.tar.gz -C <span class="hljs-variable">$HADOOP_HOME</span><br /></code></pre>    
 <ol start="2">
-<li>Configure Hadoop.</li>
+<li>配置 Hadoop。</li>
 </ol>
 <pre><code class="hljs"><span class="hljs-meta"># $HADOOP_HOME/etc/hadoop/core-site.xml</span><br /><span class="hljs-params">&lt;configuration&gt;</span><br />    <span class="hljs-params">&lt;property&gt;</span><br />        <span class="hljs-params">&lt;name&gt;</span>fs.defaultFS<span class="hljs-params">&lt;/name&gt;</span><br />        <span class="hljs-params">&lt;value&gt;</span>hdfs:<span class="hljs-comment">//localhost:9000&lt;/value&gt;</span><br />    <span class="hljs-param [...]
 <ol start="3">
-<li>Set passphraseless ssh.</li>
+<li>设置无密码 ssh。</li>
 </ol>
-<pre><code class="hljs"><span class="hljs-comment"># Now check that you can ssh to the localhost without a passphrase:</span><br /><span class="hljs-variable">$ </span>ssh localhost<br /><span class="hljs-comment"># If you cannot ssh to localhost without a passphrase, execute the following commands</span><br /><span class="hljs-variable">$ </span>ssh-keygen -t rsa -P <span class="hljs-string">''</span> -f ~<span class="hljs-regexp">/.ssh/id</span>_rsa<br /><span class="hljs-variable">$ < [...]
+<pre><code class="hljs"><span class="hljs-comment"># 现在检查无需密码是否可以使用 ssh 连接到 localhost:</span><br /><span class="hljs-variable">$ </span>ssh localhost<br /><span class="hljs-comment"># 如果在无密码的情况下无法 ssh 连接到 localhost,请执行以下命令</span><br /><span class="hljs-variable">$ </span>ssh-keygen -t rsa -P <span class="hljs-string">''</span> -f ~<span class="hljs-regexp">/.ssh/id</span>_rsa<br /><span class="hljs-variable">$ </span>cat ~<span class="hljs-regexp">/.ssh/id</span>_rsa.pub &gt;&gt; ~<span  [...]
 <ol start="4">
-<li>Start HDFS.</li>
+<li>启动 HDFS。</li>
 </ol>
-<pre><code class="hljs"><span class="hljs-comment"># don't execute this command repeatedly, repeat execute will cauld the clusterId of the datanode is not consistent with namenode</span><br /><span class="hljs-variable">$HADOOP_HOME</span><span class="hljs-regexp">/bin/</span>hadoop namenode -format<br /><span class="hljs-variable">$HADOOP_HOME</span><span class="hljs-regexp">/sbin/</span>start-dfs.sh<br /></code></pre>    
+<pre><code class="hljs"><span class="hljs-comment"># 不重复执行此命令, 重复执行会捕获数据集群标识符与命名方式</span><br /><span class="hljs-variable">$HADOOP_HOME</span><span class="hljs-regexp">/bin/</span>hadoop namenode -format<br /><span class="hljs-variable">$HADOOP_HOME</span><span class="hljs-regexp">/sbin/</span>start-dfs.sh<br /></code></pre>    
 <ol start="5">
-<li>Navigate to the <a href="http://localhost:9870/">HDFS website</a>.</li>
+<li>导航到 <a href="http://localhost:9870/">HDFS 网站</a>。</li>
 </ol>
-<p>You can see the <strong>Overview</strong> page.</p>
+<p>您可以查看 <strong>概述</strong> 页面。</p>
 <p><img src="/docs/assets/FileSystem-1.png" alt=""></p>
 <ol>
-<li><p>At the top navigation bar, click <strong>Datanodes</strong> to check DataNode information.</p>
+<li><p>在顶部导航栏,单击 <strong>数据节点</strong> 查看数据节点信息。</p>
 <p><img src="/docs/assets/FileSystem-2.png" alt=""></p></li>
-<li><p>Click <strong>HTTP Address</strong> to get more detailed information about localhost:9866.</p>
-<p>As can be seen below, the size of <strong>Capacity Used</strong> is 4 KB, which is the initial value.</p>
+<li><p>单击 <strong>HTTP 地址</strong> 获取更多关于 localhost:9866 的详细信息。</p>
+<p>如下文所示, <strong>所用容量</strong> 的大小是 4 KB,它是初始值。</p>
 <p><img src="/docs/assets/FileSystem-3.png" alt=""></p></li>
 </ol>
-<h3><a class="anchor" aria-hidden="true" id="step-2-install-the-filesystem-offloader"></a><a href="#step-2-install-the-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2  [...]
-<p>For details, see <a href="#installation">installation</a>.</p>
-<h3><a class="anchor" aria-hidden="true" id="step-3-configure-the-filesystem-offloader"></a><a href="#step-3-configure-the-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1  [...]
-<p>As indicated in the <a href="#configuration">configuration</a> section, you need to configure some properties for the filesystem offloader driver before using it. This tutorial assumes that you have configured the filesystem offloader driver as below and run Pulsar in <strong>standalone</strong> mode.</p>
-<p>Set the following configurations in the <code>conf/standalone.conf</code> file.</p>
+<h3><a class="anchor" aria-hidden="true" id="第-2-步-安装-filesystem-offloader"></a><a href="#第-2-步-安装-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
+<p>更多详细信息,请参阅 <a href="#installation">安装</a>。</p>
+<h3><a class="anchor" aria-hidden="true" id="第-3-步-配置-filesystem-offloader"></a><a href="#第-3-步-配置-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
+<p>正如 <a href="#configuration">配置</a> 部分所指明的那样,需要先配置  filesystem offloader 驱动程序的一些属性,然后才能使用。 本教程假设您已按以下方式配置  filesystem offloader 驱动程序,并在<strong>独立</strong>模式下运行 Pulsar。</p>
+<p>在 <code>conf/standalone.conf</code> 文件中设置以下配置。</p>
 <pre><code class="hljs css language-conf"><span class="hljs-attr">managedLedgerOffloadDriver</span>=filesystem<br /><span class="hljs-attr">fileSystemURI</span>=hdfs://<span class="hljs-number">127.0</span>.<span class="hljs-number">0.1</span>:<span class="hljs-number">9000</span><br /><span class="hljs-attr">fileSystemProfilePath</span>=../conf/filesystem_<span class="hljs-literal">off</span>load_core_site.xml<br /></code></pre>    
 <blockquote>
 <p><strong>Note</strong></p>
-<p>For testing purposes, you can set the following two configurations to speed up ledger rollover, but it is not recommended that you set them in the production environment.</p>
+<p>为测试目的,您可以设置以下两个配置来加速 ledger 切换, 但不建议在生产环境中设置它们。</p>
 </blockquote>
 <pre><code class="hljs"><span class="hljs-attr">managedLedgerMinLedgerRolloverTimeMinutes</span>=<span class="hljs-number">1</span><br /><span class="hljs-attr">managedLedgerMaxEntriesPerLedger</span>=<span class="hljs-number">100</span><br /></code></pre>    
 </span></div></div><div id="tab-group-3582-content-3584" class="tab-pane" data-group="group_3582" tabindex="-1"><div><span><blockquote>
 <p><strong>Note</strong></p>
-<p>In this section, it is assumed that you have enabled NFS service and set the shared path of your NFS service. In this section, <code>/Users/test</code> is used as the shared path of NFS service.</p>
+<p>在本节中,假定您已启用 NFS 服务并设置 NFS 服务的共享路径。 在本节中, <code>/Users/test</code> 被用作 NFS 服务的共享路径。</p>
 </blockquote>
-<p>To offload data to NFS, follow these steps.</p>
-<h3><a class="anchor" aria-hidden="true" id="step-1-install-the-filesystem-offloader"></a><a href="#step-1-install-the-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2  [...]
-<p>For details, see <a href="#installation">installation</a>.</p>
-<h3><a class="anchor" aria-hidden="true" id="step-2-mont-your-nfs-to-your-local-filesystem"></a><a href="#step-2-mont-your-nfs-to-your-local-filesystem" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h- [...]
-<p>This example mounts mounts <em>/Users/pulsar_nfs</em> to <em>/Users/test</em>.</p>
+<p>要将数据卸载到 NFS,请执行以下步骤。</p>
+<h3><a class="anchor" aria-hidden="true" id="第-1-步-安装-filesystem-offloader"></a><a href="#第-1-步-安装-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
+<p>更多详细信息,请参阅 <a href="#installation">安装</a>。</p>
+<h3><a class="anchor" aria-hidden="true" id="第-2-步将-nfs-置于本地文件系统"></a><a href="#第-2-步将-nfs-置于本地文件系统" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.2 [...]
+<p>此示例将挂载 <em>/Users/pulsar_nfs</em> 到 <em>/Users/test</em>。</p>
 <pre><code class="hljs">mount -e <span class="hljs-number">192.168</span>.0.<span class="hljs-number">103</span><span class="hljs-symbol">:/Users/test/Users/pulsar_nfs</span><br /></code></pre>    
-<h3><a class="anchor" aria-hidden="true" id="step-3-configure-the-filesystem-offloader-driver"></a><a href="#step-3-configure-the-filesystem-offloader-driver" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9z [...]
-<p>As indicated in the <a href="#configuration">configuration</a> section, you need to configure some properties for the filesystem offloader driver before using it. This tutorial assumes that you have configured the filesystem offloader driver as below and run Pulsar in <strong>standalone</strong> mode.</p>
+<h3><a class="anchor" aria-hidden="true" id="第-3-步-配置-filesystem-offloader-驱动程序"></a><a href="#第-3-步-配置-filesystem-offloader-驱动程序" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5 [...]
+<p>正如 <a href="#configuration">配置</a> 部分所指明的那样,需要先配置  filesystem offloader 驱动程序的一些属性,然后才能使用。 本教程假设您已按以下方式配置  filesystem offloader 驱动程序,并在<strong>独立</strong>模式下运行 Pulsar。</p>
 <ol>
-<li>Set the following configurations in the <code>conf/standalone.conf</code> file.</li>
+<li>在 <code>conf/standalone.conf</code> 文件中设置以下配置。</li>
 </ol>
 <pre><code class="hljs css language-conf"><span class="hljs-attr">managedLedgerOffloadDriver</span>=filesystem<br /><span class="hljs-attr">fileSystemProfilePath</span>=../conf/filesystem_<span class="hljs-literal">off</span>load_core_site.xml<br /></code></pre>    
 <ol start="2">
-<li>Modify the <em>filesystem_offload_core_site.xml</em> as follows.</li>
+<li>修改 <em>filesystem_offload_core_site.xml</em>,如下所示。</li>
 </ol>
 <pre><code class="hljs"><span class="hljs-tag">&lt;<span class="hljs-name">property</span>&gt;</span><br />    <span class="hljs-tag">&lt;<span class="hljs-name">name</span>&gt;</span>fs.defaultFS<span class="hljs-tag">&lt;/<span class="hljs-name">name</span>&gt;</span><br />    <span class="hljs-tag">&lt;<span class="hljs-name">value</span>&gt;</span>file:///<span class="hljs-tag">&lt;/<span class="hljs-name">value</span>&gt;</span><br /><span class="hljs-tag">&lt;/<span class="hljs-nam [...]
 </span></div></div></div></div>
-<h3><a class="anchor" aria-hidden="true" id="step-4-offload-data-from-bookkeeper-to-filesystem"></a><a href="#step-4-offload-data-from-bookkeeper-to-filesystem" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4  [...]
-<p>Execute the following commands in the repository where you download Pulsar tarball. For example, <code>~/path/to/apache-pulsar-2.5.1</code>.</p>
+<h3><a class="anchor" aria-hidden="true" id="第-4-步将数据从-bookkeeper-卸载到文件系统"></a><a href="#第-4-步将数据从-bookkeeper-卸载到文件系统" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 [...]
+<p>在下载 Pulsar tar 包的仓库中执行以下命令。 例如, <code>~/path/to/apache-pulsar-2.5.1</code>。</p>
 <ol>
 <li><p>启动 Pulsar 单机模式。</p>
 <pre><code class="hljs">./bin/pulsar standalone -a <span class="hljs-number">127.0</span><span class="hljs-number">.0</span><span class="hljs-number">.1</span>
 </code></pre></li>
-<li><p>To ensure the data generated is not deleted immediately, it is recommended to set the <a href="https://pulsar.apache.org/docs/en/next/cookbooks-retention-expiry/#retention-policies">retention policy</a>, which can be either a <strong>size</strong> limit or a <strong>time</strong> limit. The larger value you set for the retention policy, the longer the data can be retained.</p>
+<li><p>为了确保生成的数据不会立即被删除,建议设置 <a href="https://pulsar.apache.org/docs/en/next/cookbooks-retention-expiry/#retention-policies">保留策略</a>, 可以是 <strong>大小</strong> 限制或 <strong>时间</strong> 限制。 为保留策略设定的值越大,数据保留的时间越长。</p>
 <pre><code class="hljs">./<span class="hljs-string">bin/</span><span class="hljs-string">pulsarctl </span><span class="hljs-string">namespaces </span><span class="hljs-built_in">set-retention</span> <span class="hljs-string">public/</span><span class="hljs-string">default </span><span class="hljs-built_in">--size</span> <span class="hljs-string">100M </span><span class="hljs-built_in">--time</span> <span class="hljs-string">2d
 </span></code></pre>
 <blockquote>
 <p><strong>提示</strong></p>
-<p>For more information about the <code>pulsarctl namespaces set-retention options</code> command, including flags, descriptions, default values, and shorthands, see <a href="https://docs.streamnative.io/pulsarctl/v2.7.0.6/#-em-set-retention-em-">here</a>.</p>
+<p>关于 <code>pulsar-admin namespaces set-offload-threshold options</code> 命令的更多信息,包括标志、描述、默认值和速记方法,参见<a href="https://docs.streamnative.io/pulsarctl/v2.7.0.6/#-em-set-retention-em-">这里</a>。</p>
 </blockquote></li>
-<li><p>Produce data using pulsar-client.</p>
+<li><p>使用 pulsar-client 生成数据。</p>
 <pre><code class="hljs">./bin/pulsar-client produce -m <span class="hljs-string">"Hello FileSystem Offloader"</span> -n <span class="hljs-number">1000</span> <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre></li>
-<li><p>The offloading operation starts after a ledger rollover is triggered. To ensure offload data successfully, it is recommended that you wait until several ledger rollovers are triggered. In this case, you might need to wait for a second. You can check the ledger status using pulsarctl.</p>
+<li><p>卸载操作在触发 ledger 切换后开始。 为了确保卸载数据成功,建议您等待多个 ledger 切换被触发。 在这种情况下,可能需要等待一秒钟。 您可以使用 pulsarctl 检查 ledger 状态。</p>
 <pre><code class="hljs">./bin/pulsarctl topics internal-stats <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre>
 <p><strong>输出</strong></p>
-<p>The data of the ledger 696 is not offloaded.</p>
+<p>ledger 696 的数据未卸载。</p>
 <pre><code class="hljs">{
 <span class="hljs-attr">"version"</span>: <span class="hljs-number">1</span>,
 <span class="hljs-attr">"creationDate"</span>: <span class="hljs-string">"2020-06-16T21:46:25.807+08:00"</span>,
@@ -303,14 +303,14 @@ Reason: <span class="hljs-builtin-name">Error</span> offloading: org.apache.book
 <span class="hljs-attr">"cursors"</span>: {}
 }
 </code></pre></li>
-<li><p>Wait a second and send more messages to the topic.</p>
+<li><p>请稍等,然后向 topic 发送更多消息。</p>
 <pre><code class="hljs">./bin/pulsar-client produce -m <span class="hljs-string">"Hello FileSystem Offloader"</span> -n <span class="hljs-number">1000</span> <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre></li>
-<li><p>Check the ledger status using pulsarctl.</p>
+<li><p>使用 pulsarctl 检查 ledger 状态。</p>
 <pre><code class="hljs">./bin/pulsarctl topics internal-stats <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre>
 <p><strong>输出</strong></p>
-<p>The ledger 696 is rollovered.</p>
+<p>ledger 696已经切换。</p>
 <pre><code class="hljs">{
 <span class="hljs-attr">"version"</span>: <span class="hljs-number">2</span>,
 <span class="hljs-attr">"creationDate"</span>: <span class="hljs-string">"2020-06-16T21:46:25.807+08:00"</span>,
@@ -330,19 +330,19 @@ Reason: <span class="hljs-builtin-name">Error</span> offloading: org.apache.book
 <span class="hljs-attr">"cursors"</span>: {}
 }
 </code></pre></li>
-<li><p>Trigger the offloading operation manually using pulsarctl.</p>
+<li><p>使用 pulsarctl 手动触发卸载操作。</p>
 <pre><code class="hljs">./bin/pulsarctl topic offload -s <span class="hljs-number">0</span> <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre>
 <p><strong>输出</strong></p>
-<p>Data in ledgers before the ledge 697 is offloaded.</p>
+<p>ledger 中的数据先于 ledge 697 已卸载。</p>
 <pre><code class="hljs"><span class="hljs-comment"># offload info, the ledgers before 697 will be offloaded</span>
 Offload triggered <span class="hljs-keyword">for</span> persistent:<span class="hljs-regexp">//</span>public<span class="hljs-regexp">/default/</span>fs-test3 <span class="hljs-keyword">for</span> messages before <span class="hljs-number">697</span>:<span class="hljs-number">0</span>:-<span class="hljs-number">1</span>
 </code></pre></li>
-<li><p>Check the ledger status using pulsarctl.</p>
+<li><p>使用 pulsarctl 检查 ledger 状态。</p>
 <pre><code class="hljs">./bin/pulsarctl topic <span class="hljs-type">internal</span>-<span class="hljs-keyword">info</span> <span class="hljs-built_in">public</span>/<span class="hljs-keyword">default</span>/fs-test
 </code></pre>
 <p><strong>输出</strong></p>
-<p>The data of the ledger 696 is offloaded.</p>
+<p>ledger 696 的数据已卸载。</p>
 <pre><code class="hljs">{
 <span class="hljs-attr">"version"</span>: <span class="hljs-number">4</span>,
 <span class="hljs-attr">"creationDate"</span>: <span class="hljs-string">"2020-06-16T21:46:25.807+08:00"</span>,
@@ -362,10 +362,10 @@ Offload triggered <span class="hljs-keyword">for</span> persistent:<span class="
 <span class="hljs-attr">"cursors"</span>: {}
 }
 </code></pre>
-<p>And the <strong>Capacity Used</strong> is changed from 4 KB to 116.46 KB.</p>
+<p>并且 <strong>所用容量</strong> 已经从 4 KB 变成 116.46 KB。</p>
 <p><img src="/docs/assets/FileSystem-8.png" alt=""></p></li>
 </ol>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/next/tiered-storage-gcs"><span class="arrow-prev">← </span><span>GCS offloader</span></a><a class="docs-next button" href="/docs/zh-CN/next/tiered-storage-azure"><span class="function-name-prevnext">Azure BlobStore offloader</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#安装">安装</a><ul class="toc-headings"><li><a [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/next/tiered-storage-gcs"><span class="arrow-prev">← </span><span>GCS offloader</span></a><a class="docs-next button" href="/docs/zh-CN/next/tiered-storage-azure"><span class="function-name-prevnext">Azure BlobStore offloader</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#安装">安装</a><ul class="toc-headings"><li><a [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/next/tiered-storage-filesystem/index.html b/content/docs/zh-CN/next/tiered-storage-filesystem/index.html
index 05463bd..f3e8886 100644
--- a/content/docs/zh-CN/next/tiered-storage-filesystem/index.html
+++ b/content/docs/zh-CN/next/tiered-storage-filesystem/index.html
@@ -143,27 +143,27 @@ ls offloaders
 </ul>
 <h3><a class="anchor" aria-hidden="true" id="自动运行-filesystem-offloader"></a><a href="#自动运行-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c [...]
 <p>您可以将命名空间策略配置为在达到阈值后自动卸载数据。 该阈值基于一个 topic 在 Pulsar 集群的数据存储大小而定。 一旦 topic 到达阈值,就自动触发卸载操作。</p>
-<p>Threshold value|Action |---|--- | &gt; 0 | It triggers the offloading operation if the topic storage reaches its threshold. = 0| 它使 broker 竭尽全力地 offload 数据。 &lt; 0 |It disables automatic offloading operation.</p>
-<p>Automatic offload runs when a new segment is added to a topic log. If you set the threshold on a namespace, but few messages are being produced to the topic, the filesystem offloader does not work until the current segment is full.</p>
-<p>You can configure the threshold using CLI tools, such as pulsar-admin.</p>
+<p>阈值|动作 |---|--- | &gt; 0 | 如果 topic 存储达到其阈值,它就会触发卸载操作。 = 0| 它使 broker 竭尽全力地 offload 数据。 &lt; 0 | 它将禁用自动卸载操作。</p>
+<p>Automatic offload runs when a new segment is added to a topic log. 如果在命名空间上设置了阈值,但向该 topic 生产的消息很少,filesystem offloader 将会停止工作,直至当前 segment 达到饱和。</p>
+<p>通过命令行工具(CLI)可以设置阈值大小,比如 pulsar-admin。</p>
 <h4><a class="anchor" aria-hidden="true" id="示例"></a><a href="#示例" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c [...]
-<p>This example sets the filesystem offloader threshold to 10 MB using pulsar-admin.</p>
+<p>该示例使用 pulsar-admin 将 filesystem offloader 的阈值大小设置为 10 MB。</p>
 <pre><code class="hljs css language-bash">pulsar-admin namespaces <span class="hljs-built_in">set</span>-offload-threshold --size 10M my-tenant/my-namespace
 </code></pre>
 <blockquote>
 <h4><a class="anchor" aria-hidden="true" id="提示"></a><a href="#提示" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c [...]
 <p>关于 <code>pulsar-admin namespaces set-offload-threshold options</code> 命令的更多信息,包括标志、描述、默认值和速记方法,见<a href="/docs/zh-CN/next/pulsar-admin#set-offload-threshold">这里</a>。</p>
 </blockquote>
-<h3><a class="anchor" aria-hidden="true" id="run-filesystem-offloader-manually"></a><a href="#run-filesystem-offloader-manually" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S1 [...]
-<p>For individual topics, you can trigger the filesystem offloader manually using one of the following methods:</p>
+<h3><a class="anchor" aria-hidden="true" id="手动运行-filesystem-offloader"></a><a href="#手动运行-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c [...]
+<p>对于每一个 topic,使用下列方法之一可以手动触发 filesystem offloader:</p>
 <ul>
-<li><p>Use the REST endpoint.</p></li>
+<li><p>使用 REST 端点。</p></li>
 <li><p>使用命令行工具(例如 pulsar-admin)。</p></li>
 </ul>
-<p>To manually trigger the filesystem offloader via CLI tools, you need to specify the maximum amount of data (threshold) that should be retained on a Pulsar cluster for a topic. 如果 Pulsar 集群上 topic 的数据大小超过了这个阈值,那么该 topic 下的 segment 就会被陆续卸载到 filesystem 上,直到不再超过这个阈值。 优先卸载旧的 segment。</p>
+<p>要想用命令行工具触发 filesystem offloader,需要指定一个 topic 应该保留在 Pulsar 集群中的最大数据量(阈值)。 如果 Pulsar 集群上 topic 的数据大小超过了这个阈值,那么该 topic 下的 segment 就会被陆续卸载到 filesystem 上,直到不再超过这个阈值。 优先卸载旧的 segment。</p>
 <h4><a class="anchor" aria-hidden="true" id="示例-1"></a><a href="#示例-1" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
 <ul>
-<li><p>This example manually run the filesystem offloader using pulsar-admin.</p>
+<li><p>此示例使用 pulsar-admin 手动运行 filesystem offloader。</p>
 <pre><code class="hljs css language-bash">pulsar-admin topics offload --size-threshold 10M persistent://my-tenant/my-namespace/topic1
 </code></pre>
 <p><strong>输出</strong></p>
@@ -200,96 +200,96 @@ Reason: <span class="hljs-builtin-name">Error</span> offloading: org.apache.book
 </blockquote></li>
 </ul>
 <h2><a class="anchor" aria-hidden="true" id="教程"></a><a href="#教程" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c [...]
-<p>This section provides step-by-step instructions on how to use the filesystem offloader to move data from Pulsar to Hadoop Distributed File System (HDFS) or Network File system (NFS).</p>
-<pre><code class="hljs">&lt;div class=&quot;tabs&quot;&gt;&lt;div class=&quot;nav-tabs&quot;&gt;&lt;div id=&quot;tab-group-3582-tab-3583&quot; class=&quot;nav-link active&quot; data-group=&quot;group_3582&quot; data-tab=&quot;tab-group-3582-content-3583&quot;&gt;HDFS&lt;/div&gt;&lt;div id=&quot;tab-group-3582-tab-3584&quot; class=&quot;nav-link&quot; data-group=&quot;group_3582&quot; data-tab=&quot;tab-group-3582-content-3584&quot;&gt;NFS&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;tab-co [...]
+<p>本节提供有关如何使用  filesystem offloader  将数据从 Pulsar 移动到 Hadoop 分布式文件系统(HDFS)或网络文件系统(NFS)的分步说明。</p>
+<pre><code class="hljs">&lt;div class=&quot;tabs&quot;&gt;&lt;div class=&quot;nav-tabs&quot;&gt;&lt;div id=&quot;tab-group-3582-tab-3583&quot; class=&quot;nav-link active&quot; data-group=&quot;group_3582&quot; data-tab=&quot;tab-group-3582-content-3583&quot;&gt;HDFS&lt;/div&gt;&lt;div id=&quot;tab-group-3582-tab-3584&quot; class=&quot;nav-link&quot; data-group=&quot;group_3582&quot; data-tab=&quot;tab-group-3582-content-3584&quot;&gt;NFS&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;tab-co [...]
 </code></pre>
-<p><h3><a class="anchor" aria-hidden="true" id="step-1-prepare-the-hdfs-environment"></a><a href="#step-1-prepare-the-hdfs-environment" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22  [...]
-<p>This tutorial sets up a Hadoop single node cluster and uses Hadoop 3.2.1.</p>
+<p><h3><a class="anchor" aria-hidden="true" id="第-1-步准备-hdfs-环境"></a><a href="#第-1-步准备-hdfs-环境" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2 [...]
+<p>本教程使用 Hadoop 3.2.1设置一个 Hadoop 单个节点集群。</p>
 <blockquote>
 <p><strong>提示</strong></p>
-<p>For details about how to set up a Hadoop single node cluster, see <a href="https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html">here</a>.</p>
+<p>有关如何设置 Hadoop 单节点集群的详细信息,请参见<a href="https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html">此处</a>。</p>
 </blockquote>
 <ol>
-<li>Download and uncompress Hadoop 3.2.1.</li>
+<li>下载并解压缩 Hadoop 3.2.1。</li>
 </ol>
 <pre><code class="hljs">wget <span class="hljs-symbol">https:</span>/<span class="hljs-regexp">/mirrors.bfsu.edu.cn/apache</span><span class="hljs-regexp">/hadoop/common</span><span class="hljs-regexp">/hadoop-3.2.1/hadoop</span><span class="hljs-number">-3.2</span>.<span class="hljs-number">1</span>.tar.gz  <br /><br />tar -zxvf hadoop<span class="hljs-number">-3.2</span>.<span class="hljs-number">1</span>.tar.gz -C <span class="hljs-variable">$HADOOP_HOME</span><br /></code></pre>    
 <ol start="2">
-<li>Configure Hadoop.</li>
+<li>配置 Hadoop。</li>
 </ol>
 <pre><code class="hljs"><span class="hljs-meta"># $HADOOP_HOME/etc/hadoop/core-site.xml</span><br /><span class="hljs-params">&lt;configuration&gt;</span><br />    <span class="hljs-params">&lt;property&gt;</span><br />        <span class="hljs-params">&lt;name&gt;</span>fs.defaultFS<span class="hljs-params">&lt;/name&gt;</span><br />        <span class="hljs-params">&lt;value&gt;</span>hdfs:<span class="hljs-comment">//localhost:9000&lt;/value&gt;</span><br />    <span class="hljs-param [...]
 <ol start="3">
-<li>Set passphraseless ssh.</li>
+<li>设置无密码 ssh。</li>
 </ol>
-<pre><code class="hljs"><span class="hljs-comment"># Now check that you can ssh to the localhost without a passphrase:</span><br /><span class="hljs-variable">$ </span>ssh localhost<br /><span class="hljs-comment"># If you cannot ssh to localhost without a passphrase, execute the following commands</span><br /><span class="hljs-variable">$ </span>ssh-keygen -t rsa -P <span class="hljs-string">''</span> -f ~<span class="hljs-regexp">/.ssh/id</span>_rsa<br /><span class="hljs-variable">$ < [...]
+<pre><code class="hljs"><span class="hljs-comment"># 现在检查无需密码是否可以使用 ssh 连接到 localhost:</span><br /><span class="hljs-variable">$ </span>ssh localhost<br /><span class="hljs-comment"># 如果在无密码的情况下无法 ssh 连接到 localhost,请执行以下命令</span><br /><span class="hljs-variable">$ </span>ssh-keygen -t rsa -P <span class="hljs-string">''</span> -f ~<span class="hljs-regexp">/.ssh/id</span>_rsa<br /><span class="hljs-variable">$ </span>cat ~<span class="hljs-regexp">/.ssh/id</span>_rsa.pub &gt;&gt; ~<span  [...]
 <ol start="4">
-<li>Start HDFS.</li>
+<li>启动 HDFS。</li>
 </ol>
-<pre><code class="hljs"><span class="hljs-comment"># don't execute this command repeatedly, repeat execute will cauld the clusterId of the datanode is not consistent with namenode</span><br /><span class="hljs-variable">$HADOOP_HOME</span><span class="hljs-regexp">/bin/</span>hadoop namenode -format<br /><span class="hljs-variable">$HADOOP_HOME</span><span class="hljs-regexp">/sbin/</span>start-dfs.sh<br /></code></pre>    
+<pre><code class="hljs"><span class="hljs-comment"># 不重复执行此命令, 重复执行会捕获数据集群标识符与命名方式</span><br /><span class="hljs-variable">$HADOOP_HOME</span><span class="hljs-regexp">/bin/</span>hadoop namenode -format<br /><span class="hljs-variable">$HADOOP_HOME</span><span class="hljs-regexp">/sbin/</span>start-dfs.sh<br /></code></pre>    
 <ol start="5">
-<li>Navigate to the <a href="http://localhost:9870/">HDFS website</a>.</li>
+<li>导航到 <a href="http://localhost:9870/">HDFS 网站</a>。</li>
 </ol>
-<p>You can see the <strong>Overview</strong> page.</p>
+<p>您可以查看 <strong>概述</strong> 页面。</p>
 <p><img src="/docs/assets/FileSystem-1.png" alt=""></p>
 <ol>
-<li><p>At the top navigation bar, click <strong>Datanodes</strong> to check DataNode information.</p>
+<li><p>在顶部导航栏,单击 <strong>数据节点</strong> 查看数据节点信息。</p>
 <p><img src="/docs/assets/FileSystem-2.png" alt=""></p></li>
-<li><p>Click <strong>HTTP Address</strong> to get more detailed information about localhost:9866.</p>
-<p>As can be seen below, the size of <strong>Capacity Used</strong> is 4 KB, which is the initial value.</p>
+<li><p>单击 <strong>HTTP 地址</strong> 获取更多关于 localhost:9866 的详细信息。</p>
+<p>如下文所示, <strong>所用容量</strong> 的大小是 4 KB,它是初始值。</p>
 <p><img src="/docs/assets/FileSystem-3.png" alt=""></p></li>
 </ol>
-<h3><a class="anchor" aria-hidden="true" id="step-2-install-the-filesystem-offloader"></a><a href="#step-2-install-the-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2  [...]
-<p>For details, see <a href="#installation">installation</a>.</p>
-<h3><a class="anchor" aria-hidden="true" id="step-3-configure-the-filesystem-offloader"></a><a href="#step-3-configure-the-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1  [...]
-<p>As indicated in the <a href="#configuration">configuration</a> section, you need to configure some properties for the filesystem offloader driver before using it. This tutorial assumes that you have configured the filesystem offloader driver as below and run Pulsar in <strong>standalone</strong> mode.</p>
-<p>Set the following configurations in the <code>conf/standalone.conf</code> file.</p>
+<h3><a class="anchor" aria-hidden="true" id="第-2-步-安装-filesystem-offloader"></a><a href="#第-2-步-安装-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
+<p>更多详细信息,请参阅 <a href="#installation">安装</a>。</p>
+<h3><a class="anchor" aria-hidden="true" id="第-3-步-配置-filesystem-offloader"></a><a href="#第-3-步-配置-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
+<p>正如 <a href="#configuration">配置</a> 部分所指明的那样,需要先配置  filesystem offloader 驱动程序的一些属性,然后才能使用。 本教程假设您已按以下方式配置  filesystem offloader 驱动程序,并在<strong>独立</strong>模式下运行 Pulsar。</p>
+<p>在 <code>conf/standalone.conf</code> 文件中设置以下配置。</p>
 <pre><code class="hljs css language-conf"><span class="hljs-attr">managedLedgerOffloadDriver</span>=filesystem<br /><span class="hljs-attr">fileSystemURI</span>=hdfs://<span class="hljs-number">127.0</span>.<span class="hljs-number">0.1</span>:<span class="hljs-number">9000</span><br /><span class="hljs-attr">fileSystemProfilePath</span>=../conf/filesystem_<span class="hljs-literal">off</span>load_core_site.xml<br /></code></pre>    
 <blockquote>
 <p><strong>Note</strong></p>
-<p>For testing purposes, you can set the following two configurations to speed up ledger rollover, but it is not recommended that you set them in the production environment.</p>
+<p>为测试目的,您可以设置以下两个配置来加速 ledger 切换, 但不建议在生产环境中设置它们。</p>
 </blockquote>
 <pre><code class="hljs"><span class="hljs-attr">managedLedgerMinLedgerRolloverTimeMinutes</span>=<span class="hljs-number">1</span><br /><span class="hljs-attr">managedLedgerMaxEntriesPerLedger</span>=<span class="hljs-number">100</span><br /></code></pre>    
 </span></div></div><div id="tab-group-3582-content-3584" class="tab-pane" data-group="group_3582" tabindex="-1"><div><span><blockquote>
 <p><strong>Note</strong></p>
-<p>In this section, it is assumed that you have enabled NFS service and set the shared path of your NFS service. In this section, <code>/Users/test</code> is used as the shared path of NFS service.</p>
+<p>在本节中,假定您已启用 NFS 服务并设置 NFS 服务的共享路径。 在本节中, <code>/Users/test</code> 被用作 NFS 服务的共享路径。</p>
 </blockquote>
-<p>To offload data to NFS, follow these steps.</p>
-<h3><a class="anchor" aria-hidden="true" id="step-1-install-the-filesystem-offloader"></a><a href="#step-1-install-the-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2  [...]
-<p>For details, see <a href="#installation">installation</a>.</p>
-<h3><a class="anchor" aria-hidden="true" id="step-2-mont-your-nfs-to-your-local-filesystem"></a><a href="#step-2-mont-your-nfs-to-your-local-filesystem" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h- [...]
-<p>This example mounts mounts <em>/Users/pulsar_nfs</em> to <em>/Users/test</em>.</p>
+<p>要将数据卸载到 NFS,请执行以下步骤。</p>
+<h3><a class="anchor" aria-hidden="true" id="第-1-步-安装-filesystem-offloader"></a><a href="#第-1-步-安装-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
+<p>更多详细信息,请参阅 <a href="#installation">安装</a>。</p>
+<h3><a class="anchor" aria-hidden="true" id="第-2-步将-nfs-置于本地文件系统"></a><a href="#第-2-步将-nfs-置于本地文件系统" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.2 [...]
+<p>此示例将挂载 <em>/Users/pulsar_nfs</em> 到 <em>/Users/test</em>。</p>
 <pre><code class="hljs">mount -e <span class="hljs-number">192.168</span>.0.<span class="hljs-number">103</span><span class="hljs-symbol">:/Users/test/Users/pulsar_nfs</span><br /></code></pre>    
-<h3><a class="anchor" aria-hidden="true" id="step-3-configure-the-filesystem-offloader-driver"></a><a href="#step-3-configure-the-filesystem-offloader-driver" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9z [...]
-<p>As indicated in the <a href="#configuration">configuration</a> section, you need to configure some properties for the filesystem offloader driver before using it. This tutorial assumes that you have configured the filesystem offloader driver as below and run Pulsar in <strong>standalone</strong> mode.</p>
+<h3><a class="anchor" aria-hidden="true" id="第-3-步-配置-filesystem-offloader-驱动程序"></a><a href="#第-3-步-配置-filesystem-offloader-驱动程序" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5 [...]
+<p>正如 <a href="#configuration">配置</a> 部分所指明的那样,需要先配置  filesystem offloader 驱动程序的一些属性,然后才能使用。 本教程假设您已按以下方式配置  filesystem offloader 驱动程序,并在<strong>独立</strong>模式下运行 Pulsar。</p>
 <ol>
-<li>Set the following configurations in the <code>conf/standalone.conf</code> file.</li>
+<li>在 <code>conf/standalone.conf</code> 文件中设置以下配置。</li>
 </ol>
 <pre><code class="hljs css language-conf"><span class="hljs-attr">managedLedgerOffloadDriver</span>=filesystem<br /><span class="hljs-attr">fileSystemProfilePath</span>=../conf/filesystem_<span class="hljs-literal">off</span>load_core_site.xml<br /></code></pre>    
 <ol start="2">
-<li>Modify the <em>filesystem_offload_core_site.xml</em> as follows.</li>
+<li>修改 <em>filesystem_offload_core_site.xml</em>,如下所示。</li>
 </ol>
 <pre><code class="hljs"><span class="hljs-tag">&lt;<span class="hljs-name">property</span>&gt;</span><br />    <span class="hljs-tag">&lt;<span class="hljs-name">name</span>&gt;</span>fs.defaultFS<span class="hljs-tag">&lt;/<span class="hljs-name">name</span>&gt;</span><br />    <span class="hljs-tag">&lt;<span class="hljs-name">value</span>&gt;</span>file:///<span class="hljs-tag">&lt;/<span class="hljs-name">value</span>&gt;</span><br /><span class="hljs-tag">&lt;/<span class="hljs-nam [...]
 </span></div></div></div></div>
-<h3><a class="anchor" aria-hidden="true" id="step-4-offload-data-from-bookkeeper-to-filesystem"></a><a href="#step-4-offload-data-from-bookkeeper-to-filesystem" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4  [...]
-<p>Execute the following commands in the repository where you download Pulsar tarball. For example, <code>~/path/to/apache-pulsar-2.5.1</code>.</p>
+<h3><a class="anchor" aria-hidden="true" id="第-4-步将数据从-bookkeeper-卸载到文件系统"></a><a href="#第-4-步将数据从-bookkeeper-卸载到文件系统" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 [...]
+<p>在下载 Pulsar tar 包的仓库中执行以下命令。 例如, <code>~/path/to/apache-pulsar-2.5.1</code>。</p>
 <ol>
 <li><p>启动 Pulsar 单机模式。</p>
 <pre><code class="hljs">./bin/pulsar standalone -a <span class="hljs-number">127.0</span><span class="hljs-number">.0</span><span class="hljs-number">.1</span>
 </code></pre></li>
-<li><p>To ensure the data generated is not deleted immediately, it is recommended to set the <a href="https://pulsar.apache.org/docs/en/next/cookbooks-retention-expiry/#retention-policies">retention policy</a>, which can be either a <strong>size</strong> limit or a <strong>time</strong> limit. The larger value you set for the retention policy, the longer the data can be retained.</p>
+<li><p>为了确保生成的数据不会立即被删除,建议设置 <a href="https://pulsar.apache.org/docs/en/next/cookbooks-retention-expiry/#retention-policies">保留策略</a>, 可以是 <strong>大小</strong> 限制或 <strong>时间</strong> 限制。 为保留策略设定的值越大,数据保留的时间越长。</p>
 <pre><code class="hljs">./<span class="hljs-string">bin/</span><span class="hljs-string">pulsarctl </span><span class="hljs-string">namespaces </span><span class="hljs-built_in">set-retention</span> <span class="hljs-string">public/</span><span class="hljs-string">default </span><span class="hljs-built_in">--size</span> <span class="hljs-string">100M </span><span class="hljs-built_in">--time</span> <span class="hljs-string">2d
 </span></code></pre>
 <blockquote>
 <p><strong>提示</strong></p>
-<p>For more information about the <code>pulsarctl namespaces set-retention options</code> command, including flags, descriptions, default values, and shorthands, see <a href="https://docs.streamnative.io/pulsarctl/v2.7.0.6/#-em-set-retention-em-">here</a>.</p>
+<p>关于 <code>pulsar-admin namespaces set-offload-threshold options</code> 命令的更多信息,包括标志、描述、默认值和速记方法,参见<a href="https://docs.streamnative.io/pulsarctl/v2.7.0.6/#-em-set-retention-em-">这里</a>。</p>
 </blockquote></li>
-<li><p>Produce data using pulsar-client.</p>
+<li><p>使用 pulsar-client 生成数据。</p>
 <pre><code class="hljs">./bin/pulsar-client produce -m <span class="hljs-string">"Hello FileSystem Offloader"</span> -n <span class="hljs-number">1000</span> <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre></li>
-<li><p>The offloading operation starts after a ledger rollover is triggered. To ensure offload data successfully, it is recommended that you wait until several ledger rollovers are triggered. In this case, you might need to wait for a second. You can check the ledger status using pulsarctl.</p>
+<li><p>卸载操作在触发 ledger 切换后开始。 为了确保卸载数据成功,建议您等待多个 ledger 切换被触发。 在这种情况下,可能需要等待一秒钟。 您可以使用 pulsarctl 检查 ledger 状态。</p>
 <pre><code class="hljs">./bin/pulsarctl topics internal-stats <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre>
 <p><strong>输出</strong></p>
-<p>The data of the ledger 696 is not offloaded.</p>
+<p>ledger 696 的数据未卸载。</p>
 <pre><code class="hljs">{
 <span class="hljs-attr">"version"</span>: <span class="hljs-number">1</span>,
 <span class="hljs-attr">"creationDate"</span>: <span class="hljs-string">"2020-06-16T21:46:25.807+08:00"</span>,
@@ -303,14 +303,14 @@ Reason: <span class="hljs-builtin-name">Error</span> offloading: org.apache.book
 <span class="hljs-attr">"cursors"</span>: {}
 }
 </code></pre></li>
-<li><p>Wait a second and send more messages to the topic.</p>
+<li><p>请稍等,然后向 topic 发送更多消息。</p>
 <pre><code class="hljs">./bin/pulsar-client produce -m <span class="hljs-string">"Hello FileSystem Offloader"</span> -n <span class="hljs-number">1000</span> <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre></li>
-<li><p>Check the ledger status using pulsarctl.</p>
+<li><p>使用 pulsarctl 检查 ledger 状态。</p>
 <pre><code class="hljs">./bin/pulsarctl topics internal-stats <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre>
 <p><strong>输出</strong></p>
-<p>The ledger 696 is rollovered.</p>
+<p>ledger 696已经切换。</p>
 <pre><code class="hljs">{
 <span class="hljs-attr">"version"</span>: <span class="hljs-number">2</span>,
 <span class="hljs-attr">"creationDate"</span>: <span class="hljs-string">"2020-06-16T21:46:25.807+08:00"</span>,
@@ -330,19 +330,19 @@ Reason: <span class="hljs-builtin-name">Error</span> offloading: org.apache.book
 <span class="hljs-attr">"cursors"</span>: {}
 }
 </code></pre></li>
-<li><p>Trigger the offloading operation manually using pulsarctl.</p>
+<li><p>使用 pulsarctl 手动触发卸载操作。</p>
 <pre><code class="hljs">./bin/pulsarctl topic offload -s <span class="hljs-number">0</span> <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre>
 <p><strong>输出</strong></p>
-<p>Data in ledgers before the ledge 697 is offloaded.</p>
+<p>ledger 中的数据先于 ledge 697 已卸载。</p>
 <pre><code class="hljs"><span class="hljs-comment"># offload info, the ledgers before 697 will be offloaded</span>
 Offload triggered <span class="hljs-keyword">for</span> persistent:<span class="hljs-regexp">//</span>public<span class="hljs-regexp">/default/</span>fs-test3 <span class="hljs-keyword">for</span> messages before <span class="hljs-number">697</span>:<span class="hljs-number">0</span>:-<span class="hljs-number">1</span>
 </code></pre></li>
-<li><p>Check the ledger status using pulsarctl.</p>
+<li><p>使用 pulsarctl 检查 ledger 状态。</p>
 <pre><code class="hljs">./bin/pulsarctl topic <span class="hljs-type">internal</span>-<span class="hljs-keyword">info</span> <span class="hljs-built_in">public</span>/<span class="hljs-keyword">default</span>/fs-test
 </code></pre>
 <p><strong>输出</strong></p>
-<p>The data of the ledger 696 is offloaded.</p>
+<p>ledger 696 的数据已卸载。</p>
 <pre><code class="hljs">{
 <span class="hljs-attr">"version"</span>: <span class="hljs-number">4</span>,
 <span class="hljs-attr">"creationDate"</span>: <span class="hljs-string">"2020-06-16T21:46:25.807+08:00"</span>,
@@ -362,10 +362,10 @@ Offload triggered <span class="hljs-keyword">for</span> persistent:<span class="
 <span class="hljs-attr">"cursors"</span>: {}
 }
 </code></pre>
-<p>And the <strong>Capacity Used</strong> is changed from 4 KB to 116.46 KB.</p>
+<p>并且 <strong>所用容量</strong> 已经从 4 KB 变成 116.46 KB。</p>
 <p><img src="/docs/assets/FileSystem-8.png" alt=""></p></li>
 </ol>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/next/tiered-storage-gcs"><span class="arrow-prev">← </span><span>GCS offloader</span></a><a class="docs-next button" href="/docs/zh-CN/next/tiered-storage-azure"><span class="function-name-prevnext">Azure BlobStore offloader</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#安装">安装</a><ul class="toc-headings"><li><a [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/next/tiered-storage-gcs"><span class="arrow-prev">← </span><span>GCS offloader</span></a><a class="docs-next button" href="/docs/zh-CN/next/tiered-storage-azure"><span class="function-name-prevnext">Azure BlobStore offloader</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#安装">安装</a><ul class="toc-headings"><li><a [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/tiered-storage-filesystem.html b/content/docs/zh-CN/tiered-storage-filesystem.html
index b2e1726..7de3c4b 100644
--- a/content/docs/zh-CN/tiered-storage-filesystem.html
+++ b/content/docs/zh-CN/tiered-storage-filesystem.html
@@ -142,27 +142,27 @@ ls offloaders
 </ul>
 <h3><a class="anchor" aria-hidden="true" id="自动运行-filesystem-offloader"></a><a href="#自动运行-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c [...]
 <p>您可以将命名空间策略配置为在达到阈值后自动卸载数据。 该阈值基于一个 topic 在 Pulsar 集群的数据存储大小而定。 一旦 topic 到达阈值,就自动触发卸载操作。</p>
-<p>Threshold value|Action |---|--- | &gt; 0 | It triggers the offloading operation if the topic storage reaches its threshold. = 0| 它使 broker 竭尽全力地 offload 数据。 &lt; 0 |It disables automatic offloading operation.</p>
-<p>Automatic offload runs when a new segment is added to a topic log. If you set the threshold on a namespace, but few messages are being produced to the topic, the filesystem offloader does not work until the current segment is full.</p>
-<p>You can configure the threshold using CLI tools, such as pulsar-admin.</p>
+<p>阈值|动作 |---|--- | &gt; 0 | 如果 topic 存储达到其阈值,它就会触发卸载操作。 = 0| 它使 broker 竭尽全力地 offload 数据。 &lt; 0 | 它将禁用自动卸载操作。</p>
+<p>Automatic offload runs when a new segment is added to a topic log. 如果在命名空间上设置了阈值,但向该 topic 生产的消息很少,filesystem offloader 将会停止工作,直至当前 segment 达到饱和。</p>
+<p>通过命令行工具(CLI)可以设置阈值大小,比如 pulsar-admin。</p>
 <h4><a class="anchor" aria-hidden="true" id="示例"></a><a href="#示例" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c [...]
-<p>This example sets the filesystem offloader threshold to 10 MB using pulsar-admin.</p>
+<p>该示例使用 pulsar-admin 将 filesystem offloader 的阈值大小设置为 10 MB。</p>
 <pre><code class="hljs css language-bash">pulsar-admin namespaces <span class="hljs-built_in">set</span>-offload-threshold --size 10M my-tenant/my-namespace
 </code></pre>
 <blockquote>
 <h4><a class="anchor" aria-hidden="true" id="提示"></a><a href="#提示" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c [...]
 <p>关于 <code>pulsar-admin namespaces set-offload-threshold options</code> 命令的更多信息,包括标志、描述、默认值和速记方法,见<a href="/docs/zh-CN/pulsar-admin#set-offload-threshold">这里</a>。</p>
 </blockquote>
-<h3><a class="anchor" aria-hidden="true" id="run-filesystem-offloader-manually"></a><a href="#run-filesystem-offloader-manually" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S1 [...]
-<p>For individual topics, you can trigger the filesystem offloader manually using one of the following methods:</p>
+<h3><a class="anchor" aria-hidden="true" id="手动运行-filesystem-offloader"></a><a href="#手动运行-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c [...]
+<p>对于每一个 topic,使用下列方法之一可以手动触发 filesystem offloader:</p>
 <ul>
-<li><p>Use the REST endpoint.</p></li>
+<li><p>使用 REST 端点。</p></li>
 <li><p>使用命令行工具(例如 pulsar-admin)。</p></li>
 </ul>
-<p>To manually trigger the filesystem offloader via CLI tools, you need to specify the maximum amount of data (threshold) that should be retained on a Pulsar cluster for a topic. 如果 Pulsar 集群上 topic 的数据大小超过了这个阈值,那么该 topic 下的 segment 就会被陆续卸载到 filesystem 上,直到不再超过这个阈值。 优先卸载旧的 segment。</p>
+<p>要想用命令行工具触发 filesystem offloader,需要指定一个 topic 应该保留在 Pulsar 集群中的最大数据量(阈值)。 如果 Pulsar 集群上 topic 的数据大小超过了这个阈值,那么该 topic 下的 segment 就会被陆续卸载到 filesystem 上,直到不再超过这个阈值。 优先卸载旧的 segment。</p>
 <h4><a class="anchor" aria-hidden="true" id="示例-1"></a><a href="#示例-1" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
 <ul>
-<li><p>This example manually run the filesystem offloader using pulsar-admin.</p>
+<li><p>此示例使用 pulsar-admin 手动运行 filesystem offloader。</p>
 <pre><code class="hljs css language-bash">pulsar-admin topics offload --size-threshold 10M persistent://my-tenant/my-namespace/topic1
 </code></pre>
 <p><strong>输出</strong></p>
@@ -199,96 +199,96 @@ Reason: <span class="hljs-builtin-name">Error</span> offloading: org.apache.book
 </blockquote></li>
 </ul>
 <h2><a class="anchor" aria-hidden="true" id="教程"></a><a href="#教程" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c [...]
-<p>This section provides step-by-step instructions on how to use the filesystem offloader to move data from Pulsar to Hadoop Distributed File System (HDFS) or Network File system (NFS).</p>
-<pre><code class="hljs">&lt;div class=&quot;tabs&quot;&gt;&lt;div class=&quot;nav-tabs&quot;&gt;&lt;div id=&quot;tab-group-23043-tab-23044&quot; class=&quot;nav-link active&quot; data-group=&quot;group_23043&quot; data-tab=&quot;tab-group-23043-content-23044&quot;&gt;HDFS&lt;/div&gt;&lt;div id=&quot;tab-group-23043-tab-23045&quot; class=&quot;nav-link&quot; data-group=&quot;group_23043&quot; data-tab=&quot;tab-group-23043-content-23045&quot;&gt;NFS&lt;/div&gt;&lt;/div&gt;&lt;div class=&q [...]
+<p>本节提供有关如何使用  filesystem offloader  将数据从 Pulsar 移动到 Hadoop 分布式文件系统(HDFS)或网络文件系统(NFS)的分步说明。</p>
+<pre><code class="hljs">&lt;div class=&quot;tabs&quot;&gt;&lt;div class=&quot;nav-tabs&quot;&gt;&lt;div id=&quot;tab-group-23043-tab-23044&quot; class=&quot;nav-link active&quot; data-group=&quot;group_23043&quot; data-tab=&quot;tab-group-23043-content-23044&quot;&gt;HDFS&lt;/div&gt;&lt;div id=&quot;tab-group-23043-tab-23045&quot; class=&quot;nav-link&quot; data-group=&quot;group_23043&quot; data-tab=&quot;tab-group-23043-content-23045&quot;&gt;NFS&lt;/div&gt;&lt;/div&gt;&lt;div class=&q [...]
 </code></pre>
-<p><h3><a class="anchor" aria-hidden="true" id="step-1-prepare-the-hdfs-environment"></a><a href="#step-1-prepare-the-hdfs-environment" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22  [...]
-<p>This tutorial sets up a Hadoop single node cluster and uses Hadoop 3.2.1.</p>
+<p><h3><a class="anchor" aria-hidden="true" id="第-1-步准备-hdfs-环境"></a><a href="#第-1-步准备-hdfs-环境" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2 [...]
+<p>本教程使用 Hadoop 3.2.1设置一个 Hadoop 单个节点集群。</p>
 <blockquote>
 <p><strong>提示</strong></p>
-<p>For details about how to set up a Hadoop single node cluster, see <a href="https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html">here</a>.</p>
+<p>有关如何设置 Hadoop 单节点集群的详细信息,请参见<a href="https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html">此处</a>。</p>
 </blockquote>
 <ol>
-<li>Download and uncompress Hadoop 3.2.1.</li>
+<li>下载并解压缩 Hadoop 3.2.1。</li>
 </ol>
 <pre><code class="hljs">wget <span class="hljs-symbol">https:</span>/<span class="hljs-regexp">/mirrors.bfsu.edu.cn/apache</span><span class="hljs-regexp">/hadoop/common</span><span class="hljs-regexp">/hadoop-3.2.1/hadoop</span><span class="hljs-number">-3.2</span>.<span class="hljs-number">1</span>.tar.gz  <br /><br />tar -zxvf hadoop<span class="hljs-number">-3.2</span>.<span class="hljs-number">1</span>.tar.gz -C <span class="hljs-variable">$HADOOP_HOME</span><br /></code></pre>    
 <ol start="2">
-<li>Configure Hadoop.</li>
+<li>配置 Hadoop。</li>
 </ol>
 <pre><code class="hljs"><span class="hljs-meta"># $HADOOP_HOME/etc/hadoop/core-site.xml</span><br /><span class="hljs-params">&lt;configuration&gt;</span><br />    <span class="hljs-params">&lt;property&gt;</span><br />        <span class="hljs-params">&lt;name&gt;</span>fs.defaultFS<span class="hljs-params">&lt;/name&gt;</span><br />        <span class="hljs-params">&lt;value&gt;</span>hdfs:<span class="hljs-comment">//localhost:9000&lt;/value&gt;</span><br />    <span class="hljs-param [...]
 <ol start="3">
-<li>Set passphraseless ssh.</li>
+<li>设置无密码 ssh。</li>
 </ol>
-<pre><code class="hljs"><span class="hljs-comment"># Now check that you can ssh to the localhost without a passphrase:</span><br /><span class="hljs-variable">$ </span>ssh localhost<br /><span class="hljs-comment"># If you cannot ssh to localhost without a passphrase, execute the following commands</span><br /><span class="hljs-variable">$ </span>ssh-keygen -t rsa -P <span class="hljs-string">''</span> -f ~<span class="hljs-regexp">/.ssh/id</span>_rsa<br /><span class="hljs-variable">$ < [...]
+<pre><code class="hljs"><span class="hljs-comment"># 现在检查无需密码是否可以使用 ssh 连接到 localhost:</span><br /><span class="hljs-variable">$ </span>ssh localhost<br /><span class="hljs-comment"># 如果在无密码的情况下无法 ssh 连接到 localhost,请执行以下命令</span><br /><span class="hljs-variable">$ </span>ssh-keygen -t rsa -P <span class="hljs-string">''</span> -f ~<span class="hljs-regexp">/.ssh/id</span>_rsa<br /><span class="hljs-variable">$ </span>cat ~<span class="hljs-regexp">/.ssh/id</span>_rsa.pub &gt;&gt; ~<span  [...]
 <ol start="4">
-<li>Start HDFS.</li>
+<li>启动 HDFS。</li>
 </ol>
-<pre><code class="hljs"><span class="hljs-comment"># don't execute this command repeatedly, repeat execute will cauld the clusterId of the datanode is not consistent with namenode</span><br /><span class="hljs-variable">$HADOOP_HOME</span><span class="hljs-regexp">/bin/</span>hadoop namenode -format<br /><span class="hljs-variable">$HADOOP_HOME</span><span class="hljs-regexp">/sbin/</span>start-dfs.sh<br /></code></pre>    
+<pre><code class="hljs"><span class="hljs-comment"># 不重复执行此命令, 重复执行会捕获数据集群标识符与命名方式</span><br /><span class="hljs-variable">$HADOOP_HOME</span><span class="hljs-regexp">/bin/</span>hadoop namenode -format<br /><span class="hljs-variable">$HADOOP_HOME</span><span class="hljs-regexp">/sbin/</span>start-dfs.sh<br /></code></pre>    
 <ol start="5">
-<li>Navigate to the <a href="http://localhost:9870/">HDFS website</a>.</li>
+<li>导航到 <a href="http://localhost:9870/">HDFS 网站</a>。</li>
 </ol>
-<p>You can see the <strong>Overview</strong> page.</p>
+<p>您可以查看 <strong>概述</strong> 页面。</p>
 <p><img src="/docs/assets/FileSystem-1.png" alt=""></p>
 <ol>
-<li><p>At the top navigation bar, click <strong>Datanodes</strong> to check DataNode information.</p>
+<li><p>在顶部导航栏,单击 <strong>数据节点</strong> 查看数据节点信息。</p>
 <p><img src="/docs/assets/FileSystem-2.png" alt=""></p></li>
-<li><p>Click <strong>HTTP Address</strong> to get more detailed information about localhost:9866.</p>
-<p>As can be seen below, the size of <strong>Capacity Used</strong> is 4 KB, which is the initial value.</p>
+<li><p>单击 <strong>HTTP 地址</strong> 获取更多关于 localhost:9866 的详细信息。</p>
+<p>如下文所示, <strong>所用容量</strong> 的大小是 4 KB,它是初始值。</p>
 <p><img src="/docs/assets/FileSystem-3.png" alt=""></p></li>
 </ol>
-<h3><a class="anchor" aria-hidden="true" id="step-2-install-the-filesystem-offloader"></a><a href="#step-2-install-the-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2  [...]
-<p>For details, see <a href="#installation">installation</a>.</p>
-<h3><a class="anchor" aria-hidden="true" id="step-3-configure-the-filesystem-offloader"></a><a href="#step-3-configure-the-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1  [...]
-<p>As indicated in the <a href="#configuration">configuration</a> section, you need to configure some properties for the filesystem offloader driver before using it. This tutorial assumes that you have configured the filesystem offloader driver as below and run Pulsar in <strong>standalone</strong> mode.</p>
-<p>Set the following configurations in the <code>conf/standalone.conf</code> file.</p>
+<h3><a class="anchor" aria-hidden="true" id="第-2-步-安装-filesystem-offloader"></a><a href="#第-2-步-安装-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
+<p>更多详细信息,请参阅 <a href="#installation">安装</a>。</p>
+<h3><a class="anchor" aria-hidden="true" id="第-3-步-配置-filesystem-offloader"></a><a href="#第-3-步-配置-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
+<p>正如 <a href="#configuration">配置</a> 部分所指明的那样,需要先配置  filesystem offloader 驱动程序的一些属性,然后才能使用。 本教程假设您已按以下方式配置  filesystem offloader 驱动程序,并在<strong>独立</strong>模式下运行 Pulsar。</p>
+<p>在 <code>conf/standalone.conf</code> 文件中设置以下配置。</p>
 <pre><code class="hljs css language-conf"><span class="hljs-attr">managedLedgerOffloadDriver</span>=filesystem<br /><span class="hljs-attr">fileSystemURI</span>=hdfs://<span class="hljs-number">127.0</span>.<span class="hljs-number">0.1</span>:<span class="hljs-number">9000</span><br /><span class="hljs-attr">fileSystemProfilePath</span>=../conf/filesystem_<span class="hljs-literal">off</span>load_core_site.xml<br /></code></pre>    
 <blockquote>
 <p><strong>Note</strong></p>
-<p>For testing purposes, you can set the following two configurations to speed up ledger rollover, but it is not recommended that you set them in the production environment.</p>
+<p>为测试目的,您可以设置以下两个配置来加速 ledger 切换, 但不建议在生产环境中设置它们。</p>
 </blockquote>
 <pre><code class="hljs"><span class="hljs-attr">managedLedgerMinLedgerRolloverTimeMinutes</span>=<span class="hljs-number">1</span><br /><span class="hljs-attr">managedLedgerMaxEntriesPerLedger</span>=<span class="hljs-number">100</span><br /></code></pre>    
 </span></div></div><div id="tab-group-23043-content-23045" class="tab-pane" data-group="group_23043" tabindex="-1"><div><span><blockquote>
 <p><strong>Note</strong></p>
-<p>In this section, it is assumed that you have enabled NFS service and set the shared path of your NFS service. In this section, <code>/Users/test</code> is used as the shared path of NFS service.</p>
+<p>在本节中,假定您已启用 NFS 服务并设置 NFS 服务的共享路径。 在本节中, <code>/Users/test</code> 被用作 NFS 服务的共享路径。</p>
 </blockquote>
-<p>To offload data to NFS, follow these steps.</p>
-<h3><a class="anchor" aria-hidden="true" id="step-1-install-the-filesystem-offloader"></a><a href="#step-1-install-the-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2  [...]
-<p>For details, see <a href="#installation">installation</a>.</p>
-<h3><a class="anchor" aria-hidden="true" id="step-2-mont-your-nfs-to-your-local-filesystem"></a><a href="#step-2-mont-your-nfs-to-your-local-filesystem" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h- [...]
-<p>This example mounts mounts <em>/Users/pulsar_nfs</em> to <em>/Users/test</em>.</p>
+<p>要将数据卸载到 NFS,请执行以下步骤。</p>
+<h3><a class="anchor" aria-hidden="true" id="第-1-步-安装-filesystem-offloader"></a><a href="#第-1-步-安装-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
+<p>更多详细信息,请参阅 <a href="#installation">安装</a>。</p>
+<h3><a class="anchor" aria-hidden="true" id="第-2-步将-nfs-置于本地文件系统"></a><a href="#第-2-步将-nfs-置于本地文件系统" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.2 [...]
+<p>此示例将挂载 <em>/Users/pulsar_nfs</em> 到 <em>/Users/test</em>。</p>
 <pre><code class="hljs">mount -e <span class="hljs-number">192.168</span>.0.<span class="hljs-number">103</span><span class="hljs-symbol">:/Users/test/Users/pulsar_nfs</span><br /></code></pre>    
-<h3><a class="anchor" aria-hidden="true" id="step-3-configure-the-filesystem-offloader-driver"></a><a href="#step-3-configure-the-filesystem-offloader-driver" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9z [...]
-<p>As indicated in the <a href="#configuration">configuration</a> section, you need to configure some properties for the filesystem offloader driver before using it. This tutorial assumes that you have configured the filesystem offloader driver as below and run Pulsar in <strong>standalone</strong> mode.</p>
+<h3><a class="anchor" aria-hidden="true" id="第-3-步-配置-filesystem-offloader-驱动程序"></a><a href="#第-3-步-配置-filesystem-offloader-驱动程序" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5 [...]
+<p>正如 <a href="#configuration">配置</a> 部分所指明的那样,需要先配置  filesystem offloader 驱动程序的一些属性,然后才能使用。 本教程假设您已按以下方式配置  filesystem offloader 驱动程序,并在<strong>独立</strong>模式下运行 Pulsar。</p>
 <ol>
-<li>Set the following configurations in the <code>conf/standalone.conf</code> file.</li>
+<li>在 <code>conf/standalone.conf</code> 文件中设置以下配置。</li>
 </ol>
 <pre><code class="hljs css language-conf"><span class="hljs-attr">managedLedgerOffloadDriver</span>=filesystem<br /><span class="hljs-attr">fileSystemProfilePath</span>=../conf/filesystem_<span class="hljs-literal">off</span>load_core_site.xml<br /></code></pre>    
 <ol start="2">
-<li>Modify the <em>filesystem_offload_core_site.xml</em> as follows.</li>
+<li>修改 <em>filesystem_offload_core_site.xml</em>,如下所示。</li>
 </ol>
 <pre><code class="hljs"><span class="hljs-tag">&lt;<span class="hljs-name">property</span>&gt;</span><br />    <span class="hljs-tag">&lt;<span class="hljs-name">name</span>&gt;</span>fs.defaultFS<span class="hljs-tag">&lt;/<span class="hljs-name">name</span>&gt;</span><br />    <span class="hljs-tag">&lt;<span class="hljs-name">value</span>&gt;</span>file:///<span class="hljs-tag">&lt;/<span class="hljs-name">value</span>&gt;</span><br /><span class="hljs-tag">&lt;/<span class="hljs-nam [...]
 </span></div></div></div></div>
-<h3><a class="anchor" aria-hidden="true" id="step-4-offload-data-from-bookkeeper-to-filesystem"></a><a href="#step-4-offload-data-from-bookkeeper-to-filesystem" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4  [...]
-<p>Execute the following commands in the repository where you download Pulsar tarball. For example, <code>~/path/to/apache-pulsar-2.5.1</code>.</p>
+<h3><a class="anchor" aria-hidden="true" id="第-4-步将数据从-bookkeeper-卸载到文件系统"></a><a href="#第-4-步将数据从-bookkeeper-卸载到文件系统" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 [...]
+<p>在下载 Pulsar tar 包的仓库中执行以下命令。 例如, <code>~/path/to/apache-pulsar-2.5.1</code>。</p>
 <ol>
 <li><p>启动 Pulsar 单机模式。</p>
 <pre><code class="hljs">./bin/pulsar standalone -a <span class="hljs-number">127.0</span><span class="hljs-number">.0</span><span class="hljs-number">.1</span>
 </code></pre></li>
-<li><p>To ensure the data generated is not deleted immediately, it is recommended to set the <a href="https://pulsar.apache.org/docs/en/next/cookbooks-retention-expiry/#retention-policies">retention policy</a>, which can be either a <strong>size</strong> limit or a <strong>time</strong> limit. The larger value you set for the retention policy, the longer the data can be retained.</p>
+<li><p>为了确保生成的数据不会立即被删除,建议设置 <a href="https://pulsar.apache.org/docs/en/next/cookbooks-retention-expiry/#retention-policies">保留策略</a>, 可以是 <strong>大小</strong> 限制或 <strong>时间</strong> 限制。 为保留策略设定的值越大,数据保留的时间越长。</p>
 <pre><code class="hljs">./<span class="hljs-string">bin/</span><span class="hljs-string">pulsarctl </span><span class="hljs-string">namespaces </span><span class="hljs-built_in">set-retention</span> <span class="hljs-string">public/</span><span class="hljs-string">default </span><span class="hljs-built_in">--size</span> <span class="hljs-string">100M </span><span class="hljs-built_in">--time</span> <span class="hljs-string">2d
 </span></code></pre>
 <blockquote>
 <p><strong>提示</strong></p>
-<p>For more information about the <code>pulsarctl namespaces set-retention options</code> command, including flags, descriptions, default values, and shorthands, see <a href="https://docs.streamnative.io/pulsarctl/v2.7.0.6/#-em-set-retention-em-">here</a>.</p>
+<p>关于 <code>pulsar-admin namespaces set-offload-threshold options</code> 命令的更多信息,包括标志、描述、默认值和速记方法,参见<a href="https://docs.streamnative.io/pulsarctl/v2.7.0.6/#-em-set-retention-em-">这里</a>。</p>
 </blockquote></li>
-<li><p>Produce data using pulsar-client.</p>
+<li><p>使用 pulsar-client 生成数据。</p>
 <pre><code class="hljs">./bin/pulsar-client produce -m <span class="hljs-string">"Hello FileSystem Offloader"</span> -n <span class="hljs-number">1000</span> <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre></li>
-<li><p>The offloading operation starts after a ledger rollover is triggered. To ensure offload data successfully, it is recommended that you wait until several ledger rollovers are triggered. In this case, you might need to wait for a second. You can check the ledger status using pulsarctl.</p>
+<li><p>卸载操作在触发 ledger 切换后开始。 为了确保卸载数据成功,建议您等待多个 ledger 切换被触发。 在这种情况下,可能需要等待一秒钟。 您可以使用 pulsarctl 检查 ledger 状态。</p>
 <pre><code class="hljs">./bin/pulsarctl topics internal-stats <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre>
 <p><strong>输出</strong></p>
-<p>The data of the ledger 696 is not offloaded.</p>
+<p>ledger 696 的数据未卸载。</p>
 <pre><code class="hljs">{
 <span class="hljs-attr">"version"</span>: <span class="hljs-number">1</span>,
 <span class="hljs-attr">"creationDate"</span>: <span class="hljs-string">"2020-06-16T21:46:25.807+08:00"</span>,
@@ -302,14 +302,14 @@ Reason: <span class="hljs-builtin-name">Error</span> offloading: org.apache.book
 <span class="hljs-attr">"cursors"</span>: {}
 }
 </code></pre></li>
-<li><p>Wait a second and send more messages to the topic.</p>
+<li><p>请稍等,然后向 topic 发送更多消息。</p>
 <pre><code class="hljs">./bin/pulsar-client produce -m <span class="hljs-string">"Hello FileSystem Offloader"</span> -n <span class="hljs-number">1000</span> <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre></li>
-<li><p>Check the ledger status using pulsarctl.</p>
+<li><p>使用 pulsarctl 检查 ledger 状态。</p>
 <pre><code class="hljs">./bin/pulsarctl topics internal-stats <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre>
 <p><strong>输出</strong></p>
-<p>The ledger 696 is rollovered.</p>
+<p>ledger 696已经切换。</p>
 <pre><code class="hljs">{
 <span class="hljs-attr">"version"</span>: <span class="hljs-number">2</span>,
 <span class="hljs-attr">"creationDate"</span>: <span class="hljs-string">"2020-06-16T21:46:25.807+08:00"</span>,
@@ -329,19 +329,19 @@ Reason: <span class="hljs-builtin-name">Error</span> offloading: org.apache.book
 <span class="hljs-attr">"cursors"</span>: {}
 }
 </code></pre></li>
-<li><p>Trigger the offloading operation manually using pulsarctl.</p>
+<li><p>使用 pulsarctl 手动触发卸载操作。</p>
 <pre><code class="hljs">./bin/pulsarctl topic offload -s <span class="hljs-number">0</span> <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre>
 <p><strong>输出</strong></p>
-<p>Data in ledgers before the ledge 697 is offloaded.</p>
+<p>ledger 中的数据先于 ledge 697 已卸载。</p>
 <pre><code class="hljs"><span class="hljs-comment"># offload info, the ledgers before 697 will be offloaded</span>
 Offload triggered <span class="hljs-keyword">for</span> persistent:<span class="hljs-regexp">//</span>public<span class="hljs-regexp">/default/</span>fs-test3 <span class="hljs-keyword">for</span> messages before <span class="hljs-number">697</span>:<span class="hljs-number">0</span>:-<span class="hljs-number">1</span>
 </code></pre></li>
-<li><p>Check the ledger status using pulsarctl.</p>
+<li><p>使用 pulsarctl 检查 ledger 状态。</p>
 <pre><code class="hljs">./bin/pulsarctl topic <span class="hljs-type">internal</span>-<span class="hljs-keyword">info</span> <span class="hljs-built_in">public</span>/<span class="hljs-keyword">default</span>/fs-test
 </code></pre>
 <p><strong>输出</strong></p>
-<p>The data of the ledger 696 is offloaded.</p>
+<p>ledger 696 的数据已卸载。</p>
 <pre><code class="hljs">{
 <span class="hljs-attr">"version"</span>: <span class="hljs-number">4</span>,
 <span class="hljs-attr">"creationDate"</span>: <span class="hljs-string">"2020-06-16T21:46:25.807+08:00"</span>,
@@ -361,10 +361,10 @@ Offload triggered <span class="hljs-keyword">for</span> persistent:<span class="
 <span class="hljs-attr">"cursors"</span>: {}
 }
 </code></pre>
-<p>And the <strong>Capacity Used</strong> is changed from 4 KB to 116.46 KB.</p>
+<p>并且 <strong>所用容量</strong> 已经从 4 KB 变成 116.46 KB。</p>
 <p><img src="/docs/assets/FileSystem-8.png" alt=""></p></li>
 </ol>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/tiered-storage-gcs"><span class="arrow-prev">← </span><span>GCS offloader</span></a><a class="docs-next button" href="/docs/zh-CN/tiered-storage-azure"><span class="function-name-prevnext">Azure BlobStore offloader</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#安装">安装</a><ul class="toc-headings"><li><a href="#前提 [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/tiered-storage-gcs"><span class="arrow-prev">← </span><span>GCS offloader</span></a><a class="docs-next button" href="/docs/zh-CN/tiered-storage-azure"><span class="function-name-prevnext">Azure BlobStore offloader</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#安装">安装</a><ul class="toc-headings"><li><a href="#前提 [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/tiered-storage-filesystem/index.html b/content/docs/zh-CN/tiered-storage-filesystem/index.html
index b2e1726..7de3c4b 100644
--- a/content/docs/zh-CN/tiered-storage-filesystem/index.html
+++ b/content/docs/zh-CN/tiered-storage-filesystem/index.html
@@ -142,27 +142,27 @@ ls offloaders
 </ul>
 <h3><a class="anchor" aria-hidden="true" id="自动运行-filesystem-offloader"></a><a href="#自动运行-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c [...]
 <p>您可以将命名空间策略配置为在达到阈值后自动卸载数据。 该阈值基于一个 topic 在 Pulsar 集群的数据存储大小而定。 一旦 topic 到达阈值,就自动触发卸载操作。</p>
-<p>Threshold value|Action |---|--- | &gt; 0 | It triggers the offloading operation if the topic storage reaches its threshold. = 0| 它使 broker 竭尽全力地 offload 数据。 &lt; 0 |It disables automatic offloading operation.</p>
-<p>Automatic offload runs when a new segment is added to a topic log. If you set the threshold on a namespace, but few messages are being produced to the topic, the filesystem offloader does not work until the current segment is full.</p>
-<p>You can configure the threshold using CLI tools, such as pulsar-admin.</p>
+<p>阈值|动作 |---|--- | &gt; 0 | 如果 topic 存储达到其阈值,它就会触发卸载操作。 = 0| 它使 broker 竭尽全力地 offload 数据。 &lt; 0 | 它将禁用自动卸载操作。</p>
+<p>Automatic offload runs when a new segment is added to a topic log. 如果在命名空间上设置了阈值,但向该 topic 生产的消息很少,filesystem offloader 将会停止工作,直至当前 segment 达到饱和。</p>
+<p>通过命令行工具(CLI)可以设置阈值大小,比如 pulsar-admin。</p>
 <h4><a class="anchor" aria-hidden="true" id="示例"></a><a href="#示例" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c [...]
-<p>This example sets the filesystem offloader threshold to 10 MB using pulsar-admin.</p>
+<p>该示例使用 pulsar-admin 将 filesystem offloader 的阈值大小设置为 10 MB。</p>
 <pre><code class="hljs css language-bash">pulsar-admin namespaces <span class="hljs-built_in">set</span>-offload-threshold --size 10M my-tenant/my-namespace
 </code></pre>
 <blockquote>
 <h4><a class="anchor" aria-hidden="true" id="提示"></a><a href="#提示" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c [...]
 <p>关于 <code>pulsar-admin namespaces set-offload-threshold options</code> 命令的更多信息,包括标志、描述、默认值和速记方法,见<a href="/docs/zh-CN/pulsar-admin#set-offload-threshold">这里</a>。</p>
 </blockquote>
-<h3><a class="anchor" aria-hidden="true" id="run-filesystem-offloader-manually"></a><a href="#run-filesystem-offloader-manually" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S1 [...]
-<p>For individual topics, you can trigger the filesystem offloader manually using one of the following methods:</p>
+<h3><a class="anchor" aria-hidden="true" id="手动运行-filesystem-offloader"></a><a href="#手动运行-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c [...]
+<p>对于每一个 topic,使用下列方法之一可以手动触发 filesystem offloader:</p>
 <ul>
-<li><p>Use the REST endpoint.</p></li>
+<li><p>使用 REST 端点。</p></li>
 <li><p>使用命令行工具(例如 pulsar-admin)。</p></li>
 </ul>
-<p>To manually trigger the filesystem offloader via CLI tools, you need to specify the maximum amount of data (threshold) that should be retained on a Pulsar cluster for a topic. 如果 Pulsar 集群上 topic 的数据大小超过了这个阈值,那么该 topic 下的 segment 就会被陆续卸载到 filesystem 上,直到不再超过这个阈值。 优先卸载旧的 segment。</p>
+<p>要想用命令行工具触发 filesystem offloader,需要指定一个 topic 应该保留在 Pulsar 集群中的最大数据量(阈值)。 如果 Pulsar 集群上 topic 的数据大小超过了这个阈值,那么该 topic 下的 segment 就会被陆续卸载到 filesystem 上,直到不再超过这个阈值。 优先卸载旧的 segment。</p>
 <h4><a class="anchor" aria-hidden="true" id="示例-1"></a><a href="#示例-1" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
 <ul>
-<li><p>This example manually run the filesystem offloader using pulsar-admin.</p>
+<li><p>此示例使用 pulsar-admin 手动运行 filesystem offloader。</p>
 <pre><code class="hljs css language-bash">pulsar-admin topics offload --size-threshold 10M persistent://my-tenant/my-namespace/topic1
 </code></pre>
 <p><strong>输出</strong></p>
@@ -199,96 +199,96 @@ Reason: <span class="hljs-builtin-name">Error</span> offloading: org.apache.book
 </blockquote></li>
 </ul>
 <h2><a class="anchor" aria-hidden="true" id="教程"></a><a href="#教程" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c [...]
-<p>This section provides step-by-step instructions on how to use the filesystem offloader to move data from Pulsar to Hadoop Distributed File System (HDFS) or Network File system (NFS).</p>
-<pre><code class="hljs">&lt;div class=&quot;tabs&quot;&gt;&lt;div class=&quot;nav-tabs&quot;&gt;&lt;div id=&quot;tab-group-23043-tab-23044&quot; class=&quot;nav-link active&quot; data-group=&quot;group_23043&quot; data-tab=&quot;tab-group-23043-content-23044&quot;&gt;HDFS&lt;/div&gt;&lt;div id=&quot;tab-group-23043-tab-23045&quot; class=&quot;nav-link&quot; data-group=&quot;group_23043&quot; data-tab=&quot;tab-group-23043-content-23045&quot;&gt;NFS&lt;/div&gt;&lt;/div&gt;&lt;div class=&q [...]
+<p>本节提供有关如何使用  filesystem offloader  将数据从 Pulsar 移动到 Hadoop 分布式文件系统(HDFS)或网络文件系统(NFS)的分步说明。</p>
+<pre><code class="hljs">&lt;div class=&quot;tabs&quot;&gt;&lt;div class=&quot;nav-tabs&quot;&gt;&lt;div id=&quot;tab-group-23043-tab-23044&quot; class=&quot;nav-link active&quot; data-group=&quot;group_23043&quot; data-tab=&quot;tab-group-23043-content-23044&quot;&gt;HDFS&lt;/div&gt;&lt;div id=&quot;tab-group-23043-tab-23045&quot; class=&quot;nav-link&quot; data-group=&quot;group_23043&quot; data-tab=&quot;tab-group-23043-content-23045&quot;&gt;NFS&lt;/div&gt;&lt;/div&gt;&lt;div class=&q [...]
 </code></pre>
-<p><h3><a class="anchor" aria-hidden="true" id="step-1-prepare-the-hdfs-environment"></a><a href="#step-1-prepare-the-hdfs-environment" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22  [...]
-<p>This tutorial sets up a Hadoop single node cluster and uses Hadoop 3.2.1.</p>
+<p><h3><a class="anchor" aria-hidden="true" id="第-1-步准备-hdfs-环境"></a><a href="#第-1-步准备-hdfs-环境" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2 [...]
+<p>本教程使用 Hadoop 3.2.1设置一个 Hadoop 单个节点集群。</p>
 <blockquote>
 <p><strong>提示</strong></p>
-<p>For details about how to set up a Hadoop single node cluster, see <a href="https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html">here</a>.</p>
+<p>有关如何设置 Hadoop 单节点集群的详细信息,请参见<a href="https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html">此处</a>。</p>
 </blockquote>
 <ol>
-<li>Download and uncompress Hadoop 3.2.1.</li>
+<li>下载并解压缩 Hadoop 3.2.1。</li>
 </ol>
 <pre><code class="hljs">wget <span class="hljs-symbol">https:</span>/<span class="hljs-regexp">/mirrors.bfsu.edu.cn/apache</span><span class="hljs-regexp">/hadoop/common</span><span class="hljs-regexp">/hadoop-3.2.1/hadoop</span><span class="hljs-number">-3.2</span>.<span class="hljs-number">1</span>.tar.gz  <br /><br />tar -zxvf hadoop<span class="hljs-number">-3.2</span>.<span class="hljs-number">1</span>.tar.gz -C <span class="hljs-variable">$HADOOP_HOME</span><br /></code></pre>    
 <ol start="2">
-<li>Configure Hadoop.</li>
+<li>配置 Hadoop。</li>
 </ol>
 <pre><code class="hljs"><span class="hljs-meta"># $HADOOP_HOME/etc/hadoop/core-site.xml</span><br /><span class="hljs-params">&lt;configuration&gt;</span><br />    <span class="hljs-params">&lt;property&gt;</span><br />        <span class="hljs-params">&lt;name&gt;</span>fs.defaultFS<span class="hljs-params">&lt;/name&gt;</span><br />        <span class="hljs-params">&lt;value&gt;</span>hdfs:<span class="hljs-comment">//localhost:9000&lt;/value&gt;</span><br />    <span class="hljs-param [...]
 <ol start="3">
-<li>Set passphraseless ssh.</li>
+<li>设置无密码 ssh。</li>
 </ol>
-<pre><code class="hljs"><span class="hljs-comment"># Now check that you can ssh to the localhost without a passphrase:</span><br /><span class="hljs-variable">$ </span>ssh localhost<br /><span class="hljs-comment"># If you cannot ssh to localhost without a passphrase, execute the following commands</span><br /><span class="hljs-variable">$ </span>ssh-keygen -t rsa -P <span class="hljs-string">''</span> -f ~<span class="hljs-regexp">/.ssh/id</span>_rsa<br /><span class="hljs-variable">$ < [...]
+<pre><code class="hljs"><span class="hljs-comment"># 现在检查无需密码是否可以使用 ssh 连接到 localhost:</span><br /><span class="hljs-variable">$ </span>ssh localhost<br /><span class="hljs-comment"># 如果在无密码的情况下无法 ssh 连接到 localhost,请执行以下命令</span><br /><span class="hljs-variable">$ </span>ssh-keygen -t rsa -P <span class="hljs-string">''</span> -f ~<span class="hljs-regexp">/.ssh/id</span>_rsa<br /><span class="hljs-variable">$ </span>cat ~<span class="hljs-regexp">/.ssh/id</span>_rsa.pub &gt;&gt; ~<span  [...]
 <ol start="4">
-<li>Start HDFS.</li>
+<li>启动 HDFS。</li>
 </ol>
-<pre><code class="hljs"><span class="hljs-comment"># don't execute this command repeatedly, repeat execute will cauld the clusterId of the datanode is not consistent with namenode</span><br /><span class="hljs-variable">$HADOOP_HOME</span><span class="hljs-regexp">/bin/</span>hadoop namenode -format<br /><span class="hljs-variable">$HADOOP_HOME</span><span class="hljs-regexp">/sbin/</span>start-dfs.sh<br /></code></pre>    
+<pre><code class="hljs"><span class="hljs-comment"># 不重复执行此命令, 重复执行会捕获数据集群标识符与命名方式</span><br /><span class="hljs-variable">$HADOOP_HOME</span><span class="hljs-regexp">/bin/</span>hadoop namenode -format<br /><span class="hljs-variable">$HADOOP_HOME</span><span class="hljs-regexp">/sbin/</span>start-dfs.sh<br /></code></pre>    
 <ol start="5">
-<li>Navigate to the <a href="http://localhost:9870/">HDFS website</a>.</li>
+<li>导航到 <a href="http://localhost:9870/">HDFS 网站</a>。</li>
 </ol>
-<p>You can see the <strong>Overview</strong> page.</p>
+<p>您可以查看 <strong>概述</strong> 页面。</p>
 <p><img src="/docs/assets/FileSystem-1.png" alt=""></p>
 <ol>
-<li><p>At the top navigation bar, click <strong>Datanodes</strong> to check DataNode information.</p>
+<li><p>在顶部导航栏,单击 <strong>数据节点</strong> 查看数据节点信息。</p>
 <p><img src="/docs/assets/FileSystem-2.png" alt=""></p></li>
-<li><p>Click <strong>HTTP Address</strong> to get more detailed information about localhost:9866.</p>
-<p>As can be seen below, the size of <strong>Capacity Used</strong> is 4 KB, which is the initial value.</p>
+<li><p>单击 <strong>HTTP 地址</strong> 获取更多关于 localhost:9866 的详细信息。</p>
+<p>如下文所示, <strong>所用容量</strong> 的大小是 4 KB,它是初始值。</p>
 <p><img src="/docs/assets/FileSystem-3.png" alt=""></p></li>
 </ol>
-<h3><a class="anchor" aria-hidden="true" id="step-2-install-the-filesystem-offloader"></a><a href="#step-2-install-the-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2  [...]
-<p>For details, see <a href="#installation">installation</a>.</p>
-<h3><a class="anchor" aria-hidden="true" id="step-3-configure-the-filesystem-offloader"></a><a href="#step-3-configure-the-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1  [...]
-<p>As indicated in the <a href="#configuration">configuration</a> section, you need to configure some properties for the filesystem offloader driver before using it. This tutorial assumes that you have configured the filesystem offloader driver as below and run Pulsar in <strong>standalone</strong> mode.</p>
-<p>Set the following configurations in the <code>conf/standalone.conf</code> file.</p>
+<h3><a class="anchor" aria-hidden="true" id="第-2-步-安装-filesystem-offloader"></a><a href="#第-2-步-安装-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
+<p>更多详细信息,请参阅 <a href="#installation">安装</a>。</p>
+<h3><a class="anchor" aria-hidden="true" id="第-3-步-配置-filesystem-offloader"></a><a href="#第-3-步-配置-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
+<p>正如 <a href="#configuration">配置</a> 部分所指明的那样,需要先配置  filesystem offloader 驱动程序的一些属性,然后才能使用。 本教程假设您已按以下方式配置  filesystem offloader 驱动程序,并在<strong>独立</strong>模式下运行 Pulsar。</p>
+<p>在 <code>conf/standalone.conf</code> 文件中设置以下配置。</p>
 <pre><code class="hljs css language-conf"><span class="hljs-attr">managedLedgerOffloadDriver</span>=filesystem<br /><span class="hljs-attr">fileSystemURI</span>=hdfs://<span class="hljs-number">127.0</span>.<span class="hljs-number">0.1</span>:<span class="hljs-number">9000</span><br /><span class="hljs-attr">fileSystemProfilePath</span>=../conf/filesystem_<span class="hljs-literal">off</span>load_core_site.xml<br /></code></pre>    
 <blockquote>
 <p><strong>Note</strong></p>
-<p>For testing purposes, you can set the following two configurations to speed up ledger rollover, but it is not recommended that you set them in the production environment.</p>
+<p>为测试目的,您可以设置以下两个配置来加速 ledger 切换, 但不建议在生产环境中设置它们。</p>
 </blockquote>
 <pre><code class="hljs"><span class="hljs-attr">managedLedgerMinLedgerRolloverTimeMinutes</span>=<span class="hljs-number">1</span><br /><span class="hljs-attr">managedLedgerMaxEntriesPerLedger</span>=<span class="hljs-number">100</span><br /></code></pre>    
 </span></div></div><div id="tab-group-23043-content-23045" class="tab-pane" data-group="group_23043" tabindex="-1"><div><span><blockquote>
 <p><strong>Note</strong></p>
-<p>In this section, it is assumed that you have enabled NFS service and set the shared path of your NFS service. In this section, <code>/Users/test</code> is used as the shared path of NFS service.</p>
+<p>在本节中,假定您已启用 NFS 服务并设置 NFS 服务的共享路径。 在本节中, <code>/Users/test</code> 被用作 NFS 服务的共享路径。</p>
 </blockquote>
-<p>To offload data to NFS, follow these steps.</p>
-<h3><a class="anchor" aria-hidden="true" id="step-1-install-the-filesystem-offloader"></a><a href="#step-1-install-the-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2  [...]
-<p>For details, see <a href="#installation">installation</a>.</p>
-<h3><a class="anchor" aria-hidden="true" id="step-2-mont-your-nfs-to-your-local-filesystem"></a><a href="#step-2-mont-your-nfs-to-your-local-filesystem" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h- [...]
-<p>This example mounts mounts <em>/Users/pulsar_nfs</em> to <em>/Users/test</em>.</p>
+<p>要将数据卸载到 NFS,请执行以下步骤。</p>
+<h3><a class="anchor" aria-hidden="true" id="第-1-步-安装-filesystem-offloader"></a><a href="#第-1-步-安装-filesystem-offloader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
+<p>更多详细信息,请参阅 <a href="#installation">安装</a>。</p>
+<h3><a class="anchor" aria-hidden="true" id="第-2-步将-nfs-置于本地文件系统"></a><a href="#第-2-步将-nfs-置于本地文件系统" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.2 [...]
+<p>此示例将挂载 <em>/Users/pulsar_nfs</em> 到 <em>/Users/test</em>。</p>
 <pre><code class="hljs">mount -e <span class="hljs-number">192.168</span>.0.<span class="hljs-number">103</span><span class="hljs-symbol">:/Users/test/Users/pulsar_nfs</span><br /></code></pre>    
-<h3><a class="anchor" aria-hidden="true" id="step-3-configure-the-filesystem-offloader-driver"></a><a href="#step-3-configure-the-filesystem-offloader-driver" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9z [...]
-<p>As indicated in the <a href="#configuration">configuration</a> section, you need to configure some properties for the filesystem offloader driver before using it. This tutorial assumes that you have configured the filesystem offloader driver as below and run Pulsar in <strong>standalone</strong> mode.</p>
+<h3><a class="anchor" aria-hidden="true" id="第-3-步-配置-filesystem-offloader-驱动程序"></a><a href="#第-3-步-配置-filesystem-offloader-驱动程序" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5 [...]
+<p>正如 <a href="#configuration">配置</a> 部分所指明的那样,需要先配置  filesystem offloader 驱动程序的一些属性,然后才能使用。 本教程假设您已按以下方式配置  filesystem offloader 驱动程序,并在<strong>独立</strong>模式下运行 Pulsar。</p>
 <ol>
-<li>Set the following configurations in the <code>conf/standalone.conf</code> file.</li>
+<li>在 <code>conf/standalone.conf</code> 文件中设置以下配置。</li>
 </ol>
 <pre><code class="hljs css language-conf"><span class="hljs-attr">managedLedgerOffloadDriver</span>=filesystem<br /><span class="hljs-attr">fileSystemProfilePath</span>=../conf/filesystem_<span class="hljs-literal">off</span>load_core_site.xml<br /></code></pre>    
 <ol start="2">
-<li>Modify the <em>filesystem_offload_core_site.xml</em> as follows.</li>
+<li>修改 <em>filesystem_offload_core_site.xml</em>,如下所示。</li>
 </ol>
 <pre><code class="hljs"><span class="hljs-tag">&lt;<span class="hljs-name">property</span>&gt;</span><br />    <span class="hljs-tag">&lt;<span class="hljs-name">name</span>&gt;</span>fs.defaultFS<span class="hljs-tag">&lt;/<span class="hljs-name">name</span>&gt;</span><br />    <span class="hljs-tag">&lt;<span class="hljs-name">value</span>&gt;</span>file:///<span class="hljs-tag">&lt;/<span class="hljs-name">value</span>&gt;</span><br /><span class="hljs-tag">&lt;/<span class="hljs-nam [...]
 </span></div></div></div></div>
-<h3><a class="anchor" aria-hidden="true" id="step-4-offload-data-from-bookkeeper-to-filesystem"></a><a href="#step-4-offload-data-from-bookkeeper-to-filesystem" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4  [...]
-<p>Execute the following commands in the repository where you download Pulsar tarball. For example, <code>~/path/to/apache-pulsar-2.5.1</code>.</p>
+<h3><a class="anchor" aria-hidden="true" id="第-4-步将数据从-bookkeeper-卸载到文件系统"></a><a href="#第-4-步将数据从-bookkeeper-卸载到文件系统" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 [...]
+<p>在下载 Pulsar tar 包的仓库中执行以下命令。 例如, <code>~/path/to/apache-pulsar-2.5.1</code>。</p>
 <ol>
 <li><p>启动 Pulsar 单机模式。</p>
 <pre><code class="hljs">./bin/pulsar standalone -a <span class="hljs-number">127.0</span><span class="hljs-number">.0</span><span class="hljs-number">.1</span>
 </code></pre></li>
-<li><p>To ensure the data generated is not deleted immediately, it is recommended to set the <a href="https://pulsar.apache.org/docs/en/next/cookbooks-retention-expiry/#retention-policies">retention policy</a>, which can be either a <strong>size</strong> limit or a <strong>time</strong> limit. The larger value you set for the retention policy, the longer the data can be retained.</p>
+<li><p>为了确保生成的数据不会立即被删除,建议设置 <a href="https://pulsar.apache.org/docs/en/next/cookbooks-retention-expiry/#retention-policies">保留策略</a>, 可以是 <strong>大小</strong> 限制或 <strong>时间</strong> 限制。 为保留策略设定的值越大,数据保留的时间越长。</p>
 <pre><code class="hljs">./<span class="hljs-string">bin/</span><span class="hljs-string">pulsarctl </span><span class="hljs-string">namespaces </span><span class="hljs-built_in">set-retention</span> <span class="hljs-string">public/</span><span class="hljs-string">default </span><span class="hljs-built_in">--size</span> <span class="hljs-string">100M </span><span class="hljs-built_in">--time</span> <span class="hljs-string">2d
 </span></code></pre>
 <blockquote>
 <p><strong>提示</strong></p>
-<p>For more information about the <code>pulsarctl namespaces set-retention options</code> command, including flags, descriptions, default values, and shorthands, see <a href="https://docs.streamnative.io/pulsarctl/v2.7.0.6/#-em-set-retention-em-">here</a>.</p>
+<p>关于 <code>pulsar-admin namespaces set-offload-threshold options</code> 命令的更多信息,包括标志、描述、默认值和速记方法,参见<a href="https://docs.streamnative.io/pulsarctl/v2.7.0.6/#-em-set-retention-em-">这里</a>。</p>
 </blockquote></li>
-<li><p>Produce data using pulsar-client.</p>
+<li><p>使用 pulsar-client 生成数据。</p>
 <pre><code class="hljs">./bin/pulsar-client produce -m <span class="hljs-string">"Hello FileSystem Offloader"</span> -n <span class="hljs-number">1000</span> <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre></li>
-<li><p>The offloading operation starts after a ledger rollover is triggered. To ensure offload data successfully, it is recommended that you wait until several ledger rollovers are triggered. In this case, you might need to wait for a second. You can check the ledger status using pulsarctl.</p>
+<li><p>卸载操作在触发 ledger 切换后开始。 为了确保卸载数据成功,建议您等待多个 ledger 切换被触发。 在这种情况下,可能需要等待一秒钟。 您可以使用 pulsarctl 检查 ledger 状态。</p>
 <pre><code class="hljs">./bin/pulsarctl topics internal-stats <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre>
 <p><strong>输出</strong></p>
-<p>The data of the ledger 696 is not offloaded.</p>
+<p>ledger 696 的数据未卸载。</p>
 <pre><code class="hljs">{
 <span class="hljs-attr">"version"</span>: <span class="hljs-number">1</span>,
 <span class="hljs-attr">"creationDate"</span>: <span class="hljs-string">"2020-06-16T21:46:25.807+08:00"</span>,
@@ -302,14 +302,14 @@ Reason: <span class="hljs-builtin-name">Error</span> offloading: org.apache.book
 <span class="hljs-attr">"cursors"</span>: {}
 }
 </code></pre></li>
-<li><p>Wait a second and send more messages to the topic.</p>
+<li><p>请稍等,然后向 topic 发送更多消息。</p>
 <pre><code class="hljs">./bin/pulsar-client produce -m <span class="hljs-string">"Hello FileSystem Offloader"</span> -n <span class="hljs-number">1000</span> <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre></li>
-<li><p>Check the ledger status using pulsarctl.</p>
+<li><p>使用 pulsarctl 检查 ledger 状态。</p>
 <pre><code class="hljs">./bin/pulsarctl topics internal-stats <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre>
 <p><strong>输出</strong></p>
-<p>The ledger 696 is rollovered.</p>
+<p>ledger 696已经切换。</p>
 <pre><code class="hljs">{
 <span class="hljs-attr">"version"</span>: <span class="hljs-number">2</span>,
 <span class="hljs-attr">"creationDate"</span>: <span class="hljs-string">"2020-06-16T21:46:25.807+08:00"</span>,
@@ -329,19 +329,19 @@ Reason: <span class="hljs-builtin-name">Error</span> offloading: org.apache.book
 <span class="hljs-attr">"cursors"</span>: {}
 }
 </code></pre></li>
-<li><p>Trigger the offloading operation manually using pulsarctl.</p>
+<li><p>使用 pulsarctl 手动触发卸载操作。</p>
 <pre><code class="hljs">./bin/pulsarctl topic offload -s <span class="hljs-number">0</span> <span class="hljs-meta">public</span>/<span class="hljs-meta">default</span>/<span class="hljs-built_in">fs</span>-<span class="hljs-keyword">test</span>
 </code></pre>
 <p><strong>输出</strong></p>
-<p>Data in ledgers before the ledge 697 is offloaded.</p>
+<p>ledger 中的数据先于 ledge 697 已卸载。</p>
 <pre><code class="hljs"><span class="hljs-comment"># offload info, the ledgers before 697 will be offloaded</span>
 Offload triggered <span class="hljs-keyword">for</span> persistent:<span class="hljs-regexp">//</span>public<span class="hljs-regexp">/default/</span>fs-test3 <span class="hljs-keyword">for</span> messages before <span class="hljs-number">697</span>:<span class="hljs-number">0</span>:-<span class="hljs-number">1</span>
 </code></pre></li>
-<li><p>Check the ledger status using pulsarctl.</p>
+<li><p>使用 pulsarctl 检查 ledger 状态。</p>
 <pre><code class="hljs">./bin/pulsarctl topic <span class="hljs-type">internal</span>-<span class="hljs-keyword">info</span> <span class="hljs-built_in">public</span>/<span class="hljs-keyword">default</span>/fs-test
 </code></pre>
 <p><strong>输出</strong></p>
-<p>The data of the ledger 696 is offloaded.</p>
+<p>ledger 696 的数据已卸载。</p>
 <pre><code class="hljs">{
 <span class="hljs-attr">"version"</span>: <span class="hljs-number">4</span>,
 <span class="hljs-attr">"creationDate"</span>: <span class="hljs-string">"2020-06-16T21:46:25.807+08:00"</span>,
@@ -361,10 +361,10 @@ Offload triggered <span class="hljs-keyword">for</span> persistent:<span class="
 <span class="hljs-attr">"cursors"</span>: {}
 }
 </code></pre>
-<p>And the <strong>Capacity Used</strong> is changed from 4 KB to 116.46 KB.</p>
+<p>并且 <strong>所用容量</strong> 已经从 4 KB 变成 116.46 KB。</p>
 <p><img src="/docs/assets/FileSystem-8.png" alt=""></p></li>
 </ol>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/tiered-storage-gcs"><span class="arrow-prev">← </span><span>GCS offloader</span></a><a class="docs-next button" href="/docs/zh-CN/tiered-storage-azure"><span class="function-name-prevnext">Azure BlobStore offloader</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#安装">安装</a><ul class="toc-headings"><li><a href="#前提 [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/tiered-storage-gcs"><span class="arrow-prev">← </span><span>GCS offloader</span></a><a class="docs-next button" href="/docs/zh-CN/tiered-storage-azure"><span class="function-name-prevnext">Azure BlobStore offloader</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#安装">安装</a><ul class="toc-headings"><li><a href="#前提 [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/swagger/2.10.0-SNAPSHOT/swagger.json b/content/swagger/2.10.0-SNAPSHOT/swagger.json
index f4bacb5..3d615c1 100644
--- a/content/swagger/2.10.0-SNAPSHOT/swagger.json
+++ b/content/swagger/2.10.0-SNAPSHOT/swagger.json
@@ -19726,12 +19726,12 @@
             "$ref" : "#/definitions/X509Certificate"
           }
         },
-        "httpAuthType" : {
-          "type" : "string"
-        },
         "peerAddress" : {
           "$ref" : "#/definitions/SocketAddress"
         },
+        "httpAuthType" : {
+          "type" : "string"
+        },
         "commandData" : {
           "type" : "string"
         }
@@ -19763,15 +19763,15 @@
     "AutoTopicCreationOverride" : {
       "type" : "object",
       "properties" : {
-        "topicType" : {
-          "type" : "string"
-        },
         "defaultNumPartitions" : {
           "type" : "integer",
           "format" : "int32"
         },
         "allowAutoTopicCreation" : {
           "type" : "boolean"
+        },
+        "topicType" : {
+          "type" : "string"
         }
       }
     },
@@ -20048,16 +20048,16 @@
     "CompletableFuture" : {
       "type" : "object",
       "properties" : {
-        "numberOfDependents" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
         "done" : {
           "type" : "boolean"
         },
         "cancelled" : {
           "type" : "boolean"
         },
+        "numberOfDependents" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
         "completedExceptionally" : {
           "type" : "boolean"
         }
@@ -20066,16 +20066,16 @@
     "CompletableFutureClusterData" : {
       "type" : "object",
       "properties" : {
-        "numberOfDependents" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
         "done" : {
           "type" : "boolean"
         },
         "cancelled" : {
           "type" : "boolean"
         },
+        "numberOfDependents" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
         "completedExceptionally" : {
           "type" : "boolean"
         }
@@ -20084,16 +20084,16 @@
     "CompletableFuturePartitionedTopicMetadata" : {
       "type" : "object",
       "properties" : {
-        "numberOfDependents" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
         "done" : {
           "type" : "boolean"
         },
         "cancelled" : {
           "type" : "boolean"
         },
+        "numberOfDependents" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
         "completedExceptionally" : {
           "type" : "boolean"
         }
@@ -20131,9 +20131,31 @@
             "type" : "string"
           }
         },
+        "bytesOutCounter" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "msgOutCounter" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "chunkedMessageRate" : {
+          "type" : "number",
+          "format" : "double"
+        },
+        "connectedSince" : {
+          "type" : "string"
+        },
+        "clientVersion" : {
+          "type" : "string"
+        },
         "consumerName" : {
           "type" : "string"
         },
+        "msgRateRedeliver" : {
+          "type" : "number",
+          "format" : "double"
+        },
         "unackedMessages" : {
           "type" : "integer",
           "format" : "int32"
@@ -20166,36 +20188,14 @@
             "type" : "string"
           }
         },
-        "chunkedMessageRate" : {
-          "type" : "number",
-          "format" : "double"
-        },
-        "connectedSince" : {
-          "type" : "string"
-        },
-        "clientVersion" : {
-          "type" : "string"
-        },
-        "msgRateRedeliver" : {
+        "msgRateOut" : {
           "type" : "number",
           "format" : "double"
         },
-        "bytesOutCounter" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
-        "msgOutCounter" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
         "msgThroughputOut" : {
           "type" : "number",
           "format" : "double"
         },
-        "msgRateOut" : {
-          "type" : "number",
-          "format" : "double"
-        },
         "address" : {
           "type" : "string"
         }
@@ -20221,10 +20221,10 @@
         "displayName" : {
           "type" : "string"
         },
-        "numericCodeAsString" : {
+        "symbol" : {
           "type" : "string"
         },
-        "symbol" : {
+        "numericCodeAsString" : {
           "type" : "string"
         }
       }
@@ -20524,9 +20524,6 @@
     "FunctionInstanceStatsData" : {
       "type" : "object",
       "properties" : {
-        "oneMin" : {
-          "$ref" : "#/definitions/FunctionInstanceStatsDataBase"
-        },
         "lastInvocation" : {
           "type" : "integer",
           "format" : "int64"
@@ -20538,6 +20535,9 @@
             "format" : "double"
           }
         },
+        "oneMin" : {
+          "$ref" : "#/definitions/FunctionInstanceStatsDataBase"
+        },
         "receivedTotal" : {
           "type" : "integer",
           "format" : "int64"
@@ -20820,17 +20820,17 @@
         "formatName" : {
           "type" : "string"
         },
-        "characterEscapes" : {
-          "$ref" : "#/definitions/CharacterEscapes"
-        },
-        "rootValueSeparator" : {
-          "type" : "string"
-        },
         "inputDecorator" : {
           "$ref" : "#/definitions/InputDecorator"
         },
         "outputDecorator" : {
           "$ref" : "#/definitions/OutputDecorator"
+        },
+        "rootValueSeparator" : {
+          "type" : "string"
+        },
+        "characterEscapes" : {
+          "$ref" : "#/definitions/CharacterEscapes"
         }
       }
     },
@@ -20882,10 +20882,6 @@
     "JsonLocation" : {
       "type" : "object",
       "properties" : {
-        "byteOffset" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
         "sourceRef" : {
           "type" : "object"
         },
@@ -20900,6 +20896,10 @@
         "charOffset" : {
           "type" : "integer",
           "format" : "int64"
+        },
+        "byteOffset" : {
+          "type" : "integer",
+          "format" : "int64"
         }
       }
     },
@@ -21077,20 +21077,20 @@
     "JsonStreamContext" : {
       "type" : "object",
       "properties" : {
-        "currentName" : {
+        "typeDesc" : {
           "type" : "string"
         },
-        "currentValue" : {
-          "type" : "object"
-        },
-        "entryCount" : {
+        "currentIndex" : {
           "type" : "integer",
           "format" : "int32"
         },
-        "typeDesc" : {
+        "currentName" : {
           "type" : "string"
         },
-        "currentIndex" : {
+        "currentValue" : {
+          "type" : "object"
+        },
+        "entryCount" : {
           "type" : "integer",
           "format" : "int32"
         },
@@ -21383,28 +21383,19 @@
           "type" : "number",
           "format" : "double"
         },
-        "underLoaded" : {
-          "type" : "boolean"
-        },
-        "overLoaded" : {
-          "type" : "boolean"
-        },
-        "loadReportType" : {
-          "type" : "string"
-        },
-        "cpu" : {
+        "bandwidthIn" : {
           "$ref" : "#/definitions/ResourceUsage"
         },
-        "memory" : {
+        "bandwidthOut" : {
           "$ref" : "#/definitions/ResourceUsage"
         },
-        "directMemory" : {
+        "memory" : {
           "$ref" : "#/definitions/ResourceUsage"
         },
-        "bandwidthIn" : {
+        "cpu" : {
           "$ref" : "#/definitions/ResourceUsage"
         },
-        "bandwidthOut" : {
+        "directMemory" : {
           "$ref" : "#/definitions/ResourceUsage"
         },
         "lastUpdate" : {
@@ -21418,6 +21409,15 @@
         "msgThroughputOut" : {
           "type" : "number",
           "format" : "double"
+        },
+        "underLoaded" : {
+          "type" : "boolean"
+        },
+        "overLoaded" : {
+          "type" : "boolean"
+        },
+        "loadReportType" : {
+          "type" : "string"
         }
       }
     },
@@ -21704,6 +21704,10 @@
             "type" : "string"
           }
         },
+        "averageMsgSize" : {
+          "type" : "number",
+          "format" : "double"
+        },
         "accessMode" : {
           "type" : "string",
           "enum" : [ "Shared", "Exclusive", "WaitForExclusive" ]
@@ -21722,20 +21726,16 @@
         "clientVersion" : {
           "type" : "string"
         },
-        "averageMsgSize" : {
+        "msgRateIn" : {
           "type" : "number",
           "format" : "double"
         },
-        "producerName" : {
-          "type" : "string"
-        },
         "msgThroughputIn" : {
           "type" : "number",
           "format" : "double"
         },
-        "msgRateIn" : {
-          "type" : "number",
-          "format" : "double"
+        "producerName" : {
+          "type" : "string"
         },
         "address" : {
           "type" : "string"
@@ -21776,19 +21776,19 @@
         "outboundConnectedSince" : {
           "type" : "string"
         },
-        "msgThroughputIn" : {
+        "msgRateIn" : {
           "type" : "number",
           "format" : "double"
         },
-        "msgThroughputOut" : {
+        "msgRateOut" : {
           "type" : "number",
           "format" : "double"
         },
-        "msgRateIn" : {
+        "msgThroughputIn" : {
           "type" : "number",
           "format" : "double"
         },
-        "msgRateOut" : {
+        "msgThroughputOut" : {
           "type" : "number",
           "format" : "double"
         }
@@ -21801,10 +21801,53 @@
           "type" : "number",
           "format" : "double"
         },
+        "nonContiguousDeletedMessagesRangesSerializedSize" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "bytesOutCounter" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "msgOutCounter" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "backlogSize" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "nonContiguousDeletedMessagesRanges" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "chunkedMessageRate" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "msgRateExpired" : {
+          "type" : "number",
+          "format" : "double"
+        },
         "msgBacklog" : {
           "type" : "integer",
           "format" : "int64"
         },
+        "msgRateRedeliver" : {
+          "type" : "number",
+          "format" : "double"
+        },
+        "msgBacklogNoDelayed" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "blockedSubscriptionOnUnackedMsgs" : {
+          "type" : "boolean"
+        },
+        "msgDelayed" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
         "unackedMessages" : {
           "type" : "integer",
           "format" : "int64"
@@ -21848,68 +21891,25 @@
             "type" : "string"
           }
         },
-        "chunkedMessageRate" : {
-          "type" : "integer",
-          "format" : "int32"
+        "replicated" : {
+          "type" : "boolean"
         },
-        "msgRateExpired" : {
+        "msgRateOut" : {
           "type" : "number",
           "format" : "double"
         },
-        "msgRateRedeliver" : {
+        "msgThroughputOut" : {
           "type" : "number",
           "format" : "double"
         },
-        "msgBacklogNoDelayed" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
-        "blockedSubscriptionOnUnackedMsgs" : {
-          "type" : "boolean"
-        },
-        "msgDelayed" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
-        "replicated" : {
-          "type" : "boolean"
-        },
         "consumers" : {
           "type" : "array",
           "items" : {
             "$ref" : "#/definitions/ConsumerStats"
           }
         },
-        "nonContiguousDeletedMessagesRangesSerializedSize" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
-        "nonContiguousDeletedMessagesRanges" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
-        "backlogSize" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
-        "bytesOutCounter" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
-        "msgOutCounter" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
-        "durable" : {
-          "type" : "boolean"
-        },
-        "msgThroughputOut" : {
-          "type" : "number",
-          "format" : "double"
-        },
-        "msgRateOut" : {
-          "type" : "number",
-          "format" : "double"
+        "durable" : {
+          "type" : "boolean"
         },
         "type" : {
           "type" : "string"
@@ -21919,10 +21919,6 @@
     "NonPersistentTopicStats" : {
       "type" : "object",
       "properties" : {
-        "msgDropRate" : {
-          "type" : "number",
-          "format" : "double"
-        },
         "publishers" : {
           "type" : "array",
           "items" : {
@@ -21935,49 +21931,32 @@
             "$ref" : "#/definitions/NonPersistentReplicatorStats"
           }
         },
+        "msgDropRate" : {
+          "type" : "number",
+          "format" : "double"
+        },
         "subscriptions" : {
           "type" : "object",
           "additionalProperties" : {
             "$ref" : "#/definitions/NonPersistentSubscriptionStats"
           }
         },
-        "bytesInCounter" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
-        "msgInCounter" : {
+        "offloadedStorageSize" : {
           "type" : "integer",
           "format" : "int64"
         },
-        "msgChunkPublished" : {
-          "type" : "boolean"
-        },
         "nonContiguousDeletedMessagesRangesSerializedSize" : {
           "type" : "integer",
           "format" : "int32"
         },
-        "deduplicationStatus" : {
-          "type" : "string"
-        },
-        "topicEpoch" : {
+        "bytesInCounter" : {
           "type" : "integer",
           "format" : "int64"
         },
-        "nonContiguousDeletedMessagesRanges" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
-        "compaction" : {
-          "$ref" : "#/definitions/CompactionStats"
-        },
-        "backlogSize" : {
+        "msgInCounter" : {
           "type" : "integer",
           "format" : "int64"
         },
-        "waitingPublishers" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
         "bytesOutCounter" : {
           "type" : "integer",
           "format" : "int64"
@@ -21994,23 +21973,44 @@
           "type" : "integer",
           "format" : "int64"
         },
-        "offloadedStorageSize" : {
+        "backlogSize" : {
           "type" : "integer",
           "format" : "int64"
         },
-        "msgThroughputIn" : {
+        "waitingPublishers" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "deduplicationStatus" : {
+          "type" : "string"
+        },
+        "topicEpoch" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "compaction" : {
+          "$ref" : "#/definitions/CompactionStats"
+        },
+        "nonContiguousDeletedMessagesRanges" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "msgChunkPublished" : {
+          "type" : "boolean"
+        },
+        "msgRateIn" : {
           "type" : "number",
           "format" : "double"
         },
-        "msgThroughputOut" : {
+        "msgRateOut" : {
           "type" : "number",
           "format" : "double"
         },
-        "msgRateIn" : {
+        "msgThroughputIn" : {
           "type" : "number",
           "format" : "double"
         },
-        "msgRateOut" : {
+        "msgThroughputOut" : {
           "type" : "number",
           "format" : "double"
         }
@@ -22044,12 +22044,12 @@
           "type" : "integer",
           "format" : "int32"
         },
+        "currency" : {
+          "$ref" : "#/definitions/Currency"
+        },
         "roundingMode" : {
           "type" : "string",
           "enum" : [ "UP", "DOWN", "CEILING", "FLOOR", "HALF_UP", "HALF_DOWN", "HALF_EVEN", "UNNECESSARY" ]
-        },
-        "currency" : {
-          "$ref" : "#/definitions/Currency"
         }
       }
     },
@@ -22117,9 +22117,50 @@
     "OffloadPolicies" : {
       "type" : "object",
       "properties" : {
+        "fileSystemURI" : {
+          "type" : "string"
+        },
+        "offloadersDirectory" : {
+          "type" : "string"
+        },
+        "managedLedgerOffloadDriver" : {
+          "type" : "string"
+        },
+        "managedLedgerOffloadMaxThreads" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "managedLedgerOffloadPrefetchRounds" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "managedLedgerOffloadedReadPriority" : {
+          "type" : "string",
+          "enum" : [ "BOOKKEEPER_FIRST", "TIERED_STORAGE_FIRST" ]
+        },
         "s3ManagedLedgerOffloadRegion" : {
           "type" : "string"
         },
+        "s3ManagedLedgerOffloadBucket" : {
+          "type" : "string"
+        },
+        "s3ManagedLedgerOffloadServiceEndpoint" : {
+          "type" : "string"
+        },
+        "s3ManagedLedgerOffloadMaxBlockSizeInBytes" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "s3ManagedLedgerOffloadReadBufferSizeInBytes" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "s3ManagedLedgerOffloadCredentialId" : {
+          "type" : "string"
+        },
+        "s3ManagedLedgerOffloadCredentialSecret" : {
+          "type" : "string"
+        },
         "s3ManagedLedgerOffloadRole" : {
           "type" : "string"
         },
@@ -22163,33 +22204,6 @@
           "type" : "integer",
           "format" : "int32"
         },
-        "s3ManagedLedgerOffloadMaxBlockSizeInBytes" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
-        "fileSystemURI" : {
-          "type" : "string"
-        },
-        "s3ManagedLedgerOffloadBucket" : {
-          "type" : "string"
-        },
-        "managedLedgerOffloadedReadPriority" : {
-          "type" : "string",
-          "enum" : [ "BOOKKEEPER_FIRST", "TIERED_STORAGE_FIRST" ]
-        },
-        "s3ManagedLedgerOffloadReadBufferSizeInBytes" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
-        "s3ManagedLedgerOffloadCredentialId" : {
-          "type" : "string"
-        },
-        "s3ManagedLedgerOffloadCredentialSecret" : {
-          "type" : "string"
-        },
-        "s3ManagedLedgerOffloadServiceEndpoint" : {
-          "type" : "string"
-        },
         "managedLedgerOffloadThresholdInBytes" : {
           "type" : "integer",
           "format" : "int64"
@@ -22197,20 +22211,6 @@
         "managedLedgerOffloadDeletionLagInMillis" : {
           "type" : "integer",
           "format" : "int64"
-        },
-        "managedLedgerOffloadDriver" : {
-          "type" : "string"
-        },
-        "offloadersDirectory" : {
-          "type" : "string"
-        },
-        "managedLedgerOffloadMaxThreads" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
-        "managedLedgerOffloadPrefetchRounds" : {
-          "type" : "integer",
-          "format" : "int32"
         }
       }
     },
@@ -22980,6 +22980,10 @@
             "type" : "string"
           }
         },
+        "averageMsgSize" : {
+          "type" : "number",
+          "format" : "double"
+        },
         "accessMode" : {
           "type" : "string",
           "enum" : [ "Shared", "Exclusive", "WaitForExclusive" ]
@@ -22998,20 +23002,16 @@
         "clientVersion" : {
           "type" : "string"
         },
-        "averageMsgSize" : {
+        "msgRateIn" : {
           "type" : "number",
           "format" : "double"
         },
-        "producerName" : {
-          "type" : "string"
-        },
         "msgThroughputIn" : {
           "type" : "number",
           "format" : "double"
         },
-        "msgRateIn" : {
-          "type" : "number",
-          "format" : "double"
+        "producerName" : {
+          "type" : "string"
         },
         "address" : {
           "type" : "string"
@@ -23056,19 +23056,19 @@
         "outboundConnectedSince" : {
           "type" : "string"
         },
-        "msgThroughputIn" : {
+        "msgRateIn" : {
           "type" : "number",
           "format" : "double"
         },
-        "msgThroughputOut" : {
+        "msgRateOut" : {
           "type" : "number",
           "format" : "double"
         },
-        "msgRateIn" : {
+        "msgThroughputIn" : {
           "type" : "number",
           "format" : "double"
         },
-        "msgRateOut" : {
+        "msgThroughputOut" : {
           "type" : "number",
           "format" : "double"
         }
@@ -23165,11 +23165,11 @@
     "ResourceUnit" : {
       "type" : "object",
       "properties" : {
-        "availableResource" : {
-          "$ref" : "#/definitions/ResourceDescription"
-        },
         "resourceId" : {
           "type" : "string"
+        },
+        "availableResource" : {
+          "$ref" : "#/definitions/ResourceDescription"
         }
       }
     },
@@ -23222,6 +23222,14 @@
     "SerializationConfig" : {
       "type" : "object",
       "properties" : {
+        "serializationInclusion" : {
+          "type" : "string",
+          "enum" : [ "ALWAYS", "NON_NULL", "NON_ABSENT", "NON_EMPTY", "NON_DEFAULT", "USE_DEFAULTS" ]
+        },
+        "serializationFeatures" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
         "defaultPropertyInclusion" : {
           "$ref" : "#/definitions/Value"
         },
@@ -23234,14 +23242,6 @@
         "annotationIntrospector" : {
           "$ref" : "#/definitions/AnnotationIntrospector"
         },
-        "serializationInclusion" : {
-          "type" : "string",
-          "enum" : [ "ALWAYS", "NON_NULL", "NON_ABSENT", "NON_EMPTY", "NON_DEFAULT", "USE_DEFAULTS" ]
-        },
-        "serializationFeatures" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
         "rootName" : {
           "type" : "string"
         },
@@ -23411,10 +23411,53 @@
     "SubscriptionStats" : {
       "type" : "object",
       "properties" : {
+        "nonContiguousDeletedMessagesRangesSerializedSize" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "bytesOutCounter" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "msgOutCounter" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "backlogSize" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "nonContiguousDeletedMessagesRanges" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "chunkedMessageRate" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "msgRateExpired" : {
+          "type" : "number",
+          "format" : "double"
+        },
         "msgBacklog" : {
           "type" : "integer",
           "format" : "int64"
         },
+        "msgRateRedeliver" : {
+          "type" : "number",
+          "format" : "double"
+        },
+        "msgBacklogNoDelayed" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "blockedSubscriptionOnUnackedMsgs" : {
+          "type" : "boolean"
+        },
+        "msgDelayed" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
         "unackedMessages" : {
           "type" : "integer",
           "format" : "int64"
@@ -23458,69 +23501,26 @@
             "type" : "string"
           }
         },
-        "chunkedMessageRate" : {
-          "type" : "integer",
-          "format" : "int32"
+        "replicated" : {
+          "type" : "boolean"
         },
-        "msgRateExpired" : {
+        "msgRateOut" : {
           "type" : "number",
           "format" : "double"
         },
-        "msgRateRedeliver" : {
+        "msgThroughputOut" : {
           "type" : "number",
           "format" : "double"
         },
-        "msgBacklogNoDelayed" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
-        "blockedSubscriptionOnUnackedMsgs" : {
-          "type" : "boolean"
-        },
-        "msgDelayed" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
-        "replicated" : {
-          "type" : "boolean"
-        },
         "consumers" : {
           "type" : "array",
           "items" : {
             "$ref" : "#/definitions/ConsumerStats"
           }
         },
-        "nonContiguousDeletedMessagesRangesSerializedSize" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
-        "nonContiguousDeletedMessagesRanges" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
-        "backlogSize" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
-        "bytesOutCounter" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
-        "msgOutCounter" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
         "durable" : {
           "type" : "boolean"
         },
-        "msgThroughputOut" : {
-          "type" : "number",
-          "format" : "double"
-        },
-        "msgRateOut" : {
-          "type" : "number",
-          "format" : "double"
-        },
         "type" : {
           "type" : "string"
         }
@@ -23585,9 +23585,6 @@
     "TimeZone" : {
       "type" : "object",
       "properties" : {
-        "displayName" : {
-          "type" : "string"
-        },
         "dstsavings" : {
           "type" : "integer",
           "format" : "int32"
@@ -23598,12 +23595,23 @@
         },
         "id" : {
           "type" : "string"
+        },
+        "displayName" : {
+          "type" : "string"
         }
       }
     },
     "TopicStats" : {
       "type" : "object",
       "properties" : {
+        "offloadedStorageSize" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "nonContiguousDeletedMessagesRangesSerializedSize" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
         "bytesInCounter" : {
           "type" : "integer",
           "format" : "int64"
@@ -23612,26 +23620,21 @@
           "type" : "integer",
           "format" : "int64"
         },
-        "msgChunkPublished" : {
-          "type" : "boolean"
-        },
-        "nonContiguousDeletedMessagesRangesSerializedSize" : {
+        "bytesOutCounter" : {
           "type" : "integer",
-          "format" : "int32"
-        },
-        "deduplicationStatus" : {
-          "type" : "string"
+          "format" : "int64"
         },
-        "topicEpoch" : {
+        "msgOutCounter" : {
           "type" : "integer",
           "format" : "int64"
         },
-        "nonContiguousDeletedMessagesRanges" : {
-          "type" : "integer",
-          "format" : "int32"
+        "averageMsgSize" : {
+          "type" : "number",
+          "format" : "double"
         },
-        "compaction" : {
-          "$ref" : "#/definitions/CompactionStats"
+        "storageSize" : {
+          "type" : "integer",
+          "format" : "int64"
         },
         "backlogSize" : {
           "type" : "integer",
@@ -23653,47 +23656,44 @@
             "$ref" : "#/definitions/ReplicatorStats"
           }
         },
-        "bytesOutCounter" : {
-          "type" : "integer",
-          "format" : "int64"
+        "deduplicationStatus" : {
+          "type" : "string"
         },
-        "msgOutCounter" : {
+        "topicEpoch" : {
           "type" : "integer",
           "format" : "int64"
         },
-        "averageMsgSize" : {
-          "type" : "number",
-          "format" : "double"
-        },
-        "storageSize" : {
-          "type" : "integer",
-          "format" : "int64"
+        "compaction" : {
+          "$ref" : "#/definitions/CompactionStats"
         },
-        "offloadedStorageSize" : {
+        "nonContiguousDeletedMessagesRanges" : {
           "type" : "integer",
-          "format" : "int64"
+          "format" : "int32"
         },
-        "subscriptions" : {
-          "type" : "object",
-          "additionalProperties" : {
-            "$ref" : "#/definitions/SubscriptionStats"
-          }
+        "msgChunkPublished" : {
+          "type" : "boolean"
         },
-        "msgThroughputIn" : {
+        "msgRateIn" : {
           "type" : "number",
           "format" : "double"
         },
-        "msgThroughputOut" : {
+        "msgRateOut" : {
           "type" : "number",
           "format" : "double"
         },
-        "msgRateIn" : {
+        "msgThroughputIn" : {
           "type" : "number",
           "format" : "double"
         },
-        "msgRateOut" : {
+        "msgThroughputOut" : {
           "type" : "number",
           "format" : "double"
+        },
+        "subscriptions" : {
+          "type" : "object",
+          "additionalProperties" : {
+            "$ref" : "#/definitions/SubscriptionStats"
+          }
         }
       }
     },
@@ -24099,14 +24099,14 @@
         "sinks" : {
           "$ref" : "#/definitions/SinksWorkerService"
         },
+        "workerConfig" : {
+          "$ref" : "#/definitions/WorkerConfig"
+        },
         "functionsV2" : {
           "$ref" : "#/definitions/FunctionsV2WorkerService"
         },
         "workers" : {
           "$ref" : "#/definitions/WorkersWorkerService"
-        },
-        "workerConfig" : {
-          "$ref" : "#/definitions/WorkerConfig"
         }
       }
     },
@@ -24143,16 +24143,6 @@
         "issuerX500Principal" : {
           "$ref" : "#/definitions/X500Principal"
         },
-        "issuerDN" : {
-          "$ref" : "#/definitions/Principal"
-        },
-        "subjectDN" : {
-          "$ref" : "#/definitions/Principal"
-        },
-        "version" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
         "extendedKeyUsage" : {
           "type" : "array",
           "items" : {
@@ -24216,6 +24206,16 @@
             }
           }
         },
+        "issuerDN" : {
+          "$ref" : "#/definitions/Principal"
+        },
+        "subjectDN" : {
+          "$ref" : "#/definitions/Principal"
+        },
+        "version" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
         "serialNumber" : {
           "type" : "integer"
         },
diff --git a/content/swagger/2.10.0-SNAPSHOT/swaggerfunctions.json b/content/swagger/2.10.0-SNAPSHOT/swaggerfunctions.json
index 43a7291..92f3082 100644
--- a/content/swagger/2.10.0-SNAPSHOT/swaggerfunctions.json
+++ b/content/swagger/2.10.0-SNAPSHOT/swaggerfunctions.json
@@ -971,12 +971,12 @@
             "$ref" : "#/definitions/X509Certificate"
           }
         },
-        "httpAuthType" : {
-          "type" : "string"
-        },
         "peerAddress" : {
           "$ref" : "#/definitions/SocketAddress"
         },
+        "httpAuthType" : {
+          "type" : "string"
+        },
         "commandData" : {
           "type" : "string"
         }
@@ -1048,16 +1048,16 @@
     "CompletableFuture" : {
       "type" : "object",
       "properties" : {
-        "numberOfDependents" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
         "done" : {
           "type" : "boolean"
         },
         "cancelled" : {
           "type" : "boolean"
         },
+        "numberOfDependents" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
         "completedExceptionally" : {
           "type" : "boolean"
         }
@@ -1066,16 +1066,16 @@
     "CompletableFutureClusterData" : {
       "type" : "object",
       "properties" : {
-        "numberOfDependents" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
         "done" : {
           "type" : "boolean"
         },
         "cancelled" : {
           "type" : "boolean"
         },
+        "numberOfDependents" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
         "completedExceptionally" : {
           "type" : "boolean"
         }
@@ -1165,10 +1165,10 @@
         "displayName" : {
           "type" : "string"
         },
-        "numericCodeAsString" : {
+        "symbol" : {
           "type" : "string"
         },
-        "symbol" : {
+        "numericCodeAsString" : {
           "type" : "string"
         }
       }
@@ -1538,9 +1538,6 @@
     "FunctionInstanceStatsData" : {
       "type" : "object",
       "properties" : {
-        "oneMin" : {
-          "$ref" : "#/definitions/FunctionInstanceStatsDataBase"
-        },
         "lastInvocation" : {
           "type" : "integer",
           "format" : "int64"
@@ -1552,6 +1549,9 @@
             "format" : "double"
           }
         },
+        "oneMin" : {
+          "$ref" : "#/definitions/FunctionInstanceStatsDataBase"
+        },
         "receivedTotal" : {
           "type" : "integer",
           "format" : "int64"
@@ -1934,17 +1934,17 @@
         "formatName" : {
           "type" : "string"
         },
-        "characterEscapes" : {
-          "$ref" : "#/definitions/CharacterEscapes"
-        },
-        "rootValueSeparator" : {
-          "type" : "string"
-        },
         "inputDecorator" : {
           "$ref" : "#/definitions/InputDecorator"
         },
         "outputDecorator" : {
           "$ref" : "#/definitions/OutputDecorator"
+        },
+        "rootValueSeparator" : {
+          "type" : "string"
+        },
+        "characterEscapes" : {
+          "$ref" : "#/definitions/CharacterEscapes"
         }
       }
     },
@@ -1996,10 +1996,6 @@
     "JsonLocation" : {
       "type" : "object",
       "properties" : {
-        "byteOffset" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
         "sourceRef" : {
           "type" : "object"
         },
@@ -2014,6 +2010,10 @@
         "charOffset" : {
           "type" : "integer",
           "format" : "int64"
+        },
+        "byteOffset" : {
+          "type" : "integer",
+          "format" : "int64"
         }
       }
     },
@@ -2191,20 +2191,20 @@
     "JsonStreamContext" : {
       "type" : "object",
       "properties" : {
-        "currentName" : {
+        "typeDesc" : {
           "type" : "string"
         },
-        "currentValue" : {
-          "type" : "object"
-        },
-        "entryCount" : {
+        "currentIndex" : {
           "type" : "integer",
           "format" : "int32"
         },
-        "typeDesc" : {
+        "currentName" : {
           "type" : "string"
         },
-        "currentIndex" : {
+        "currentValue" : {
+          "type" : "object"
+        },
+        "entryCount" : {
           "type" : "integer",
           "format" : "int32"
         },
@@ -2284,6 +2284,13 @@
     "Message" : {
       "type" : "object",
       "properties" : {
+        "data" : {
+          "type" : "array",
+          "items" : {
+            "type" : "string",
+            "format" : "byte"
+          }
+        },
         "messageId" : {
           "$ref" : "#/definitions/MessageId"
         },
@@ -2308,12 +2315,8 @@
           "type" : "integer",
           "format" : "int64"
         },
-        "data" : {
-          "type" : "array",
-          "items" : {
-            "type" : "string",
-            "format" : "byte"
-          }
+        "topicName" : {
+          "type" : "string"
         },
         "replicated" : {
           "type" : "boolean"
@@ -2350,9 +2353,6 @@
             "format" : "byte"
           }
         },
-        "topicName" : {
-          "type" : "string"
-        },
         "value" : {
           "type" : "object"
         },
@@ -2455,12 +2455,12 @@
           "type" : "integer",
           "format" : "int32"
         },
+        "currency" : {
+          "$ref" : "#/definitions/Currency"
+        },
         "roundingMode" : {
           "type" : "string",
           "enum" : [ "UP", "DOWN", "CEILING", "FLOOR", "HALF_UP", "HALF_DOWN", "HALF_EVEN", "UNNECESSARY" ]
-        },
-        "currency" : {
-          "$ref" : "#/definitions/Currency"
         }
       }
     },
@@ -2707,6 +2707,14 @@
     "SerializationConfig" : {
       "type" : "object",
       "properties" : {
+        "serializationInclusion" : {
+          "type" : "string",
+          "enum" : [ "ALWAYS", "NON_NULL", "NON_ABSENT", "NON_EMPTY", "NON_DEFAULT", "USE_DEFAULTS" ]
+        },
+        "serializationFeatures" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
         "defaultPropertyInclusion" : {
           "$ref" : "#/definitions/Value"
         },
@@ -2719,14 +2727,6 @@
         "annotationIntrospector" : {
           "$ref" : "#/definitions/AnnotationIntrospector"
         },
-        "serializationInclusion" : {
-          "type" : "string",
-          "enum" : [ "ALWAYS", "NON_NULL", "NON_ABSENT", "NON_EMPTY", "NON_DEFAULT", "USE_DEFAULTS" ]
-        },
-        "serializationFeatures" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
         "rootName" : {
           "type" : "string"
         },
@@ -2818,9 +2818,6 @@
     "TimeZone" : {
       "type" : "object",
       "properties" : {
-        "displayName" : {
-          "type" : "string"
-        },
         "dstsavings" : {
           "type" : "integer",
           "format" : "int32"
@@ -2831,6 +2828,9 @@
         },
         "id" : {
           "type" : "string"
+        },
+        "displayName" : {
+          "type" : "string"
         }
       }
     },
@@ -2950,16 +2950,6 @@
         "issuerX500Principal" : {
           "$ref" : "#/definitions/X500Principal"
         },
-        "issuerDN" : {
-          "$ref" : "#/definitions/Principal"
-        },
-        "subjectDN" : {
-          "$ref" : "#/definitions/Principal"
-        },
-        "version" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
         "extendedKeyUsage" : {
           "type" : "array",
           "items" : {
@@ -3023,6 +3013,16 @@
             }
           }
         },
+        "issuerDN" : {
+          "$ref" : "#/definitions/Principal"
+        },
+        "subjectDN" : {
+          "$ref" : "#/definitions/Principal"
+        },
+        "version" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
         "serialNumber" : {
           "type" : "integer"
         },
diff --git a/content/swagger/2.10.0-SNAPSHOT/swaggerpackages.json b/content/swagger/2.10.0-SNAPSHOT/swaggerpackages.json
index cd74920..0cbc1e8 100644
--- a/content/swagger/2.10.0-SNAPSHOT/swaggerpackages.json
+++ b/content/swagger/2.10.0-SNAPSHOT/swaggerpackages.json
@@ -420,12 +420,12 @@
             "$ref" : "#/definitions/X509Certificate"
           }
         },
-        "httpAuthType" : {
-          "type" : "string"
-        },
         "peerAddress" : {
           "$ref" : "#/definitions/SocketAddress"
         },
+        "httpAuthType" : {
+          "type" : "string"
+        },
         "commandData" : {
           "type" : "string"
         }
@@ -497,16 +497,16 @@
     "CompletableFuture" : {
       "type" : "object",
       "properties" : {
-        "numberOfDependents" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
         "done" : {
           "type" : "boolean"
         },
         "cancelled" : {
           "type" : "boolean"
         },
+        "numberOfDependents" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
         "completedExceptionally" : {
           "type" : "boolean"
         }
@@ -515,16 +515,16 @@
     "CompletableFutureClusterData" : {
       "type" : "object",
       "properties" : {
-        "numberOfDependents" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
         "done" : {
           "type" : "boolean"
         },
         "cancelled" : {
           "type" : "boolean"
         },
+        "numberOfDependents" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
         "completedExceptionally" : {
           "type" : "boolean"
         }
@@ -550,10 +550,10 @@
         "displayName" : {
           "type" : "string"
         },
-        "numericCodeAsString" : {
+        "symbol" : {
           "type" : "string"
         },
-        "symbol" : {
+        "numericCodeAsString" : {
           "type" : "string"
         }
       }
@@ -808,17 +808,17 @@
         "formatName" : {
           "type" : "string"
         },
-        "characterEscapes" : {
-          "$ref" : "#/definitions/CharacterEscapes"
-        },
-        "rootValueSeparator" : {
-          "type" : "string"
-        },
         "inputDecorator" : {
           "$ref" : "#/definitions/InputDecorator"
         },
         "outputDecorator" : {
           "$ref" : "#/definitions/OutputDecorator"
+        },
+        "rootValueSeparator" : {
+          "type" : "string"
+        },
+        "characterEscapes" : {
+          "$ref" : "#/definitions/CharacterEscapes"
         }
       }
     },
@@ -870,10 +870,6 @@
     "JsonLocation" : {
       "type" : "object",
       "properties" : {
-        "byteOffset" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
         "sourceRef" : {
           "type" : "object"
         },
@@ -888,6 +884,10 @@
         "charOffset" : {
           "type" : "integer",
           "format" : "int64"
+        },
+        "byteOffset" : {
+          "type" : "integer",
+          "format" : "int64"
         }
       }
     },
@@ -1065,20 +1065,20 @@
     "JsonStreamContext" : {
       "type" : "object",
       "properties" : {
-        "currentName" : {
+        "typeDesc" : {
           "type" : "string"
         },
-        "currentValue" : {
-          "type" : "object"
-        },
-        "entryCount" : {
+        "currentIndex" : {
           "type" : "integer",
           "format" : "int32"
         },
-        "typeDesc" : {
+        "currentName" : {
           "type" : "string"
         },
-        "currentIndex" : {
+        "currentValue" : {
+          "type" : "object"
+        },
+        "entryCount" : {
           "type" : "integer",
           "format" : "int32"
         },
@@ -1236,12 +1236,12 @@
           "type" : "integer",
           "format" : "int32"
         },
+        "currency" : {
+          "$ref" : "#/definitions/Currency"
+        },
         "roundingMode" : {
           "type" : "string",
           "enum" : [ "UP", "DOWN", "CEILING", "FLOOR", "HALF_UP", "HALF_DOWN", "HALF_EVEN", "UNNECESSARY" ]
-        },
-        "currency" : {
-          "$ref" : "#/definitions/Currency"
         }
       }
     },
@@ -1424,6 +1424,14 @@
     "SerializationConfig" : {
       "type" : "object",
       "properties" : {
+        "serializationInclusion" : {
+          "type" : "string",
+          "enum" : [ "ALWAYS", "NON_NULL", "NON_ABSENT", "NON_EMPTY", "NON_DEFAULT", "USE_DEFAULTS" ]
+        },
+        "serializationFeatures" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
         "defaultPropertyInclusion" : {
           "$ref" : "#/definitions/Value"
         },
@@ -1436,14 +1444,6 @@
         "annotationIntrospector" : {
           "$ref" : "#/definitions/AnnotationIntrospector"
         },
-        "serializationInclusion" : {
-          "type" : "string",
-          "enum" : [ "ALWAYS", "NON_NULL", "NON_ABSENT", "NON_EMPTY", "NON_DEFAULT", "USE_DEFAULTS" ]
-        },
-        "serializationFeatures" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
         "rootName" : {
           "type" : "string"
         },
@@ -1538,9 +1538,6 @@
     "TimeZone" : {
       "type" : "object",
       "properties" : {
-        "displayName" : {
-          "type" : "string"
-        },
         "dstsavings" : {
           "type" : "integer",
           "format" : "int32"
@@ -1551,6 +1548,9 @@
         },
         "id" : {
           "type" : "string"
+        },
+        "displayName" : {
+          "type" : "string"
         }
       }
     },
@@ -1622,16 +1622,6 @@
         "issuerX500Principal" : {
           "$ref" : "#/definitions/X500Principal"
         },
-        "issuerDN" : {
-          "$ref" : "#/definitions/Principal"
-        },
-        "subjectDN" : {
-          "$ref" : "#/definitions/Principal"
-        },
-        "version" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
         "extendedKeyUsage" : {
           "type" : "array",
           "items" : {
@@ -1695,6 +1685,16 @@
             }
           }
         },
+        "issuerDN" : {
+          "$ref" : "#/definitions/Principal"
+        },
+        "subjectDN" : {
+          "$ref" : "#/definitions/Principal"
+        },
+        "version" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
         "serialNumber" : {
           "type" : "integer"
         },
diff --git a/content/swagger/2.10.0-SNAPSHOT/swaggersink.json b/content/swagger/2.10.0-SNAPSHOT/swaggersink.json
index 2a37a37..fb21a09 100644
--- a/content/swagger/2.10.0-SNAPSHOT/swaggersink.json
+++ b/content/swagger/2.10.0-SNAPSHOT/swaggersink.json
@@ -810,12 +810,12 @@
             "$ref" : "#/definitions/X509Certificate"
           }
         },
-        "httpAuthType" : {
-          "type" : "string"
-        },
         "peerAddress" : {
           "$ref" : "#/definitions/SocketAddress"
         },
+        "httpAuthType" : {
+          "type" : "string"
+        },
         "commandData" : {
           "type" : "string"
         }
@@ -887,16 +887,16 @@
     "CompletableFuture" : {
       "type" : "object",
       "properties" : {
-        "numberOfDependents" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
         "done" : {
           "type" : "boolean"
         },
         "cancelled" : {
           "type" : "boolean"
         },
+        "numberOfDependents" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
         "completedExceptionally" : {
           "type" : "boolean"
         }
@@ -905,16 +905,16 @@
     "CompletableFutureClusterData" : {
       "type" : "object",
       "properties" : {
-        "numberOfDependents" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
         "done" : {
           "type" : "boolean"
         },
         "cancelled" : {
           "type" : "boolean"
         },
+        "numberOfDependents" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
         "completedExceptionally" : {
           "type" : "boolean"
         }
@@ -1044,10 +1044,10 @@
         "displayName" : {
           "type" : "string"
         },
-        "numericCodeAsString" : {
+        "symbol" : {
           "type" : "string"
         },
-        "symbol" : {
+        "numericCodeAsString" : {
           "type" : "string"
         }
       }
@@ -1314,17 +1314,17 @@
         "formatName" : {
           "type" : "string"
         },
-        "characterEscapes" : {
-          "$ref" : "#/definitions/CharacterEscapes"
-        },
-        "rootValueSeparator" : {
-          "type" : "string"
-        },
         "inputDecorator" : {
           "$ref" : "#/definitions/InputDecorator"
         },
         "outputDecorator" : {
           "$ref" : "#/definitions/OutputDecorator"
+        },
+        "rootValueSeparator" : {
+          "type" : "string"
+        },
+        "characterEscapes" : {
+          "$ref" : "#/definitions/CharacterEscapes"
         }
       }
     },
@@ -1376,10 +1376,6 @@
     "JsonLocation" : {
       "type" : "object",
       "properties" : {
-        "byteOffset" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
         "sourceRef" : {
           "type" : "object"
         },
@@ -1394,6 +1390,10 @@
         "charOffset" : {
           "type" : "integer",
           "format" : "int64"
+        },
+        "byteOffset" : {
+          "type" : "integer",
+          "format" : "int64"
         }
       }
     },
@@ -1571,20 +1571,20 @@
     "JsonStreamContext" : {
       "type" : "object",
       "properties" : {
-        "currentName" : {
+        "typeDesc" : {
           "type" : "string"
         },
-        "currentValue" : {
-          "type" : "object"
-        },
-        "entryCount" : {
+        "currentIndex" : {
           "type" : "integer",
           "format" : "int32"
         },
-        "typeDesc" : {
+        "currentName" : {
           "type" : "string"
         },
-        "currentIndex" : {
+        "currentValue" : {
+          "type" : "object"
+        },
+        "entryCount" : {
           "type" : "integer",
           "format" : "int32"
         },
@@ -1742,12 +1742,12 @@
           "type" : "integer",
           "format" : "int32"
         },
+        "currency" : {
+          "$ref" : "#/definitions/Currency"
+        },
         "roundingMode" : {
           "type" : "string",
           "enum" : [ "UP", "DOWN", "CEILING", "FLOOR", "HALF_UP", "HALF_DOWN", "HALF_EVEN", "UNNECESSARY" ]
-        },
-        "currency" : {
-          "$ref" : "#/definitions/Currency"
         }
       }
     },
@@ -1922,6 +1922,14 @@
     "SerializationConfig" : {
       "type" : "object",
       "properties" : {
+        "serializationInclusion" : {
+          "type" : "string",
+          "enum" : [ "ALWAYS", "NON_NULL", "NON_ABSENT", "NON_EMPTY", "NON_DEFAULT", "USE_DEFAULTS" ]
+        },
+        "serializationFeatures" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
         "defaultPropertyInclusion" : {
           "$ref" : "#/definitions/Value"
         },
@@ -1934,14 +1942,6 @@
         "annotationIntrospector" : {
           "$ref" : "#/definitions/AnnotationIntrospector"
         },
-        "serializationInclusion" : {
-          "type" : "string",
-          "enum" : [ "ALWAYS", "NON_NULL", "NON_ABSENT", "NON_EMPTY", "NON_DEFAULT", "USE_DEFAULTS" ]
-        },
-        "serializationFeatures" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
         "rootName" : {
           "type" : "string"
         },
@@ -2227,9 +2227,6 @@
     "TimeZone" : {
       "type" : "object",
       "properties" : {
-        "displayName" : {
-          "type" : "string"
-        },
         "dstsavings" : {
           "type" : "integer",
           "format" : "int32"
@@ -2240,6 +2237,9 @@
         },
         "id" : {
           "type" : "string"
+        },
+        "displayName" : {
+          "type" : "string"
         }
       }
     },
@@ -2321,16 +2321,6 @@
         "issuerX500Principal" : {
           "$ref" : "#/definitions/X500Principal"
         },
-        "issuerDN" : {
-          "$ref" : "#/definitions/Principal"
-        },
-        "subjectDN" : {
-          "$ref" : "#/definitions/Principal"
-        },
-        "version" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
         "extendedKeyUsage" : {
           "type" : "array",
           "items" : {
@@ -2394,6 +2384,16 @@
             }
           }
         },
+        "issuerDN" : {
+          "$ref" : "#/definitions/Principal"
+        },
+        "subjectDN" : {
+          "$ref" : "#/definitions/Principal"
+        },
+        "version" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
         "serialNumber" : {
           "type" : "integer"
         },
diff --git a/content/swagger/2.10.0-SNAPSHOT/swaggersource.json b/content/swagger/2.10.0-SNAPSHOT/swaggersource.json
index 71d111e..190954f 100644
--- a/content/swagger/2.10.0-SNAPSHOT/swaggersource.json
+++ b/content/swagger/2.10.0-SNAPSHOT/swaggersource.json
@@ -813,12 +813,12 @@
             "$ref" : "#/definitions/X509Certificate"
           }
         },
-        "httpAuthType" : {
-          "type" : "string"
-        },
         "peerAddress" : {
           "$ref" : "#/definitions/SocketAddress"
         },
+        "httpAuthType" : {
+          "type" : "string"
+        },
         "commandData" : {
           "type" : "string"
         }
@@ -904,16 +904,16 @@
     "CompletableFuture" : {
       "type" : "object",
       "properties" : {
-        "numberOfDependents" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
         "done" : {
           "type" : "boolean"
         },
         "cancelled" : {
           "type" : "boolean"
         },
+        "numberOfDependents" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
         "completedExceptionally" : {
           "type" : "boolean"
         }
@@ -922,16 +922,16 @@
     "CompletableFutureClusterData" : {
       "type" : "object",
       "properties" : {
-        "numberOfDependents" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
         "done" : {
           "type" : "boolean"
         },
         "cancelled" : {
           "type" : "boolean"
         },
+        "numberOfDependents" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
         "completedExceptionally" : {
           "type" : "boolean"
         }
@@ -1025,10 +1025,10 @@
         "displayName" : {
           "type" : "string"
         },
-        "numericCodeAsString" : {
+        "symbol" : {
           "type" : "string"
         },
-        "symbol" : {
+        "numericCodeAsString" : {
           "type" : "string"
         }
       }
@@ -1295,17 +1295,17 @@
         "formatName" : {
           "type" : "string"
         },
-        "characterEscapes" : {
-          "$ref" : "#/definitions/CharacterEscapes"
-        },
-        "rootValueSeparator" : {
-          "type" : "string"
-        },
         "inputDecorator" : {
           "$ref" : "#/definitions/InputDecorator"
         },
         "outputDecorator" : {
           "$ref" : "#/definitions/OutputDecorator"
+        },
+        "rootValueSeparator" : {
+          "type" : "string"
+        },
+        "characterEscapes" : {
+          "$ref" : "#/definitions/CharacterEscapes"
         }
       }
     },
@@ -1357,10 +1357,6 @@
     "JsonLocation" : {
       "type" : "object",
       "properties" : {
-        "byteOffset" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
         "sourceRef" : {
           "type" : "object"
         },
@@ -1375,6 +1371,10 @@
         "charOffset" : {
           "type" : "integer",
           "format" : "int64"
+        },
+        "byteOffset" : {
+          "type" : "integer",
+          "format" : "int64"
         }
       }
     },
@@ -1552,20 +1552,20 @@
     "JsonStreamContext" : {
       "type" : "object",
       "properties" : {
-        "currentName" : {
+        "typeDesc" : {
           "type" : "string"
         },
-        "currentValue" : {
-          "type" : "object"
-        },
-        "entryCount" : {
+        "currentIndex" : {
           "type" : "integer",
           "format" : "int32"
         },
-        "typeDesc" : {
+        "currentName" : {
           "type" : "string"
         },
-        "currentIndex" : {
+        "currentValue" : {
+          "type" : "object"
+        },
+        "entryCount" : {
           "type" : "integer",
           "format" : "int32"
         },
@@ -1723,12 +1723,12 @@
           "type" : "integer",
           "format" : "int32"
         },
+        "currency" : {
+          "$ref" : "#/definitions/Currency"
+        },
         "roundingMode" : {
           "type" : "string",
           "enum" : [ "UP", "DOWN", "CEILING", "FLOOR", "HALF_UP", "HALF_DOWN", "HALF_EVEN", "UNNECESSARY" ]
-        },
-        "currency" : {
-          "$ref" : "#/definitions/Currency"
         }
       }
     },
@@ -1925,6 +1925,14 @@
     "SerializationConfig" : {
       "type" : "object",
       "properties" : {
+        "serializationInclusion" : {
+          "type" : "string",
+          "enum" : [ "ALWAYS", "NON_NULL", "NON_ABSENT", "NON_EMPTY", "NON_DEFAULT", "USE_DEFAULTS" ]
+        },
+        "serializationFeatures" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
         "defaultPropertyInclusion" : {
           "$ref" : "#/definitions/Value"
         },
@@ -1937,14 +1945,6 @@
         "annotationIntrospector" : {
           "$ref" : "#/definitions/AnnotationIntrospector"
         },
-        "serializationInclusion" : {
-          "type" : "string",
-          "enum" : [ "ALWAYS", "NON_NULL", "NON_ABSENT", "NON_EMPTY", "NON_DEFAULT", "USE_DEFAULTS" ]
-        },
-        "serializationFeatures" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
         "rootName" : {
           "type" : "string"
         },
@@ -2184,9 +2184,6 @@
     "TimeZone" : {
       "type" : "object",
       "properties" : {
-        "displayName" : {
-          "type" : "string"
-        },
         "dstsavings" : {
           "type" : "integer",
           "format" : "int32"
@@ -2197,6 +2194,9 @@
         },
         "id" : {
           "type" : "string"
+        },
+        "displayName" : {
+          "type" : "string"
         }
       }
     },
@@ -2278,16 +2278,6 @@
         "issuerX500Principal" : {
           "$ref" : "#/definitions/X500Principal"
         },
-        "issuerDN" : {
-          "$ref" : "#/definitions/Principal"
-        },
-        "subjectDN" : {
-          "$ref" : "#/definitions/Principal"
-        },
-        "version" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
         "extendedKeyUsage" : {
           "type" : "array",
           "items" : {
@@ -2351,6 +2341,16 @@
             }
           }
         },
+        "issuerDN" : {
+          "$ref" : "#/definitions/Principal"
+        },
+        "subjectDN" : {
+          "$ref" : "#/definitions/Principal"
+        },
+        "version" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
         "serialNumber" : {
           "type" : "integer"
         },
diff --git a/content/swagger/2.10.0-SNAPSHOT/v2/swagger.json b/content/swagger/2.10.0-SNAPSHOT/v2/swagger.json
index 5e9c1e7..2cfa1da 100644
--- a/content/swagger/2.10.0-SNAPSHOT/v2/swagger.json
+++ b/content/swagger/2.10.0-SNAPSHOT/v2/swagger.json
@@ -23758,12 +23758,12 @@
                         "$ref": "#/definitions/X509Certificate"
                     }
                 },
-                "httpAuthType": {
-                    "type": "string"
-                },
                 "peerAddress": {
                     "$ref": "#/definitions/SocketAddress"
                 },
+                "httpAuthType": {
+                    "type": "string"
+                },
                 "commandData": {
                     "type": "string"
                 }
@@ -23797,15 +23797,15 @@
         "AutoTopicCreationOverride": {
             "type": "object",
             "properties": {
-                "topicType": {
-                    "type": "string"
-                },
                 "defaultNumPartitions": {
                     "type": "integer",
                     "format": "int32"
                 },
                 "allowAutoTopicCreation": {
                     "type": "boolean"
+                },
+                "topicType": {
+                    "type": "string"
                 }
             }
         },
@@ -24088,16 +24088,16 @@
         "CompletableFuture": {
             "type": "object",
             "properties": {
-                "numberOfDependents": {
-                    "type": "integer",
-                    "format": "int32"
-                },
                 "done": {
                     "type": "boolean"
                 },
                 "cancelled": {
                     "type": "boolean"
                 },
+                "numberOfDependents": {
+                    "type": "integer",
+                    "format": "int32"
+                },
                 "completedExceptionally": {
                     "type": "boolean"
                 }
@@ -24106,16 +24106,16 @@
         "CompletableFutureClusterData": {
             "type": "object",
             "properties": {
-                "numberOfDependents": {
-                    "type": "integer",
-                    "format": "int32"
-                },
                 "done": {
                     "type": "boolean"
                 },
                 "cancelled": {
                     "type": "boolean"
                 },
+                "numberOfDependents": {
+                    "type": "integer",
+                    "format": "int32"
+                },
                 "completedExceptionally": {
                     "type": "boolean"
                 }
@@ -24124,16 +24124,16 @@
         "CompletableFuturePartitionedTopicMetadata": {
             "type": "object",
             "properties": {
-                "numberOfDependents": {
-                    "type": "integer",
-                    "format": "int32"
-                },
                 "done": {
                     "type": "boolean"
                 },
                 "cancelled": {
                     "type": "boolean"
                 },
+                "numberOfDependents": {
+                    "type": "integer",
+                    "format": "int32"
+                },
                 "completedExceptionally": {
                     "type": "boolean"
                 }
@@ -24171,9 +24171,31 @@
                         "type": "string"
                     }
                 },
+                "bytesOutCounter": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "msgOutCounter": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "chunkedMessageRate": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "connectedSince": {
+                    "type": "string"
+                },
+                "clientVersion": {
+                    "type": "string"
+                },
                 "consumerName": {
                     "type": "string"
                 },
+                "msgRateRedeliver": {
+                    "type": "number",
+                    "format": "double"
+                },
                 "unackedMessages": {
                     "type": "integer",
                     "format": "int32"
@@ -24206,36 +24228,14 @@
                         "type": "string"
                     }
                 },
-                "chunkedMessageRate": {
-                    "type": "number",
-                    "format": "double"
-                },
-                "connectedSince": {
-                    "type": "string"
-                },
-                "clientVersion": {
-                    "type": "string"
-                },
-                "msgRateRedeliver": {
+                "msgRateOut": {
                     "type": "number",
                     "format": "double"
                 },
-                "bytesOutCounter": {
-                    "type": "integer",
-                    "format": "int64"
-                },
-                "msgOutCounter": {
-                    "type": "integer",
-                    "format": "int64"
-                },
                 "msgThroughputOut": {
                     "type": "number",
                     "format": "double"
                 },
-                "msgRateOut": {
-                    "type": "number",
-                    "format": "double"
-                },
                 "address": {
                     "type": "string"
                 }
@@ -24261,10 +24261,10 @@
                 "displayName": {
                     "type": "string"
                 },
-                "numericCodeAsString": {
+                "symbol": {
                     "type": "string"
                 },
-                "symbol": {
+                "numericCodeAsString": {
                     "type": "string"
                 }
             }
@@ -24564,9 +24564,6 @@
         "FunctionInstanceStatsData": {
             "type": "object",
             "properties": {
-                "oneMin": {
-                    "$ref": "#/definitions/FunctionInstanceStatsDataBase"
-                },
                 "lastInvocation": {
                     "type": "integer",
                     "format": "int64"
@@ -24578,6 +24575,9 @@
                         "format": "double"
                     }
                 },
+                "oneMin": {
+                    "$ref": "#/definitions/FunctionInstanceStatsDataBase"
+                },
                 "receivedTotal": {
                     "type": "integer",
                     "format": "int64"
@@ -24889,17 +24889,17 @@
                 "formatName": {
                     "type": "string"
                 },
-                "characterEscapes": {
-                    "$ref": "#/definitions/CharacterEscapes"
-                },
-                "rootValueSeparator": {
-                    "type": "string"
-                },
                 "inputDecorator": {
                     "$ref": "#/definitions/InputDecorator"
                 },
                 "outputDecorator": {
                     "$ref": "#/definitions/OutputDecorator"
+                },
+                "rootValueSeparator": {
+                    "type": "string"
+                },
+                "characterEscapes": {
+                    "$ref": "#/definitions/CharacterEscapes"
                 }
             }
         },
@@ -24951,10 +24951,6 @@
         "JsonLocation": {
             "type": "object",
             "properties": {
-                "byteOffset": {
-                    "type": "integer",
-                    "format": "int64"
-                },
                 "sourceRef": {
                     "type": "object"
                 },
@@ -24969,6 +24965,10 @@
                 "charOffset": {
                     "type": "integer",
                     "format": "int64"
+                },
+                "byteOffset": {
+                    "type": "integer",
+                    "format": "int64"
                 }
             }
         },
@@ -25181,20 +25181,20 @@
         "JsonStreamContext": {
             "type": "object",
             "properties": {
-                "currentName": {
+                "typeDesc": {
                     "type": "string"
                 },
-                "currentValue": {
-                    "type": "object"
-                },
-                "entryCount": {
+                "currentIndex": {
                     "type": "integer",
                     "format": "int32"
                 },
-                "typeDesc": {
+                "currentName": {
                     "type": "string"
                 },
-                "currentIndex": {
+                "currentValue": {
+                    "type": "object"
+                },
+                "entryCount": {
                     "type": "integer",
                     "format": "int32"
                 },
@@ -25487,28 +25487,19 @@
                     "type": "number",
                     "format": "double"
                 },
-                "underLoaded": {
-                    "type": "boolean"
-                },
-                "overLoaded": {
-                    "type": "boolean"
-                },
-                "loadReportType": {
-                    "type": "string"
-                },
-                "cpu": {
+                "bandwidthIn": {
                     "$ref": "#/definitions/ResourceUsage"
                 },
-                "memory": {
+                "bandwidthOut": {
                     "$ref": "#/definitions/ResourceUsage"
                 },
-                "directMemory": {
+                "memory": {
                     "$ref": "#/definitions/ResourceUsage"
                 },
-                "bandwidthIn": {
+                "cpu": {
                     "$ref": "#/definitions/ResourceUsage"
                 },
-                "bandwidthOut": {
+                "directMemory": {
                     "$ref": "#/definitions/ResourceUsage"
                 },
                 "lastUpdate": {
@@ -25522,6 +25513,15 @@
                 "msgThroughputOut": {
                     "type": "number",
                     "format": "double"
+                },
+                "underLoaded": {
+                    "type": "boolean"
+                },
+                "overLoaded": {
+                    "type": "boolean"
+                },
+                "loadReportType": {
+                    "type": "string"
                 }
             }
         },
@@ -25817,6 +25817,10 @@
                         "type": "string"
                     }
                 },
+                "averageMsgSize": {
+                    "type": "number",
+                    "format": "double"
+                },
                 "accessMode": {
                     "type": "string",
                     "enum": [
@@ -25839,20 +25843,16 @@
                 "clientVersion": {
                     "type": "string"
                 },
-                "averageMsgSize": {
+                "msgRateIn": {
                     "type": "number",
                     "format": "double"
                 },
-                "producerName": {
-                    "type": "string"
-                },
                 "msgThroughputIn": {
                     "type": "number",
                     "format": "double"
                 },
-                "msgRateIn": {
-                    "type": "number",
-                    "format": "double"
+                "producerName": {
+                    "type": "string"
                 },
                 "address": {
                     "type": "string"
@@ -25893,19 +25893,19 @@
                 "outboundConnectedSince": {
                     "type": "string"
                 },
-                "msgThroughputIn": {
+                "msgRateIn": {
                     "type": "number",
                     "format": "double"
                 },
-                "msgThroughputOut": {
+                "msgRateOut": {
                     "type": "number",
                     "format": "double"
                 },
-                "msgRateIn": {
+                "msgThroughputIn": {
                     "type": "number",
                     "format": "double"
                 },
-                "msgRateOut": {
+                "msgThroughputOut": {
                     "type": "number",
                     "format": "double"
                 }
@@ -25918,10 +25918,53 @@
                     "type": "number",
                     "format": "double"
                 },
+                "nonContiguousDeletedMessagesRangesSerializedSize": {
+                    "type": "integer",
+                    "format": "int32"
+                },
+                "bytesOutCounter": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "msgOutCounter": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "backlogSize": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "nonContiguousDeletedMessagesRanges": {
+                    "type": "integer",
+                    "format": "int32"
+                },
+                "chunkedMessageRate": {
+                    "type": "integer",
+                    "format": "int32"
+                },
+                "msgRateExpired": {
+                    "type": "number",
+                    "format": "double"
+                },
                 "msgBacklog": {
                     "type": "integer",
                     "format": "int64"
                 },
+                "msgRateRedeliver": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "msgBacklogNoDelayed": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "blockedSubscriptionOnUnackedMsgs": {
+                    "type": "boolean"
+                },
+                "msgDelayed": {
+                    "type": "integer",
+                    "format": "int64"
+                },
                 "unackedMessages": {
                     "type": "integer",
                     "format": "int64"
@@ -25965,68 +26008,25 @@
                         "type": "string"
                     }
                 },
-                "chunkedMessageRate": {
-                    "type": "integer",
-                    "format": "int32"
+                "replicated": {
+                    "type": "boolean"
                 },
-                "msgRateExpired": {
+                "msgRateOut": {
                     "type": "number",
                     "format": "double"
                 },
-                "msgRateRedeliver": {
+                "msgThroughputOut": {
                     "type": "number",
                     "format": "double"
                 },
-                "msgBacklogNoDelayed": {
-                    "type": "integer",
-                    "format": "int64"
-                },
-                "blockedSubscriptionOnUnackedMsgs": {
-                    "type": "boolean"
-                },
-                "msgDelayed": {
-                    "type": "integer",
-                    "format": "int64"
-                },
-                "replicated": {
-                    "type": "boolean"
-                },
                 "consumers": {
                     "type": "array",
                     "items": {
                         "$ref": "#/definitions/ConsumerStats"
                     }
                 },
-                "nonContiguousDeletedMessagesRangesSerializedSize": {
-                    "type": "integer",
-                    "format": "int32"
-                },
-                "nonContiguousDeletedMessagesRanges": {
-                    "type": "integer",
-                    "format": "int32"
-                },
-                "backlogSize": {
-                    "type": "integer",
-                    "format": "int64"
-                },
-                "bytesOutCounter": {
-                    "type": "integer",
-                    "format": "int64"
-                },
-                "msgOutCounter": {
-                    "type": "integer",
-                    "format": "int64"
-                },
-                "durable": {
-                    "type": "boolean"
-                },
-                "msgThroughputOut": {
-                    "type": "number",
-                    "format": "double"
-                },
-                "msgRateOut": {
-                    "type": "number",
-                    "format": "double"
+                "durable": {
+                    "type": "boolean"
                 },
                 "type": {
                     "type": "string"
@@ -26036,10 +26036,6 @@
         "NonPersistentTopicStats": {
             "type": "object",
             "properties": {
-                "msgDropRate": {
-                    "type": "number",
-                    "format": "double"
-                },
                 "publishers": {
                     "type": "array",
                     "items": {
@@ -26052,49 +26048,32 @@
                         "$ref": "#/definitions/NonPersistentReplicatorStats"
                     }
                 },
+                "msgDropRate": {
+                    "type": "number",
+                    "format": "double"
+                },
                 "subscriptions": {
                     "type": "object",
                     "additionalProperties": {
                         "$ref": "#/definitions/NonPersistentSubscriptionStats"
                     }
                 },
-                "bytesInCounter": {
-                    "type": "integer",
-                    "format": "int64"
-                },
-                "msgInCounter": {
+                "offloadedStorageSize": {
                     "type": "integer",
                     "format": "int64"
                 },
-                "msgChunkPublished": {
-                    "type": "boolean"
-                },
                 "nonContiguousDeletedMessagesRangesSerializedSize": {
                     "type": "integer",
                     "format": "int32"
                 },
-                "deduplicationStatus": {
-                    "type": "string"
-                },
-                "topicEpoch": {
+                "bytesInCounter": {
                     "type": "integer",
                     "format": "int64"
                 },
-                "nonContiguousDeletedMessagesRanges": {
-                    "type": "integer",
-                    "format": "int32"
-                },
-                "compaction": {
-                    "$ref": "#/definitions/CompactionStats"
-                },
-                "backlogSize": {
+                "msgInCounter": {
                     "type": "integer",
                     "format": "int64"
                 },
-                "waitingPublishers": {
-                    "type": "integer",
-                    "format": "int32"
-                },
                 "bytesOutCounter": {
                     "type": "integer",
                     "format": "int64"
@@ -26111,23 +26090,44 @@
                     "type": "integer",
                     "format": "int64"
                 },
-                "offloadedStorageSize": {
+                "backlogSize": {
                     "type": "integer",
                     "format": "int64"
                 },
-                "msgThroughputIn": {
+                "waitingPublishers": {
+                    "type": "integer",
+                    "format": "int32"
+                },
+                "deduplicationStatus": {
+                    "type": "string"
+                },
+                "topicEpoch": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "compaction": {
+                    "$ref": "#/definitions/CompactionStats"
+                },
+                "nonContiguousDeletedMessagesRanges": {
+                    "type": "integer",
+                    "format": "int32"
+                },
+                "msgChunkPublished": {
+                    "type": "boolean"
+                },
+                "msgRateIn": {
                     "type": "number",
                     "format": "double"
                 },
-                "msgThroughputOut": {
+                "msgRateOut": {
                     "type": "number",
                     "format": "double"
                 },
-                "msgRateIn": {
+                "msgThroughputIn": {
                     "type": "number",
                     "format": "double"
                 },
-                "msgRateOut": {
+                "msgThroughputOut": {
                     "type": "number",
                     "format": "double"
                 }
@@ -26161,6 +26161,9 @@
                     "type": "integer",
                     "format": "int32"
                 },
+                "currency": {
+                    "$ref": "#/definitions/Currency"
+                },
                 "roundingMode": {
                     "type": "string",
                     "enum": [
@@ -26173,9 +26176,6 @@
                         "HALF_EVEN",
                         "UNNECESSARY"
                     ]
-                },
-                "currency": {
-                    "$ref": "#/definitions/Currency"
                 }
             }
         },
@@ -26243,9 +26243,53 @@
         "OffloadPolicies": {
             "type": "object",
             "properties": {
+                "fileSystemURI": {
+                    "type": "string"
+                },
+                "offloadersDirectory": {
+                    "type": "string"
+                },
+                "managedLedgerOffloadDriver": {
+                    "type": "string"
+                },
+                "managedLedgerOffloadMaxThreads": {
+                    "type": "integer",
+                    "format": "int32"
+                },
+                "managedLedgerOffloadPrefetchRounds": {
+                    "type": "integer",
+                    "format": "int32"
+                },
+                "managedLedgerOffloadedReadPriority": {
+                    "type": "string",
+                    "enum": [
+                        "BOOKKEEPER_FIRST",
+                        "TIERED_STORAGE_FIRST"
+                    ]
+                },
                 "s3ManagedLedgerOffloadRegion": {
                     "type": "string"
                 },
+                "s3ManagedLedgerOffloadBucket": {
+                    "type": "string"
+                },
+                "s3ManagedLedgerOffloadServiceEndpoint": {
+                    "type": "string"
+                },
+                "s3ManagedLedgerOffloadMaxBlockSizeInBytes": {
+                    "type": "integer",
+                    "format": "int32"
+                },
+                "s3ManagedLedgerOffloadReadBufferSizeInBytes": {
+                    "type": "integer",
+                    "format": "int32"
+                },
+                "s3ManagedLedgerOffloadCredentialId": {
+                    "type": "string"
+                },
+                "s3ManagedLedgerOffloadCredentialSecret": {
+                    "type": "string"
+                },
                 "s3ManagedLedgerOffloadRole": {
                     "type": "string"
                 },
@@ -26289,36 +26333,6 @@
                     "type": "integer",
                     "format": "int32"
                 },
-                "s3ManagedLedgerOffloadMaxBlockSizeInBytes": {
-                    "type": "integer",
-                    "format": "int32"
-                },
-                "fileSystemURI": {
-                    "type": "string"
-                },
-                "s3ManagedLedgerOffloadBucket": {
-                    "type": "string"
-                },
-                "managedLedgerOffloadedReadPriority": {
-                    "type": "string",
-                    "enum": [
-                        "BOOKKEEPER_FIRST",
-                        "TIERED_STORAGE_FIRST"
-                    ]
-                },
-                "s3ManagedLedgerOffloadReadBufferSizeInBytes": {
-                    "type": "integer",
-                    "format": "int32"
-                },
-                "s3ManagedLedgerOffloadCredentialId": {
-                    "type": "string"
-                },
-                "s3ManagedLedgerOffloadCredentialSecret": {
-                    "type": "string"
-                },
-                "s3ManagedLedgerOffloadServiceEndpoint": {
-                    "type": "string"
-                },
                 "managedLedgerOffloadThresholdInBytes": {
                     "type": "integer",
                     "format": "int64"
@@ -26326,20 +26340,6 @@
                 "managedLedgerOffloadDeletionLagInMillis": {
                     "type": "integer",
                     "format": "int64"
-                },
-                "managedLedgerOffloadDriver": {
-                    "type": "string"
-                },
-                "offloadersDirectory": {
-                    "type": "string"
-                },
-                "managedLedgerOffloadMaxThreads": {
-                    "type": "integer",
-                    "format": "int32"
-                },
-                "managedLedgerOffloadPrefetchRounds": {
-                    "type": "integer",
-                    "format": "int32"
                 }
             }
         },
@@ -27139,6 +27139,10 @@
                         "type": "string"
                     }
                 },
+                "averageMsgSize": {
+                    "type": "number",
+                    "format": "double"
+                },
                 "accessMode": {
                     "type": "string",
                     "enum": [
@@ -27161,20 +27165,16 @@
                 "clientVersion": {
                     "type": "string"
                 },
-                "averageMsgSize": {
+                "msgRateIn": {
                     "type": "number",
                     "format": "double"
                 },
-                "producerName": {
-                    "type": "string"
-                },
                 "msgThroughputIn": {
                     "type": "number",
                     "format": "double"
                 },
-                "msgRateIn": {
-                    "type": "number",
-                    "format": "double"
+                "producerName": {
+                    "type": "string"
                 },
                 "address": {
                     "type": "string"
@@ -27219,19 +27219,19 @@
                 "outboundConnectedSince": {
                     "type": "string"
                 },
-                "msgThroughputIn": {
+                "msgRateIn": {
                     "type": "number",
                     "format": "double"
                 },
-                "msgThroughputOut": {
+                "msgRateOut": {
                     "type": "number",
                     "format": "double"
                 },
-                "msgRateIn": {
+                "msgThroughputIn": {
                     "type": "number",
                     "format": "double"
                 },
-                "msgRateOut": {
+                "msgThroughputOut": {
                     "type": "number",
                     "format": "double"
                 }
@@ -27328,11 +27328,11 @@
         "ResourceUnit": {
             "type": "object",
             "properties": {
-                "availableResource": {
-                    "$ref": "#/definitions/ResourceDescription"
-                },
                 "resourceId": {
                     "type": "string"
+                },
+                "availableResource": {
+                    "$ref": "#/definitions/ResourceDescription"
                 }
             }
         },
@@ -27385,18 +27385,6 @@
         "SerializationConfig": {
             "type": "object",
             "properties": {
-                "defaultPropertyInclusion": {
-                    "$ref": "#/definitions/Value"
-                },
-                "filterProvider": {
-                    "$ref": "#/definitions/FilterProvider"
-                },
-                "defaultPrettyPrinter": {
-                    "$ref": "#/definitions/PrettyPrinter"
-                },
-                "annotationIntrospector": {
-                    "$ref": "#/definitions/AnnotationIntrospector"
-                },
                 "serializationInclusion": {
                     "type": "string",
                     "enum": [
@@ -27412,6 +27400,18 @@
                     "type": "integer",
                     "format": "int32"
                 },
+                "defaultPropertyInclusion": {
+                    "$ref": "#/definitions/Value"
+                },
+                "filterProvider": {
+                    "$ref": "#/definitions/FilterProvider"
+                },
+                "defaultPrettyPrinter": {
+                    "$ref": "#/definitions/PrettyPrinter"
+                },
+                "annotationIntrospector": {
+                    "$ref": "#/definitions/AnnotationIntrospector"
+                },
                 "rootName": {
                     "type": "string"
                 },
@@ -27581,10 +27581,53 @@
         "SubscriptionStats": {
             "type": "object",
             "properties": {
+                "nonContiguousDeletedMessagesRangesSerializedSize": {
+                    "type": "integer",
+                    "format": "int32"
+                },
+                "bytesOutCounter": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "msgOutCounter": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "backlogSize": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "nonContiguousDeletedMessagesRanges": {
+                    "type": "integer",
+                    "format": "int32"
+                },
+                "chunkedMessageRate": {
+                    "type": "integer",
+                    "format": "int32"
+                },
+                "msgRateExpired": {
+                    "type": "number",
+                    "format": "double"
+                },
                 "msgBacklog": {
                     "type": "integer",
                     "format": "int64"
                 },
+                "msgRateRedeliver": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "msgBacklogNoDelayed": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "blockedSubscriptionOnUnackedMsgs": {
+                    "type": "boolean"
+                },
+                "msgDelayed": {
+                    "type": "integer",
+                    "format": "int64"
+                },
                 "unackedMessages": {
                     "type": "integer",
                     "format": "int64"
@@ -27628,69 +27671,26 @@
                         "type": "string"
                     }
                 },
-                "chunkedMessageRate": {
-                    "type": "integer",
-                    "format": "int32"
+                "replicated": {
+                    "type": "boolean"
                 },
-                "msgRateExpired": {
+                "msgRateOut": {
                     "type": "number",
                     "format": "double"
                 },
-                "msgRateRedeliver": {
+                "msgThroughputOut": {
                     "type": "number",
                     "format": "double"
                 },
-                "msgBacklogNoDelayed": {
-                    "type": "integer",
-                    "format": "int64"
-                },
-                "blockedSubscriptionOnUnackedMsgs": {
-                    "type": "boolean"
-                },
-                "msgDelayed": {
-                    "type": "integer",
-                    "format": "int64"
-                },
-                "replicated": {
-                    "type": "boolean"
-                },
                 "consumers": {
                     "type": "array",
                     "items": {
                         "$ref": "#/definitions/ConsumerStats"
                     }
                 },
-                "nonContiguousDeletedMessagesRangesSerializedSize": {
-                    "type": "integer",
-                    "format": "int32"
-                },
-                "nonContiguousDeletedMessagesRanges": {
-                    "type": "integer",
-                    "format": "int32"
-                },
-                "backlogSize": {
-                    "type": "integer",
-                    "format": "int64"
-                },
-                "bytesOutCounter": {
-                    "type": "integer",
-                    "format": "int64"
-                },
-                "msgOutCounter": {
-                    "type": "integer",
-                    "format": "int64"
-                },
                 "durable": {
                     "type": "boolean"
                 },
-                "msgThroughputOut": {
-                    "type": "number",
-                    "format": "double"
-                },
-                "msgRateOut": {
-                    "type": "number",
-                    "format": "double"
-                },
                 "type": {
                     "type": "string"
                 }
@@ -27755,9 +27755,6 @@
         "TimeZone": {
             "type": "object",
             "properties": {
-                "displayName": {
-                    "type": "string"
-                },
                 "dstsavings": {
                     "type": "integer",
                     "format": "int32"
@@ -27768,12 +27765,23 @@
                 },
                 "id": {
                     "type": "string"
+                },
+                "displayName": {
+                    "type": "string"
                 }
             }
         },
         "TopicStats": {
             "type": "object",
             "properties": {
+                "offloadedStorageSize": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "nonContiguousDeletedMessagesRangesSerializedSize": {
+                    "type": "integer",
+                    "format": "int32"
+                },
                 "bytesInCounter": {
                     "type": "integer",
                     "format": "int64"
@@ -27782,26 +27790,21 @@
                     "type": "integer",
                     "format": "int64"
                 },
-                "msgChunkPublished": {
-                    "type": "boolean"
-                },
-                "nonContiguousDeletedMessagesRangesSerializedSize": {
+                "bytesOutCounter": {
                     "type": "integer",
-                    "format": "int32"
-                },
-                "deduplicationStatus": {
-                    "type": "string"
+                    "format": "int64"
                 },
-                "topicEpoch": {
+                "msgOutCounter": {
                     "type": "integer",
                     "format": "int64"
                 },
-                "nonContiguousDeletedMessagesRanges": {
-                    "type": "integer",
-                    "format": "int32"
+                "averageMsgSize": {
+                    "type": "number",
+                    "format": "double"
                 },
-                "compaction": {
-                    "$ref": "#/definitions/CompactionStats"
+                "storageSize": {
+                    "type": "integer",
+                    "format": "int64"
                 },
                 "backlogSize": {
                     "type": "integer",
@@ -27823,47 +27826,44 @@
                         "$ref": "#/definitions/ReplicatorStats"
                     }
                 },
-                "bytesOutCounter": {
-                    "type": "integer",
-                    "format": "int64"
+                "deduplicationStatus": {
+                    "type": "string"
                 },
-                "msgOutCounter": {
+                "topicEpoch": {
                     "type": "integer",
                     "format": "int64"
                 },
-                "averageMsgSize": {
-                    "type": "number",
-                    "format": "double"
-                },
-                "storageSize": {
-                    "type": "integer",
-                    "format": "int64"
+                "compaction": {
+                    "$ref": "#/definitions/CompactionStats"
                 },
-                "offloadedStorageSize": {
+                "nonContiguousDeletedMessagesRanges": {
                     "type": "integer",
-                    "format": "int64"
+                    "format": "int32"
                 },
-                "subscriptions": {
-                    "type": "object",
-                    "additionalProperties": {
-                        "$ref": "#/definitions/SubscriptionStats"
-                    }
+                "msgChunkPublished": {
+                    "type": "boolean"
                 },
-                "msgThroughputIn": {
+                "msgRateIn": {
                     "type": "number",
                     "format": "double"
                 },
-                "msgThroughputOut": {
+                "msgRateOut": {
                     "type": "number",
                     "format": "double"
                 },
-                "msgRateIn": {
+                "msgThroughputIn": {
                     "type": "number",
                     "format": "double"
                 },
-                "msgRateOut": {
+                "msgThroughputOut": {
                     "type": "number",
                     "format": "double"
+                },
+                "subscriptions": {
+                    "type": "object",
+                    "additionalProperties": {
+                        "$ref": "#/definitions/SubscriptionStats"
+                    }
                 }
             }
         },
@@ -28283,14 +28283,14 @@
                 "sinks": {
                     "$ref": "#/definitions/SinksWorkerService"
                 },
+                "workerConfig": {
+                    "$ref": "#/definitions/WorkerConfig"
+                },
                 "functionsV2": {
                     "$ref": "#/definitions/FunctionsV2WorkerService"
                 },
                 "workers": {
                     "$ref": "#/definitions/WorkersWorkerService"
-                },
-                "workerConfig": {
-                    "$ref": "#/definitions/WorkerConfig"
                 }
             }
         },
@@ -28327,16 +28327,6 @@
                 "issuerX500Principal": {
                     "$ref": "#/definitions/X500Principal"
                 },
-                "issuerDN": {
-                    "$ref": "#/definitions/Principal"
-                },
-                "subjectDN": {
-                    "$ref": "#/definitions/Principal"
-                },
-                "version": {
-                    "type": "integer",
-                    "format": "int32"
-                },
                 "extendedKeyUsage": {
                     "type": "array",
                     "items": {
@@ -28400,6 +28390,16 @@
                         }
                     }
                 },
+                "issuerDN": {
+                    "$ref": "#/definitions/Principal"
+                },
+                "subjectDN": {
+                    "$ref": "#/definitions/Principal"
+                },
+                "version": {
+                    "type": "integer",
+                    "format": "int32"
+                },
                 "serialNumber": {
                     "type": "integer"
                 },
diff --git a/content/swagger/2.10.0-SNAPSHOT/v3/swaggerfunctions.json b/content/swagger/2.10.0-SNAPSHOT/v3/swaggerfunctions.json
index 3d38857..6396246 100644
--- a/content/swagger/2.10.0-SNAPSHOT/v3/swaggerfunctions.json
+++ b/content/swagger/2.10.0-SNAPSHOT/v3/swaggerfunctions.json
@@ -1174,12 +1174,12 @@
                         "$ref": "#/definitions/X509Certificate"
                     }
                 },
-                "httpAuthType": {
-                    "type": "string"
-                },
                 "peerAddress": {
                     "$ref": "#/definitions/SocketAddress"
                 },
+                "httpAuthType": {
+                    "type": "string"
+                },
                 "commandData": {
                     "type": "string"
                 }
@@ -1251,16 +1251,16 @@
         "CompletableFuture": {
             "type": "object",
             "properties": {
-                "numberOfDependents": {
-                    "type": "integer",
-                    "format": "int32"
-                },
                 "done": {
                     "type": "boolean"
                 },
                 "cancelled": {
                     "type": "boolean"
                 },
+                "numberOfDependents": {
+                    "type": "integer",
+                    "format": "int32"
+                },
                 "completedExceptionally": {
                     "type": "boolean"
                 }
@@ -1269,16 +1269,16 @@
         "CompletableFutureClusterData": {
             "type": "object",
             "properties": {
-                "numberOfDependents": {
-                    "type": "integer",
-                    "format": "int32"
-                },
                 "done": {
                     "type": "boolean"
                 },
                 "cancelled": {
                     "type": "boolean"
                 },
+                "numberOfDependents": {
+                    "type": "integer",
+                    "format": "int32"
+                },
                 "completedExceptionally": {
                     "type": "boolean"
                 }
@@ -1375,10 +1375,10 @@
                 "displayName": {
                     "type": "string"
                 },
-                "numericCodeAsString": {
+                "symbol": {
                     "type": "string"
                 },
-                "symbol": {
+                "numericCodeAsString": {
                     "type": "string"
                 }
             }
@@ -1765,9 +1765,6 @@
         "FunctionInstanceStatsData": {
             "type": "object",
             "properties": {
-                "oneMin": {
-                    "$ref": "#/definitions/FunctionInstanceStatsDataBase"
-                },
                 "lastInvocation": {
                     "type": "integer",
                     "format": "int64"
@@ -1779,6 +1776,9 @@
                         "format": "double"
                     }
                 },
+                "oneMin": {
+                    "$ref": "#/definitions/FunctionInstanceStatsDataBase"
+                },
                 "receivedTotal": {
                     "type": "integer",
                     "format": "int64"
@@ -2161,17 +2161,17 @@
                 "formatName": {
                     "type": "string"
                 },
-                "characterEscapes": {
-                    "$ref": "#/definitions/CharacterEscapes"
-                },
-                "rootValueSeparator": {
-                    "type": "string"
-                },
                 "inputDecorator": {
                     "$ref": "#/definitions/InputDecorator"
                 },
                 "outputDecorator": {
                     "$ref": "#/definitions/OutputDecorator"
+                },
+                "rootValueSeparator": {
+                    "type": "string"
+                },
+                "characterEscapes": {
+                    "$ref": "#/definitions/CharacterEscapes"
                 }
             }
         },
@@ -2223,10 +2223,6 @@
         "JsonLocation": {
             "type": "object",
             "properties": {
-                "byteOffset": {
-                    "type": "integer",
-                    "format": "int64"
-                },
                 "sourceRef": {
                     "type": "object"
                 },
@@ -2241,6 +2237,10 @@
                 "charOffset": {
                     "type": "integer",
                     "format": "int64"
+                },
+                "byteOffset": {
+                    "type": "integer",
+                    "format": "int64"
                 }
             }
         },
@@ -2453,20 +2453,20 @@
         "JsonStreamContext": {
             "type": "object",
             "properties": {
-                "currentName": {
+                "typeDesc": {
                     "type": "string"
                 },
-                "currentValue": {
-                    "type": "object"
-                },
-                "entryCount": {
+                "currentIndex": {
                     "type": "integer",
                     "format": "int32"
                 },
-                "typeDesc": {
+                "currentName": {
                     "type": "string"
                 },
-                "currentIndex": {
+                "currentValue": {
+                    "type": "object"
+                },
+                "entryCount": {
                     "type": "integer",
                     "format": "int32"
                 },
@@ -2546,6 +2546,13 @@
         "Message": {
             "type": "object",
             "properties": {
+                "data": {
+                    "type": "array",
+                    "items": {
+                        "type": "string",
+                        "format": "byte"
+                    }
+                },
                 "messageId": {
                     "$ref": "#/definitions/MessageId"
                 },
@@ -2570,12 +2577,8 @@
                     "type": "integer",
                     "format": "int64"
                 },
-                "data": {
-                    "type": "array",
-                    "items": {
-                        "type": "string",
-                        "format": "byte"
-                    }
+                "topicName": {
+                    "type": "string"
                 },
                 "replicated": {
                     "type": "boolean"
@@ -2612,9 +2615,6 @@
                         "format": "byte"
                     }
                 },
-                "topicName": {
-                    "type": "string"
-                },
                 "value": {
                     "type": "object"
                 },
@@ -2717,6 +2717,9 @@
                     "type": "integer",
                     "format": "int32"
                 },
+                "currency": {
+                    "$ref": "#/definitions/Currency"
+                },
                 "roundingMode": {
                     "type": "string",
                     "enum": [
@@ -2729,9 +2732,6 @@
                         "HALF_EVEN",
                         "UNNECESSARY"
                     ]
-                },
-                "currency": {
-                    "$ref": "#/definitions/Currency"
                 }
             }
         },
@@ -3004,18 +3004,6 @@
         "SerializationConfig": {
             "type": "object",
             "properties": {
-                "defaultPropertyInclusion": {
-                    "$ref": "#/definitions/Value"
-                },
-                "filterProvider": {
-                    "$ref": "#/definitions/FilterProvider"
-                },
-                "defaultPrettyPrinter": {
-                    "$ref": "#/definitions/PrettyPrinter"
-                },
-                "annotationIntrospector": {
-                    "$ref": "#/definitions/AnnotationIntrospector"
-                },
                 "serializationInclusion": {
                     "type": "string",
                     "enum": [
@@ -3031,6 +3019,18 @@
                     "type": "integer",
                     "format": "int32"
                 },
+                "defaultPropertyInclusion": {
+                    "$ref": "#/definitions/Value"
+                },
+                "filterProvider": {
+                    "$ref": "#/definitions/FilterProvider"
+                },
+                "defaultPrettyPrinter": {
+                    "$ref": "#/definitions/PrettyPrinter"
+                },
+                "annotationIntrospector": {
+                    "$ref": "#/definitions/AnnotationIntrospector"
+                },
                 "rootName": {
                     "type": "string"
                 },
@@ -3122,9 +3122,6 @@
         "TimeZone": {
             "type": "object",
             "properties": {
-                "displayName": {
-                    "type": "string"
-                },
                 "dstsavings": {
                     "type": "integer",
                     "format": "int32"
@@ -3135,6 +3132,9 @@
                 },
                 "id": {
                     "type": "string"
+                },
+                "displayName": {
+                    "type": "string"
                 }
             }
         },
@@ -3268,16 +3268,6 @@
                 "issuerX500Principal": {
                     "$ref": "#/definitions/X500Principal"
                 },
-                "issuerDN": {
-                    "$ref": "#/definitions/Principal"
-                },
-                "subjectDN": {
-                    "$ref": "#/definitions/Principal"
-                },
-                "version": {
-                    "type": "integer",
-                    "format": "int32"
-                },
                 "extendedKeyUsage": {
                     "type": "array",
                     "items": {
@@ -3341,6 +3331,16 @@
                         }
                     }
                 },
+                "issuerDN": {
+                    "$ref": "#/definitions/Principal"
+                },
+                "subjectDN": {
+                    "$ref": "#/definitions/Principal"
+                },
+                "version": {
+                    "type": "integer",
+                    "format": "int32"
+                },
                 "serialNumber": {
                     "type": "integer"
                 },
diff --git a/content/swagger/2.10.0-SNAPSHOT/v3/swaggerpackages.json b/content/swagger/2.10.0-SNAPSHOT/v3/swaggerpackages.json
index cd2f973..03fbba0 100644
--- a/content/swagger/2.10.0-SNAPSHOT/v3/swaggerpackages.json
+++ b/content/swagger/2.10.0-SNAPSHOT/v3/swaggerpackages.json
@@ -506,12 +506,12 @@
                         "$ref": "#/definitions/X509Certificate"
                     }
                 },
-                "httpAuthType": {
-                    "type": "string"
-                },
                 "peerAddress": {
                     "$ref": "#/definitions/SocketAddress"
                 },
+                "httpAuthType": {
+                    "type": "string"
+                },
                 "commandData": {
                     "type": "string"
                 }
@@ -583,16 +583,16 @@
         "CompletableFuture": {
             "type": "object",
             "properties": {
-                "numberOfDependents": {
-                    "type": "integer",
-                    "format": "int32"
-                },
                 "done": {
                     "type": "boolean"
                 },
                 "cancelled": {
                     "type": "boolean"
                 },
+                "numberOfDependents": {
+                    "type": "integer",
+                    "format": "int32"
+                },
                 "completedExceptionally": {
                     "type": "boolean"
                 }
@@ -601,16 +601,16 @@
         "CompletableFutureClusterData": {
             "type": "object",
             "properties": {
-                "numberOfDependents": {
-                    "type": "integer",
-                    "format": "int32"
-                },
                 "done": {
                     "type": "boolean"
                 },
                 "cancelled": {
                     "type": "boolean"
                 },
+                "numberOfDependents": {
+                    "type": "integer",
+                    "format": "int32"
+                },
                 "completedExceptionally": {
                     "type": "boolean"
                 }
@@ -636,10 +636,10 @@
                 "displayName": {
                     "type": "string"
                 },
-                "numericCodeAsString": {
+                "symbol": {
                     "type": "string"
                 },
-                "symbol": {
+                "numericCodeAsString": {
                     "type": "string"
                 }
             }
@@ -894,17 +894,17 @@
                 "formatName": {
                     "type": "string"
                 },
-                "characterEscapes": {
-                    "$ref": "#/definitions/CharacterEscapes"
-                },
-                "rootValueSeparator": {
-                    "type": "string"
-                },
                 "inputDecorator": {
                     "$ref": "#/definitions/InputDecorator"
                 },
                 "outputDecorator": {
                     "$ref": "#/definitions/OutputDecorator"
+                },
+                "rootValueSeparator": {
+                    "type": "string"
+                },
+                "characterEscapes": {
+                    "$ref": "#/definitions/CharacterEscapes"
                 }
             }
         },
@@ -956,10 +956,6 @@
         "JsonLocation": {
             "type": "object",
             "properties": {
-                "byteOffset": {
-                    "type": "integer",
-                    "format": "int64"
-                },
                 "sourceRef": {
                     "type": "object"
                 },
@@ -974,6 +970,10 @@
                 "charOffset": {
                     "type": "integer",
                     "format": "int64"
+                },
+                "byteOffset": {
+                    "type": "integer",
+                    "format": "int64"
                 }
             }
         },
@@ -1186,20 +1186,20 @@
         "JsonStreamContext": {
             "type": "object",
             "properties": {
-                "currentName": {
+                "typeDesc": {
                     "type": "string"
                 },
-                "currentValue": {
-                    "type": "object"
-                },
-                "entryCount": {
+                "currentIndex": {
                     "type": "integer",
                     "format": "int32"
                 },
-                "typeDesc": {
+                "currentName": {
                     "type": "string"
                 },
-                "currentIndex": {
+                "currentValue": {
+                    "type": "object"
+                },
+                "entryCount": {
                     "type": "integer",
                     "format": "int32"
                 },
@@ -1357,6 +1357,9 @@
                     "type": "integer",
                     "format": "int32"
                 },
+                "currency": {
+                    "$ref": "#/definitions/Currency"
+                },
                 "roundingMode": {
                     "type": "string",
                     "enum": [
@@ -1369,9 +1372,6 @@
                         "HALF_EVEN",
                         "UNNECESSARY"
                     ]
-                },
-                "currency": {
-                    "$ref": "#/definitions/Currency"
                 }
             }
         },
@@ -1554,18 +1554,6 @@
         "SerializationConfig": {
             "type": "object",
             "properties": {
-                "defaultPropertyInclusion": {
-                    "$ref": "#/definitions/Value"
-                },
-                "filterProvider": {
-                    "$ref": "#/definitions/FilterProvider"
-                },
-                "defaultPrettyPrinter": {
-                    "$ref": "#/definitions/PrettyPrinter"
-                },
-                "annotationIntrospector": {
-                    "$ref": "#/definitions/AnnotationIntrospector"
-                },
                 "serializationInclusion": {
                     "type": "string",
                     "enum": [
@@ -1581,6 +1569,18 @@
                     "type": "integer",
                     "format": "int32"
                 },
+                "defaultPropertyInclusion": {
+                    "$ref": "#/definitions/Value"
+                },
+                "filterProvider": {
+                    "$ref": "#/definitions/FilterProvider"
+                },
+                "defaultPrettyPrinter": {
+                    "$ref": "#/definitions/PrettyPrinter"
+                },
+                "annotationIntrospector": {
+                    "$ref": "#/definitions/AnnotationIntrospector"
+                },
                 "rootName": {
                     "type": "string"
                 },
@@ -1675,9 +1675,6 @@
         "TimeZone": {
             "type": "object",
             "properties": {
-                "displayName": {
-                    "type": "string"
-                },
                 "dstsavings": {
                     "type": "integer",
                     "format": "int32"
@@ -1688,6 +1685,9 @@
                 },
                 "id": {
                     "type": "string"
+                },
+                "displayName": {
+                    "type": "string"
                 }
             }
         },
@@ -1773,16 +1773,6 @@
                 "issuerX500Principal": {
                     "$ref": "#/definitions/X500Principal"
                 },
-                "issuerDN": {
-                    "$ref": "#/definitions/Principal"
-                },
-                "subjectDN": {
-                    "$ref": "#/definitions/Principal"
-                },
-                "version": {
-                    "type": "integer",
-                    "format": "int32"
-                },
                 "extendedKeyUsage": {
                     "type": "array",
                     "items": {
@@ -1846,6 +1836,16 @@
                         }
                     }
                 },
+                "issuerDN": {
+                    "$ref": "#/definitions/Principal"
+                },
+                "subjectDN": {
+                    "$ref": "#/definitions/Principal"
+                },
+                "version": {
+                    "type": "integer",
+                    "format": "int32"
+                },
                 "serialNumber": {
                     "type": "integer"
                 },
diff --git a/content/swagger/2.10.0-SNAPSHOT/v3/swaggersink.json b/content/swagger/2.10.0-SNAPSHOT/v3/swaggersink.json
index f723c95..53d2f70 100644
--- a/content/swagger/2.10.0-SNAPSHOT/v3/swaggersink.json
+++ b/content/swagger/2.10.0-SNAPSHOT/v3/swaggersink.json
@@ -971,12 +971,12 @@
                         "$ref": "#/definitions/X509Certificate"
                     }
                 },
-                "httpAuthType": {
-                    "type": "string"
-                },
                 "peerAddress": {
                     "$ref": "#/definitions/SocketAddress"
                 },
+                "httpAuthType": {
+                    "type": "string"
+                },
                 "commandData": {
                     "type": "string"
                 }
@@ -1048,16 +1048,16 @@
         "CompletableFuture": {
             "type": "object",
             "properties": {
-                "numberOfDependents": {
-                    "type": "integer",
-                    "format": "int32"
-                },
                 "done": {
                     "type": "boolean"
                 },
                 "cancelled": {
                     "type": "boolean"
                 },
+                "numberOfDependents": {
+                    "type": "integer",
+                    "format": "int32"
+                },
                 "completedExceptionally": {
                     "type": "boolean"
                 }
@@ -1066,16 +1066,16 @@
         "CompletableFutureClusterData": {
             "type": "object",
             "properties": {
-                "numberOfDependents": {
-                    "type": "integer",
-                    "format": "int32"
-                },
                 "done": {
                     "type": "boolean"
                 },
                 "cancelled": {
                     "type": "boolean"
                 },
+                "numberOfDependents": {
+                    "type": "integer",
+                    "format": "int32"
+                },
                 "completedExceptionally": {
                     "type": "boolean"
                 }
@@ -1212,10 +1212,10 @@
                 "displayName": {
                     "type": "string"
                 },
-                "numericCodeAsString": {
+                "symbol": {
                     "type": "string"
                 },
-                "symbol": {
+                "numericCodeAsString": {
                     "type": "string"
                 }
             }
@@ -1482,17 +1482,17 @@
                 "formatName": {
                     "type": "string"
                 },
-                "characterEscapes": {
-                    "$ref": "#/definitions/CharacterEscapes"
-                },
-                "rootValueSeparator": {
-                    "type": "string"
-                },
                 "inputDecorator": {
                     "$ref": "#/definitions/InputDecorator"
                 },
                 "outputDecorator": {
                     "$ref": "#/definitions/OutputDecorator"
+                },
+                "rootValueSeparator": {
+                    "type": "string"
+                },
+                "characterEscapes": {
+                    "$ref": "#/definitions/CharacterEscapes"
                 }
             }
         },
@@ -1544,10 +1544,6 @@
         "JsonLocation": {
             "type": "object",
             "properties": {
-                "byteOffset": {
-                    "type": "integer",
-                    "format": "int64"
-                },
                 "sourceRef": {
                     "type": "object"
                 },
@@ -1562,6 +1558,10 @@
                 "charOffset": {
                     "type": "integer",
                     "format": "int64"
+                },
+                "byteOffset": {
+                    "type": "integer",
+                    "format": "int64"
                 }
             }
         },
@@ -1774,20 +1774,20 @@
         "JsonStreamContext": {
             "type": "object",
             "properties": {
-                "currentName": {
+                "typeDesc": {
                     "type": "string"
                 },
-                "currentValue": {
-                    "type": "object"
-                },
-                "entryCount": {
+                "currentIndex": {
                     "type": "integer",
                     "format": "int32"
                 },
-                "typeDesc": {
+                "currentName": {
                     "type": "string"
                 },
-                "currentIndex": {
+                "currentValue": {
+                    "type": "object"
+                },
+                "entryCount": {
                     "type": "integer",
                     "format": "int32"
                 },
@@ -1945,6 +1945,9 @@
                     "type": "integer",
                     "format": "int32"
                 },
+                "currency": {
+                    "$ref": "#/definitions/Currency"
+                },
                 "roundingMode": {
                     "type": "string",
                     "enum": [
@@ -1957,9 +1960,6 @@
                         "HALF_EVEN",
                         "UNNECESSARY"
                     ]
-                },
-                "currency": {
-                    "$ref": "#/definitions/Currency"
                 }
             }
         },
@@ -2134,18 +2134,6 @@
         "SerializationConfig": {
             "type": "object",
             "properties": {
-                "defaultPropertyInclusion": {
-                    "$ref": "#/definitions/Value"
-                },
-                "filterProvider": {
-                    "$ref": "#/definitions/FilterProvider"
-                },
-                "defaultPrettyPrinter": {
-                    "$ref": "#/definitions/PrettyPrinter"
-                },
-                "annotationIntrospector": {
-                    "$ref": "#/definitions/AnnotationIntrospector"
-                },
                 "serializationInclusion": {
                     "type": "string",
                     "enum": [
@@ -2161,6 +2149,18 @@
                     "type": "integer",
                     "format": "int32"
                 },
+                "defaultPropertyInclusion": {
+                    "$ref": "#/definitions/Value"
+                },
+                "filterProvider": {
+                    "$ref": "#/definitions/FilterProvider"
+                },
+                "defaultPrettyPrinter": {
+                    "$ref": "#/definitions/PrettyPrinter"
+                },
+                "annotationIntrospector": {
+                    "$ref": "#/definitions/AnnotationIntrospector"
+                },
                 "rootName": {
                     "type": "string"
                 },
@@ -2453,9 +2453,6 @@
         "TimeZone": {
             "type": "object",
             "properties": {
-                "displayName": {
-                    "type": "string"
-                },
                 "dstsavings": {
                     "type": "integer",
                     "format": "int32"
@@ -2466,6 +2463,9 @@
                 },
                 "id": {
                     "type": "string"
+                },
+                "displayName": {
+                    "type": "string"
                 }
             }
         },
@@ -2561,16 +2561,6 @@
                 "issuerX500Principal": {
                     "$ref": "#/definitions/X500Principal"
                 },
-                "issuerDN": {
-                    "$ref": "#/definitions/Principal"
-                },
-                "subjectDN": {
-                    "$ref": "#/definitions/Principal"
-                },
-                "version": {
-                    "type": "integer",
-                    "format": "int32"
-                },
                 "extendedKeyUsage": {
                     "type": "array",
                     "items": {
@@ -2634,6 +2624,16 @@
                         }
                     }
                 },
+                "issuerDN": {
+                    "$ref": "#/definitions/Principal"
+                },
+                "subjectDN": {
+                    "$ref": "#/definitions/Principal"
+                },
+                "version": {
+                    "type": "integer",
+                    "format": "int32"
+                },
                 "serialNumber": {
                     "type": "integer"
                 },
diff --git a/content/swagger/2.10.0-SNAPSHOT/v3/swaggersource.json b/content/swagger/2.10.0-SNAPSHOT/v3/swaggersource.json
index 01ce5d6..d93cfe8 100644
--- a/content/swagger/2.10.0-SNAPSHOT/v3/swaggersource.json
+++ b/content/swagger/2.10.0-SNAPSHOT/v3/swaggersource.json
@@ -974,12 +974,12 @@
                         "$ref": "#/definitions/X509Certificate"
                     }
                 },
-                "httpAuthType": {
-                    "type": "string"
-                },
                 "peerAddress": {
                     "$ref": "#/definitions/SocketAddress"
                 },
+                "httpAuthType": {
+                    "type": "string"
+                },
                 "commandData": {
                     "type": "string"
                 }
@@ -1065,16 +1065,16 @@
         "CompletableFuture": {
             "type": "object",
             "properties": {
-                "numberOfDependents": {
-                    "type": "integer",
-                    "format": "int32"
-                },
                 "done": {
                     "type": "boolean"
                 },
                 "cancelled": {
                     "type": "boolean"
                 },
+                "numberOfDependents": {
+                    "type": "integer",
+                    "format": "int32"
+                },
                 "completedExceptionally": {
                     "type": "boolean"
                 }
@@ -1083,16 +1083,16 @@
         "CompletableFutureClusterData": {
             "type": "object",
             "properties": {
-                "numberOfDependents": {
-                    "type": "integer",
-                    "format": "int32"
-                },
                 "done": {
                     "type": "boolean"
                 },
                 "cancelled": {
                     "type": "boolean"
                 },
+                "numberOfDependents": {
+                    "type": "integer",
+                    "format": "int32"
+                },
                 "completedExceptionally": {
                     "type": "boolean"
                 }
@@ -1193,10 +1193,10 @@
                 "displayName": {
                     "type": "string"
                 },
-                "numericCodeAsString": {
+                "symbol": {
                     "type": "string"
                 },
-                "symbol": {
+                "numericCodeAsString": {
                     "type": "string"
                 }
             }
@@ -1463,17 +1463,17 @@
                 "formatName": {
                     "type": "string"
                 },
-                "characterEscapes": {
-                    "$ref": "#/definitions/CharacterEscapes"
-                },
-                "rootValueSeparator": {
-                    "type": "string"
-                },
                 "inputDecorator": {
                     "$ref": "#/definitions/InputDecorator"
                 },
                 "outputDecorator": {
                     "$ref": "#/definitions/OutputDecorator"
+                },
+                "rootValueSeparator": {
+                    "type": "string"
+                },
+                "characterEscapes": {
+                    "$ref": "#/definitions/CharacterEscapes"
                 }
             }
         },
@@ -1525,10 +1525,6 @@
         "JsonLocation": {
             "type": "object",
             "properties": {
-                "byteOffset": {
-                    "type": "integer",
-                    "format": "int64"
-                },
                 "sourceRef": {
                     "type": "object"
                 },
@@ -1543,6 +1539,10 @@
                 "charOffset": {
                     "type": "integer",
                     "format": "int64"
+                },
+                "byteOffset": {
+                    "type": "integer",
+                    "format": "int64"
                 }
             }
         },
@@ -1755,20 +1755,20 @@
         "JsonStreamContext": {
             "type": "object",
             "properties": {
-                "currentName": {
+                "typeDesc": {
                     "type": "string"
                 },
-                "currentValue": {
-                    "type": "object"
-                },
-                "entryCount": {
+                "currentIndex": {
                     "type": "integer",
                     "format": "int32"
                 },
-                "typeDesc": {
+                "currentName": {
                     "type": "string"
                 },
-                "currentIndex": {
+                "currentValue": {
+                    "type": "object"
+                },
+                "entryCount": {
                     "type": "integer",
                     "format": "int32"
                 },
@@ -1926,6 +1926,9 @@
                     "type": "integer",
                     "format": "int32"
                 },
+                "currency": {
+                    "$ref": "#/definitions/Currency"
+                },
                 "roundingMode": {
                     "type": "string",
                     "enum": [
@@ -1938,9 +1941,6 @@
                         "HALF_EVEN",
                         "UNNECESSARY"
                     ]
-                },
-                "currency": {
-                    "$ref": "#/definitions/Currency"
                 }
             }
         },
@@ -2137,18 +2137,6 @@
         "SerializationConfig": {
             "type": "object",
             "properties": {
-                "defaultPropertyInclusion": {
-                    "$ref": "#/definitions/Value"
-                },
-                "filterProvider": {
-                    "$ref": "#/definitions/FilterProvider"
-                },
-                "defaultPrettyPrinter": {
-                    "$ref": "#/definitions/PrettyPrinter"
-                },
-                "annotationIntrospector": {
-                    "$ref": "#/definitions/AnnotationIntrospector"
-                },
                 "serializationInclusion": {
                     "type": "string",
                     "enum": [
@@ -2164,6 +2152,18 @@
                     "type": "integer",
                     "format": "int32"
                 },
+                "defaultPropertyInclusion": {
+                    "$ref": "#/definitions/Value"
+                },
+                "filterProvider": {
+                    "$ref": "#/definitions/FilterProvider"
+                },
+                "defaultPrettyPrinter": {
+                    "$ref": "#/definitions/PrettyPrinter"
+                },
+                "annotationIntrospector": {
+                    "$ref": "#/definitions/AnnotationIntrospector"
+                },
                 "rootName": {
                     "type": "string"
                 },
@@ -2407,9 +2407,6 @@
         "TimeZone": {
             "type": "object",
             "properties": {
-                "displayName": {
-                    "type": "string"
-                },
                 "dstsavings": {
                     "type": "integer",
                     "format": "int32"
@@ -2420,6 +2417,9 @@
                 },
                 "id": {
                     "type": "string"
+                },
+                "displayName": {
+                    "type": "string"
                 }
             }
         },
@@ -2515,16 +2515,6 @@
                 "issuerX500Principal": {
                     "$ref": "#/definitions/X500Principal"
                 },
-                "issuerDN": {
-                    "$ref": "#/definitions/Principal"
-                },
-                "subjectDN": {
-                    "$ref": "#/definitions/Principal"
-                },
-                "version": {
-                    "type": "integer",
-                    "format": "int32"
-                },
                 "extendedKeyUsage": {
                     "type": "array",
                     "items": {
@@ -2588,6 +2578,16 @@
                         }
                     }
                 },
+                "issuerDN": {
+                    "$ref": "#/definitions/Principal"
+                },
+                "subjectDN": {
+                    "$ref": "#/definitions/Principal"
+                },
+                "version": {
+                    "type": "integer",
+                    "format": "int32"
+                },
                 "serialNumber": {
                     "type": "integer"
                 },
diff --git a/content/swagger/master/swagger.json b/content/swagger/master/swagger.json
index f4bacb5..3d615c1 100644
--- a/content/swagger/master/swagger.json
+++ b/content/swagger/master/swagger.json
@@ -19726,12 +19726,12 @@
             "$ref" : "#/definitions/X509Certificate"
           }
         },
-        "httpAuthType" : {
-          "type" : "string"
-        },
         "peerAddress" : {
           "$ref" : "#/definitions/SocketAddress"
         },
+        "httpAuthType" : {
+          "type" : "string"
+        },
         "commandData" : {
           "type" : "string"
         }
@@ -19763,15 +19763,15 @@
     "AutoTopicCreationOverride" : {
       "type" : "object",
       "properties" : {
-        "topicType" : {
-          "type" : "string"
-        },
         "defaultNumPartitions" : {
           "type" : "integer",
           "format" : "int32"
         },
         "allowAutoTopicCreation" : {
           "type" : "boolean"
+        },
+        "topicType" : {
+          "type" : "string"
         }
       }
     },
@@ -20048,16 +20048,16 @@
     "CompletableFuture" : {
       "type" : "object",
       "properties" : {
-        "numberOfDependents" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
         "done" : {
           "type" : "boolean"
         },
         "cancelled" : {
           "type" : "boolean"
         },
+        "numberOfDependents" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
         "completedExceptionally" : {
           "type" : "boolean"
         }
@@ -20066,16 +20066,16 @@
     "CompletableFutureClusterData" : {
       "type" : "object",
       "properties" : {
-        "numberOfDependents" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
         "done" : {
           "type" : "boolean"
         },
         "cancelled" : {
           "type" : "boolean"
         },
+        "numberOfDependents" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
         "completedExceptionally" : {
           "type" : "boolean"
         }
@@ -20084,16 +20084,16 @@
     "CompletableFuturePartitionedTopicMetadata" : {
       "type" : "object",
       "properties" : {
-        "numberOfDependents" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
         "done" : {
           "type" : "boolean"
         },
         "cancelled" : {
           "type" : "boolean"
         },
+        "numberOfDependents" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
         "completedExceptionally" : {
           "type" : "boolean"
         }
@@ -20131,9 +20131,31 @@
             "type" : "string"
           }
         },
+        "bytesOutCounter" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "msgOutCounter" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "chunkedMessageRate" : {
+          "type" : "number",
+          "format" : "double"
+        },
+        "connectedSince" : {
+          "type" : "string"
+        },
+        "clientVersion" : {
+          "type" : "string"
+        },
         "consumerName" : {
           "type" : "string"
         },
+        "msgRateRedeliver" : {
+          "type" : "number",
+          "format" : "double"
+        },
         "unackedMessages" : {
           "type" : "integer",
           "format" : "int32"
@@ -20166,36 +20188,14 @@
             "type" : "string"
           }
         },
-        "chunkedMessageRate" : {
-          "type" : "number",
-          "format" : "double"
-        },
-        "connectedSince" : {
-          "type" : "string"
-        },
-        "clientVersion" : {
-          "type" : "string"
-        },
-        "msgRateRedeliver" : {
+        "msgRateOut" : {
           "type" : "number",
           "format" : "double"
         },
-        "bytesOutCounter" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
-        "msgOutCounter" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
         "msgThroughputOut" : {
           "type" : "number",
           "format" : "double"
         },
-        "msgRateOut" : {
-          "type" : "number",
-          "format" : "double"
-        },
         "address" : {
           "type" : "string"
         }
@@ -20221,10 +20221,10 @@
         "displayName" : {
           "type" : "string"
         },
-        "numericCodeAsString" : {
+        "symbol" : {
           "type" : "string"
         },
-        "symbol" : {
+        "numericCodeAsString" : {
           "type" : "string"
         }
       }
@@ -20524,9 +20524,6 @@
     "FunctionInstanceStatsData" : {
       "type" : "object",
       "properties" : {
-        "oneMin" : {
-          "$ref" : "#/definitions/FunctionInstanceStatsDataBase"
-        },
         "lastInvocation" : {
           "type" : "integer",
           "format" : "int64"
@@ -20538,6 +20535,9 @@
             "format" : "double"
           }
         },
+        "oneMin" : {
+          "$ref" : "#/definitions/FunctionInstanceStatsDataBase"
+        },
         "receivedTotal" : {
           "type" : "integer",
           "format" : "int64"
@@ -20820,17 +20820,17 @@
         "formatName" : {
           "type" : "string"
         },
-        "characterEscapes" : {
-          "$ref" : "#/definitions/CharacterEscapes"
-        },
-        "rootValueSeparator" : {
-          "type" : "string"
-        },
         "inputDecorator" : {
           "$ref" : "#/definitions/InputDecorator"
         },
         "outputDecorator" : {
           "$ref" : "#/definitions/OutputDecorator"
+        },
+        "rootValueSeparator" : {
+          "type" : "string"
+        },
+        "characterEscapes" : {
+          "$ref" : "#/definitions/CharacterEscapes"
         }
       }
     },
@@ -20882,10 +20882,6 @@
     "JsonLocation" : {
       "type" : "object",
       "properties" : {
-        "byteOffset" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
         "sourceRef" : {
           "type" : "object"
         },
@@ -20900,6 +20896,10 @@
         "charOffset" : {
           "type" : "integer",
           "format" : "int64"
+        },
+        "byteOffset" : {
+          "type" : "integer",
+          "format" : "int64"
         }
       }
     },
@@ -21077,20 +21077,20 @@
     "JsonStreamContext" : {
       "type" : "object",
       "properties" : {
-        "currentName" : {
+        "typeDesc" : {
           "type" : "string"
         },
-        "currentValue" : {
-          "type" : "object"
-        },
-        "entryCount" : {
+        "currentIndex" : {
           "type" : "integer",
           "format" : "int32"
         },
-        "typeDesc" : {
+        "currentName" : {
           "type" : "string"
         },
-        "currentIndex" : {
+        "currentValue" : {
+          "type" : "object"
+        },
+        "entryCount" : {
           "type" : "integer",
           "format" : "int32"
         },
@@ -21383,28 +21383,19 @@
           "type" : "number",
           "format" : "double"
         },
-        "underLoaded" : {
-          "type" : "boolean"
-        },
-        "overLoaded" : {
-          "type" : "boolean"
-        },
-        "loadReportType" : {
-          "type" : "string"
-        },
-        "cpu" : {
+        "bandwidthIn" : {
           "$ref" : "#/definitions/ResourceUsage"
         },
-        "memory" : {
+        "bandwidthOut" : {
           "$ref" : "#/definitions/ResourceUsage"
         },
-        "directMemory" : {
+        "memory" : {
           "$ref" : "#/definitions/ResourceUsage"
         },
-        "bandwidthIn" : {
+        "cpu" : {
           "$ref" : "#/definitions/ResourceUsage"
         },
-        "bandwidthOut" : {
+        "directMemory" : {
           "$ref" : "#/definitions/ResourceUsage"
         },
         "lastUpdate" : {
@@ -21418,6 +21409,15 @@
         "msgThroughputOut" : {
           "type" : "number",
           "format" : "double"
+        },
+        "underLoaded" : {
+          "type" : "boolean"
+        },
+        "overLoaded" : {
+          "type" : "boolean"
+        },
+        "loadReportType" : {
+          "type" : "string"
         }
       }
     },
@@ -21704,6 +21704,10 @@
             "type" : "string"
           }
         },
+        "averageMsgSize" : {
+          "type" : "number",
+          "format" : "double"
+        },
         "accessMode" : {
           "type" : "string",
           "enum" : [ "Shared", "Exclusive", "WaitForExclusive" ]
@@ -21722,20 +21726,16 @@
         "clientVersion" : {
           "type" : "string"
         },
-        "averageMsgSize" : {
+        "msgRateIn" : {
           "type" : "number",
           "format" : "double"
         },
-        "producerName" : {
-          "type" : "string"
-        },
         "msgThroughputIn" : {
           "type" : "number",
           "format" : "double"
         },
-        "msgRateIn" : {
-          "type" : "number",
-          "format" : "double"
+        "producerName" : {
+          "type" : "string"
         },
         "address" : {
           "type" : "string"
@@ -21776,19 +21776,19 @@
         "outboundConnectedSince" : {
           "type" : "string"
         },
-        "msgThroughputIn" : {
+        "msgRateIn" : {
           "type" : "number",
           "format" : "double"
         },
-        "msgThroughputOut" : {
+        "msgRateOut" : {
           "type" : "number",
           "format" : "double"
         },
-        "msgRateIn" : {
+        "msgThroughputIn" : {
           "type" : "number",
           "format" : "double"
         },
-        "msgRateOut" : {
+        "msgThroughputOut" : {
           "type" : "number",
           "format" : "double"
         }
@@ -21801,10 +21801,53 @@
           "type" : "number",
           "format" : "double"
         },
+        "nonContiguousDeletedMessagesRangesSerializedSize" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "bytesOutCounter" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "msgOutCounter" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "backlogSize" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "nonContiguousDeletedMessagesRanges" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "chunkedMessageRate" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "msgRateExpired" : {
+          "type" : "number",
+          "format" : "double"
+        },
         "msgBacklog" : {
           "type" : "integer",
           "format" : "int64"
         },
+        "msgRateRedeliver" : {
+          "type" : "number",
+          "format" : "double"
+        },
+        "msgBacklogNoDelayed" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "blockedSubscriptionOnUnackedMsgs" : {
+          "type" : "boolean"
+        },
+        "msgDelayed" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
         "unackedMessages" : {
           "type" : "integer",
           "format" : "int64"
@@ -21848,68 +21891,25 @@
             "type" : "string"
           }
         },
-        "chunkedMessageRate" : {
-          "type" : "integer",
-          "format" : "int32"
+        "replicated" : {
+          "type" : "boolean"
         },
-        "msgRateExpired" : {
+        "msgRateOut" : {
           "type" : "number",
           "format" : "double"
         },
-        "msgRateRedeliver" : {
+        "msgThroughputOut" : {
           "type" : "number",
           "format" : "double"
         },
-        "msgBacklogNoDelayed" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
-        "blockedSubscriptionOnUnackedMsgs" : {
-          "type" : "boolean"
-        },
-        "msgDelayed" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
-        "replicated" : {
-          "type" : "boolean"
-        },
         "consumers" : {
           "type" : "array",
           "items" : {
             "$ref" : "#/definitions/ConsumerStats"
           }
         },
-        "nonContiguousDeletedMessagesRangesSerializedSize" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
-        "nonContiguousDeletedMessagesRanges" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
-        "backlogSize" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
-        "bytesOutCounter" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
-        "msgOutCounter" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
-        "durable" : {
-          "type" : "boolean"
-        },
-        "msgThroughputOut" : {
-          "type" : "number",
-          "format" : "double"
-        },
-        "msgRateOut" : {
-          "type" : "number",
-          "format" : "double"
+        "durable" : {
+          "type" : "boolean"
         },
         "type" : {
           "type" : "string"
@@ -21919,10 +21919,6 @@
     "NonPersistentTopicStats" : {
       "type" : "object",
       "properties" : {
-        "msgDropRate" : {
-          "type" : "number",
-          "format" : "double"
-        },
         "publishers" : {
           "type" : "array",
           "items" : {
@@ -21935,49 +21931,32 @@
             "$ref" : "#/definitions/NonPersistentReplicatorStats"
           }
         },
+        "msgDropRate" : {
+          "type" : "number",
+          "format" : "double"
+        },
         "subscriptions" : {
           "type" : "object",
           "additionalProperties" : {
             "$ref" : "#/definitions/NonPersistentSubscriptionStats"
           }
         },
-        "bytesInCounter" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
-        "msgInCounter" : {
+        "offloadedStorageSize" : {
           "type" : "integer",
           "format" : "int64"
         },
-        "msgChunkPublished" : {
-          "type" : "boolean"
-        },
         "nonContiguousDeletedMessagesRangesSerializedSize" : {
           "type" : "integer",
           "format" : "int32"
         },
-        "deduplicationStatus" : {
-          "type" : "string"
-        },
-        "topicEpoch" : {
+        "bytesInCounter" : {
           "type" : "integer",
           "format" : "int64"
         },
-        "nonContiguousDeletedMessagesRanges" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
-        "compaction" : {
-          "$ref" : "#/definitions/CompactionStats"
-        },
-        "backlogSize" : {
+        "msgInCounter" : {
           "type" : "integer",
           "format" : "int64"
         },
-        "waitingPublishers" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
         "bytesOutCounter" : {
           "type" : "integer",
           "format" : "int64"
@@ -21994,23 +21973,44 @@
           "type" : "integer",
           "format" : "int64"
         },
-        "offloadedStorageSize" : {
+        "backlogSize" : {
           "type" : "integer",
           "format" : "int64"
         },
-        "msgThroughputIn" : {
+        "waitingPublishers" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "deduplicationStatus" : {
+          "type" : "string"
+        },
+        "topicEpoch" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "compaction" : {
+          "$ref" : "#/definitions/CompactionStats"
+        },
+        "nonContiguousDeletedMessagesRanges" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "msgChunkPublished" : {
+          "type" : "boolean"
+        },
+        "msgRateIn" : {
           "type" : "number",
           "format" : "double"
         },
-        "msgThroughputOut" : {
+        "msgRateOut" : {
           "type" : "number",
           "format" : "double"
         },
-        "msgRateIn" : {
+        "msgThroughputIn" : {
           "type" : "number",
           "format" : "double"
         },
-        "msgRateOut" : {
+        "msgThroughputOut" : {
           "type" : "number",
           "format" : "double"
         }
@@ -22044,12 +22044,12 @@
           "type" : "integer",
           "format" : "int32"
         },
+        "currency" : {
+          "$ref" : "#/definitions/Currency"
+        },
         "roundingMode" : {
           "type" : "string",
           "enum" : [ "UP", "DOWN", "CEILING", "FLOOR", "HALF_UP", "HALF_DOWN", "HALF_EVEN", "UNNECESSARY" ]
-        },
-        "currency" : {
-          "$ref" : "#/definitions/Currency"
         }
       }
     },
@@ -22117,9 +22117,50 @@
     "OffloadPolicies" : {
       "type" : "object",
       "properties" : {
+        "fileSystemURI" : {
+          "type" : "string"
+        },
+        "offloadersDirectory" : {
+          "type" : "string"
+        },
+        "managedLedgerOffloadDriver" : {
+          "type" : "string"
+        },
+        "managedLedgerOffloadMaxThreads" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "managedLedgerOffloadPrefetchRounds" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "managedLedgerOffloadedReadPriority" : {
+          "type" : "string",
+          "enum" : [ "BOOKKEEPER_FIRST", "TIERED_STORAGE_FIRST" ]
+        },
         "s3ManagedLedgerOffloadRegion" : {
           "type" : "string"
         },
+        "s3ManagedLedgerOffloadBucket" : {
+          "type" : "string"
+        },
+        "s3ManagedLedgerOffloadServiceEndpoint" : {
+          "type" : "string"
+        },
+        "s3ManagedLedgerOffloadMaxBlockSizeInBytes" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "s3ManagedLedgerOffloadReadBufferSizeInBytes" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "s3ManagedLedgerOffloadCredentialId" : {
+          "type" : "string"
+        },
+        "s3ManagedLedgerOffloadCredentialSecret" : {
+          "type" : "string"
+        },
         "s3ManagedLedgerOffloadRole" : {
           "type" : "string"
         },
@@ -22163,33 +22204,6 @@
           "type" : "integer",
           "format" : "int32"
         },
-        "s3ManagedLedgerOffloadMaxBlockSizeInBytes" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
-        "fileSystemURI" : {
-          "type" : "string"
-        },
-        "s3ManagedLedgerOffloadBucket" : {
-          "type" : "string"
-        },
-        "managedLedgerOffloadedReadPriority" : {
-          "type" : "string",
-          "enum" : [ "BOOKKEEPER_FIRST", "TIERED_STORAGE_FIRST" ]
-        },
-        "s3ManagedLedgerOffloadReadBufferSizeInBytes" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
-        "s3ManagedLedgerOffloadCredentialId" : {
-          "type" : "string"
-        },
-        "s3ManagedLedgerOffloadCredentialSecret" : {
-          "type" : "string"
-        },
-        "s3ManagedLedgerOffloadServiceEndpoint" : {
-          "type" : "string"
-        },
         "managedLedgerOffloadThresholdInBytes" : {
           "type" : "integer",
           "format" : "int64"
@@ -22197,20 +22211,6 @@
         "managedLedgerOffloadDeletionLagInMillis" : {
           "type" : "integer",
           "format" : "int64"
-        },
-        "managedLedgerOffloadDriver" : {
-          "type" : "string"
-        },
-        "offloadersDirectory" : {
-          "type" : "string"
-        },
-        "managedLedgerOffloadMaxThreads" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
-        "managedLedgerOffloadPrefetchRounds" : {
-          "type" : "integer",
-          "format" : "int32"
         }
       }
     },
@@ -22980,6 +22980,10 @@
             "type" : "string"
           }
         },
+        "averageMsgSize" : {
+          "type" : "number",
+          "format" : "double"
+        },
         "accessMode" : {
           "type" : "string",
           "enum" : [ "Shared", "Exclusive", "WaitForExclusive" ]
@@ -22998,20 +23002,16 @@
         "clientVersion" : {
           "type" : "string"
         },
-        "averageMsgSize" : {
+        "msgRateIn" : {
           "type" : "number",
           "format" : "double"
         },
-        "producerName" : {
-          "type" : "string"
-        },
         "msgThroughputIn" : {
           "type" : "number",
           "format" : "double"
         },
-        "msgRateIn" : {
-          "type" : "number",
-          "format" : "double"
+        "producerName" : {
+          "type" : "string"
         },
         "address" : {
           "type" : "string"
@@ -23056,19 +23056,19 @@
         "outboundConnectedSince" : {
           "type" : "string"
         },
-        "msgThroughputIn" : {
+        "msgRateIn" : {
           "type" : "number",
           "format" : "double"
         },
-        "msgThroughputOut" : {
+        "msgRateOut" : {
           "type" : "number",
           "format" : "double"
         },
-        "msgRateIn" : {
+        "msgThroughputIn" : {
           "type" : "number",
           "format" : "double"
         },
-        "msgRateOut" : {
+        "msgThroughputOut" : {
           "type" : "number",
           "format" : "double"
         }
@@ -23165,11 +23165,11 @@
     "ResourceUnit" : {
       "type" : "object",
       "properties" : {
-        "availableResource" : {
-          "$ref" : "#/definitions/ResourceDescription"
-        },
         "resourceId" : {
           "type" : "string"
+        },
+        "availableResource" : {
+          "$ref" : "#/definitions/ResourceDescription"
         }
       }
     },
@@ -23222,6 +23222,14 @@
     "SerializationConfig" : {
       "type" : "object",
       "properties" : {
+        "serializationInclusion" : {
+          "type" : "string",
+          "enum" : [ "ALWAYS", "NON_NULL", "NON_ABSENT", "NON_EMPTY", "NON_DEFAULT", "USE_DEFAULTS" ]
+        },
+        "serializationFeatures" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
         "defaultPropertyInclusion" : {
           "$ref" : "#/definitions/Value"
         },
@@ -23234,14 +23242,6 @@
         "annotationIntrospector" : {
           "$ref" : "#/definitions/AnnotationIntrospector"
         },
-        "serializationInclusion" : {
-          "type" : "string",
-          "enum" : [ "ALWAYS", "NON_NULL", "NON_ABSENT", "NON_EMPTY", "NON_DEFAULT", "USE_DEFAULTS" ]
-        },
-        "serializationFeatures" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
         "rootName" : {
           "type" : "string"
         },
@@ -23411,10 +23411,53 @@
     "SubscriptionStats" : {
       "type" : "object",
       "properties" : {
+        "nonContiguousDeletedMessagesRangesSerializedSize" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "bytesOutCounter" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "msgOutCounter" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "backlogSize" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "nonContiguousDeletedMessagesRanges" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "chunkedMessageRate" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "msgRateExpired" : {
+          "type" : "number",
+          "format" : "double"
+        },
         "msgBacklog" : {
           "type" : "integer",
           "format" : "int64"
         },
+        "msgRateRedeliver" : {
+          "type" : "number",
+          "format" : "double"
+        },
+        "msgBacklogNoDelayed" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "blockedSubscriptionOnUnackedMsgs" : {
+          "type" : "boolean"
+        },
+        "msgDelayed" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
         "unackedMessages" : {
           "type" : "integer",
           "format" : "int64"
@@ -23458,69 +23501,26 @@
             "type" : "string"
           }
         },
-        "chunkedMessageRate" : {
-          "type" : "integer",
-          "format" : "int32"
+        "replicated" : {
+          "type" : "boolean"
         },
-        "msgRateExpired" : {
+        "msgRateOut" : {
           "type" : "number",
           "format" : "double"
         },
-        "msgRateRedeliver" : {
+        "msgThroughputOut" : {
           "type" : "number",
           "format" : "double"
         },
-        "msgBacklogNoDelayed" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
-        "blockedSubscriptionOnUnackedMsgs" : {
-          "type" : "boolean"
-        },
-        "msgDelayed" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
-        "replicated" : {
-          "type" : "boolean"
-        },
         "consumers" : {
           "type" : "array",
           "items" : {
             "$ref" : "#/definitions/ConsumerStats"
           }
         },
-        "nonContiguousDeletedMessagesRangesSerializedSize" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
-        "nonContiguousDeletedMessagesRanges" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
-        "backlogSize" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
-        "bytesOutCounter" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
-        "msgOutCounter" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
         "durable" : {
           "type" : "boolean"
         },
-        "msgThroughputOut" : {
-          "type" : "number",
-          "format" : "double"
-        },
-        "msgRateOut" : {
-          "type" : "number",
-          "format" : "double"
-        },
         "type" : {
           "type" : "string"
         }
@@ -23585,9 +23585,6 @@
     "TimeZone" : {
       "type" : "object",
       "properties" : {
-        "displayName" : {
-          "type" : "string"
-        },
         "dstsavings" : {
           "type" : "integer",
           "format" : "int32"
@@ -23598,12 +23595,23 @@
         },
         "id" : {
           "type" : "string"
+        },
+        "displayName" : {
+          "type" : "string"
         }
       }
     },
     "TopicStats" : {
       "type" : "object",
       "properties" : {
+        "offloadedStorageSize" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "nonContiguousDeletedMessagesRangesSerializedSize" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
         "bytesInCounter" : {
           "type" : "integer",
           "format" : "int64"
@@ -23612,26 +23620,21 @@
           "type" : "integer",
           "format" : "int64"
         },
-        "msgChunkPublished" : {
-          "type" : "boolean"
-        },
-        "nonContiguousDeletedMessagesRangesSerializedSize" : {
+        "bytesOutCounter" : {
           "type" : "integer",
-          "format" : "int32"
-        },
-        "deduplicationStatus" : {
-          "type" : "string"
+          "format" : "int64"
         },
-        "topicEpoch" : {
+        "msgOutCounter" : {
           "type" : "integer",
           "format" : "int64"
         },
-        "nonContiguousDeletedMessagesRanges" : {
-          "type" : "integer",
-          "format" : "int32"
+        "averageMsgSize" : {
+          "type" : "number",
+          "format" : "double"
         },
-        "compaction" : {
-          "$ref" : "#/definitions/CompactionStats"
+        "storageSize" : {
+          "type" : "integer",
+          "format" : "int64"
         },
         "backlogSize" : {
           "type" : "integer",
@@ -23653,47 +23656,44 @@
             "$ref" : "#/definitions/ReplicatorStats"
           }
         },
-        "bytesOutCounter" : {
-          "type" : "integer",
-          "format" : "int64"
+        "deduplicationStatus" : {
+          "type" : "string"
         },
-        "msgOutCounter" : {
+        "topicEpoch" : {
           "type" : "integer",
           "format" : "int64"
         },
-        "averageMsgSize" : {
-          "type" : "number",
-          "format" : "double"
-        },
-        "storageSize" : {
-          "type" : "integer",
-          "format" : "int64"
+        "compaction" : {
+          "$ref" : "#/definitions/CompactionStats"
         },
-        "offloadedStorageSize" : {
+        "nonContiguousDeletedMessagesRanges" : {
           "type" : "integer",
-          "format" : "int64"
+          "format" : "int32"
         },
-        "subscriptions" : {
-          "type" : "object",
-          "additionalProperties" : {
-            "$ref" : "#/definitions/SubscriptionStats"
-          }
+        "msgChunkPublished" : {
+          "type" : "boolean"
         },
-        "msgThroughputIn" : {
+        "msgRateIn" : {
           "type" : "number",
           "format" : "double"
         },
-        "msgThroughputOut" : {
+        "msgRateOut" : {
           "type" : "number",
           "format" : "double"
         },
-        "msgRateIn" : {
+        "msgThroughputIn" : {
           "type" : "number",
           "format" : "double"
         },
-        "msgRateOut" : {
+        "msgThroughputOut" : {
           "type" : "number",
           "format" : "double"
+        },
+        "subscriptions" : {
+          "type" : "object",
+          "additionalProperties" : {
+            "$ref" : "#/definitions/SubscriptionStats"
+          }
         }
       }
     },
@@ -24099,14 +24099,14 @@
         "sinks" : {
           "$ref" : "#/definitions/SinksWorkerService"
         },
+        "workerConfig" : {
+          "$ref" : "#/definitions/WorkerConfig"
+        },
         "functionsV2" : {
           "$ref" : "#/definitions/FunctionsV2WorkerService"
         },
         "workers" : {
           "$ref" : "#/definitions/WorkersWorkerService"
-        },
-        "workerConfig" : {
-          "$ref" : "#/definitions/WorkerConfig"
         }
       }
     },
@@ -24143,16 +24143,6 @@
         "issuerX500Principal" : {
           "$ref" : "#/definitions/X500Principal"
         },
-        "issuerDN" : {
-          "$ref" : "#/definitions/Principal"
-        },
-        "subjectDN" : {
-          "$ref" : "#/definitions/Principal"
-        },
-        "version" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
         "extendedKeyUsage" : {
           "type" : "array",
           "items" : {
@@ -24216,6 +24206,16 @@
             }
           }
         },
+        "issuerDN" : {
+          "$ref" : "#/definitions/Principal"
+        },
+        "subjectDN" : {
+          "$ref" : "#/definitions/Principal"
+        },
+        "version" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
         "serialNumber" : {
           "type" : "integer"
         },
diff --git a/content/swagger/master/swaggerfunctions.json b/content/swagger/master/swaggerfunctions.json
index 43a7291..92f3082 100644
--- a/content/swagger/master/swaggerfunctions.json
+++ b/content/swagger/master/swaggerfunctions.json
@@ -971,12 +971,12 @@
             "$ref" : "#/definitions/X509Certificate"
           }
         },
-        "httpAuthType" : {
-          "type" : "string"
-        },
         "peerAddress" : {
           "$ref" : "#/definitions/SocketAddress"
         },
+        "httpAuthType" : {
+          "type" : "string"
+        },
         "commandData" : {
           "type" : "string"
         }
@@ -1048,16 +1048,16 @@
     "CompletableFuture" : {
       "type" : "object",
       "properties" : {
-        "numberOfDependents" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
         "done" : {
           "type" : "boolean"
         },
         "cancelled" : {
           "type" : "boolean"
         },
+        "numberOfDependents" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
         "completedExceptionally" : {
           "type" : "boolean"
         }
@@ -1066,16 +1066,16 @@
     "CompletableFutureClusterData" : {
       "type" : "object",
       "properties" : {
-        "numberOfDependents" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
         "done" : {
           "type" : "boolean"
         },
         "cancelled" : {
           "type" : "boolean"
         },
+        "numberOfDependents" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
         "completedExceptionally" : {
           "type" : "boolean"
         }
@@ -1165,10 +1165,10 @@
         "displayName" : {
           "type" : "string"
         },
-        "numericCodeAsString" : {
+        "symbol" : {
           "type" : "string"
         },
-        "symbol" : {
+        "numericCodeAsString" : {
           "type" : "string"
         }
       }
@@ -1538,9 +1538,6 @@
     "FunctionInstanceStatsData" : {
       "type" : "object",
       "properties" : {
-        "oneMin" : {
-          "$ref" : "#/definitions/FunctionInstanceStatsDataBase"
-        },
         "lastInvocation" : {
           "type" : "integer",
           "format" : "int64"
@@ -1552,6 +1549,9 @@
             "format" : "double"
           }
         },
+        "oneMin" : {
+          "$ref" : "#/definitions/FunctionInstanceStatsDataBase"
+        },
         "receivedTotal" : {
           "type" : "integer",
           "format" : "int64"
@@ -1934,17 +1934,17 @@
         "formatName" : {
           "type" : "string"
         },
-        "characterEscapes" : {
-          "$ref" : "#/definitions/CharacterEscapes"
-        },
-        "rootValueSeparator" : {
-          "type" : "string"
-        },
         "inputDecorator" : {
           "$ref" : "#/definitions/InputDecorator"
         },
         "outputDecorator" : {
           "$ref" : "#/definitions/OutputDecorator"
+        },
+        "rootValueSeparator" : {
+          "type" : "string"
+        },
+        "characterEscapes" : {
+          "$ref" : "#/definitions/CharacterEscapes"
         }
       }
     },
@@ -1996,10 +1996,6 @@
     "JsonLocation" : {
       "type" : "object",
       "properties" : {
-        "byteOffset" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
         "sourceRef" : {
           "type" : "object"
         },
@@ -2014,6 +2010,10 @@
         "charOffset" : {
           "type" : "integer",
           "format" : "int64"
+        },
+        "byteOffset" : {
+          "type" : "integer",
+          "format" : "int64"
         }
       }
     },
@@ -2191,20 +2191,20 @@
     "JsonStreamContext" : {
       "type" : "object",
       "properties" : {
-        "currentName" : {
+        "typeDesc" : {
           "type" : "string"
         },
-        "currentValue" : {
-          "type" : "object"
-        },
-        "entryCount" : {
+        "currentIndex" : {
           "type" : "integer",
           "format" : "int32"
         },
-        "typeDesc" : {
+        "currentName" : {
           "type" : "string"
         },
-        "currentIndex" : {
+        "currentValue" : {
+          "type" : "object"
+        },
+        "entryCount" : {
           "type" : "integer",
           "format" : "int32"
         },
@@ -2284,6 +2284,13 @@
     "Message" : {
       "type" : "object",
       "properties" : {
+        "data" : {
+          "type" : "array",
+          "items" : {
+            "type" : "string",
+            "format" : "byte"
+          }
+        },
         "messageId" : {
           "$ref" : "#/definitions/MessageId"
         },
@@ -2308,12 +2315,8 @@
           "type" : "integer",
           "format" : "int64"
         },
-        "data" : {
-          "type" : "array",
-          "items" : {
-            "type" : "string",
-            "format" : "byte"
-          }
+        "topicName" : {
+          "type" : "string"
         },
         "replicated" : {
           "type" : "boolean"
@@ -2350,9 +2353,6 @@
             "format" : "byte"
           }
         },
-        "topicName" : {
-          "type" : "string"
-        },
         "value" : {
           "type" : "object"
         },
@@ -2455,12 +2455,12 @@
           "type" : "integer",
           "format" : "int32"
         },
+        "currency" : {
+          "$ref" : "#/definitions/Currency"
+        },
         "roundingMode" : {
           "type" : "string",
           "enum" : [ "UP", "DOWN", "CEILING", "FLOOR", "HALF_UP", "HALF_DOWN", "HALF_EVEN", "UNNECESSARY" ]
-        },
-        "currency" : {
-          "$ref" : "#/definitions/Currency"
         }
       }
     },
@@ -2707,6 +2707,14 @@
     "SerializationConfig" : {
       "type" : "object",
       "properties" : {
+        "serializationInclusion" : {
+          "type" : "string",
+          "enum" : [ "ALWAYS", "NON_NULL", "NON_ABSENT", "NON_EMPTY", "NON_DEFAULT", "USE_DEFAULTS" ]
+        },
+        "serializationFeatures" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
         "defaultPropertyInclusion" : {
           "$ref" : "#/definitions/Value"
         },
@@ -2719,14 +2727,6 @@
         "annotationIntrospector" : {
           "$ref" : "#/definitions/AnnotationIntrospector"
         },
-        "serializationInclusion" : {
-          "type" : "string",
-          "enum" : [ "ALWAYS", "NON_NULL", "NON_ABSENT", "NON_EMPTY", "NON_DEFAULT", "USE_DEFAULTS" ]
-        },
-        "serializationFeatures" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
         "rootName" : {
           "type" : "string"
         },
@@ -2818,9 +2818,6 @@
     "TimeZone" : {
       "type" : "object",
       "properties" : {
-        "displayName" : {
-          "type" : "string"
-        },
         "dstsavings" : {
           "type" : "integer",
           "format" : "int32"
@@ -2831,6 +2828,9 @@
         },
         "id" : {
           "type" : "string"
+        },
+        "displayName" : {
+          "type" : "string"
         }
       }
     },
@@ -2950,16 +2950,6 @@
         "issuerX500Principal" : {
           "$ref" : "#/definitions/X500Principal"
         },
-        "issuerDN" : {
-          "$ref" : "#/definitions/Principal"
-        },
-        "subjectDN" : {
-          "$ref" : "#/definitions/Principal"
-        },
-        "version" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
         "extendedKeyUsage" : {
           "type" : "array",
           "items" : {
@@ -3023,6 +3013,16 @@
             }
           }
         },
+        "issuerDN" : {
+          "$ref" : "#/definitions/Principal"
+        },
+        "subjectDN" : {
+          "$ref" : "#/definitions/Principal"
+        },
+        "version" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
         "serialNumber" : {
           "type" : "integer"
         },
diff --git a/content/swagger/master/swaggerpackages.json b/content/swagger/master/swaggerpackages.json
index cd74920..0cbc1e8 100644
--- a/content/swagger/master/swaggerpackages.json
+++ b/content/swagger/master/swaggerpackages.json
@@ -420,12 +420,12 @@
             "$ref" : "#/definitions/X509Certificate"
           }
         },
-        "httpAuthType" : {
-          "type" : "string"
-        },
         "peerAddress" : {
           "$ref" : "#/definitions/SocketAddress"
         },
+        "httpAuthType" : {
+          "type" : "string"
+        },
         "commandData" : {
           "type" : "string"
         }
@@ -497,16 +497,16 @@
     "CompletableFuture" : {
       "type" : "object",
       "properties" : {
-        "numberOfDependents" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
         "done" : {
           "type" : "boolean"
         },
         "cancelled" : {
           "type" : "boolean"
         },
+        "numberOfDependents" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
         "completedExceptionally" : {
           "type" : "boolean"
         }
@@ -515,16 +515,16 @@
     "CompletableFutureClusterData" : {
       "type" : "object",
       "properties" : {
-        "numberOfDependents" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
         "done" : {
           "type" : "boolean"
         },
         "cancelled" : {
           "type" : "boolean"
         },
+        "numberOfDependents" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
         "completedExceptionally" : {
           "type" : "boolean"
         }
@@ -550,10 +550,10 @@
         "displayName" : {
           "type" : "string"
         },
-        "numericCodeAsString" : {
+        "symbol" : {
           "type" : "string"
         },
-        "symbol" : {
+        "numericCodeAsString" : {
           "type" : "string"
         }
       }
@@ -808,17 +808,17 @@
         "formatName" : {
           "type" : "string"
         },
-        "characterEscapes" : {
-          "$ref" : "#/definitions/CharacterEscapes"
-        },
-        "rootValueSeparator" : {
-          "type" : "string"
-        },
         "inputDecorator" : {
           "$ref" : "#/definitions/InputDecorator"
         },
         "outputDecorator" : {
           "$ref" : "#/definitions/OutputDecorator"
+        },
+        "rootValueSeparator" : {
+          "type" : "string"
+        },
+        "characterEscapes" : {
+          "$ref" : "#/definitions/CharacterEscapes"
         }
       }
     },
@@ -870,10 +870,6 @@
     "JsonLocation" : {
       "type" : "object",
       "properties" : {
-        "byteOffset" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
         "sourceRef" : {
           "type" : "object"
         },
@@ -888,6 +884,10 @@
         "charOffset" : {
           "type" : "integer",
           "format" : "int64"
+        },
+        "byteOffset" : {
+          "type" : "integer",
+          "format" : "int64"
         }
       }
     },
@@ -1065,20 +1065,20 @@
     "JsonStreamContext" : {
       "type" : "object",
       "properties" : {
-        "currentName" : {
+        "typeDesc" : {
           "type" : "string"
         },
-        "currentValue" : {
-          "type" : "object"
-        },
-        "entryCount" : {
+        "currentIndex" : {
           "type" : "integer",
           "format" : "int32"
         },
-        "typeDesc" : {
+        "currentName" : {
           "type" : "string"
         },
-        "currentIndex" : {
+        "currentValue" : {
+          "type" : "object"
+        },
+        "entryCount" : {
           "type" : "integer",
           "format" : "int32"
         },
@@ -1236,12 +1236,12 @@
           "type" : "integer",
           "format" : "int32"
         },
+        "currency" : {
+          "$ref" : "#/definitions/Currency"
+        },
         "roundingMode" : {
           "type" : "string",
           "enum" : [ "UP", "DOWN", "CEILING", "FLOOR", "HALF_UP", "HALF_DOWN", "HALF_EVEN", "UNNECESSARY" ]
-        },
-        "currency" : {
-          "$ref" : "#/definitions/Currency"
         }
       }
     },
@@ -1424,6 +1424,14 @@
     "SerializationConfig" : {
       "type" : "object",
       "properties" : {
+        "serializationInclusion" : {
+          "type" : "string",
+          "enum" : [ "ALWAYS", "NON_NULL", "NON_ABSENT", "NON_EMPTY", "NON_DEFAULT", "USE_DEFAULTS" ]
+        },
+        "serializationFeatures" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
         "defaultPropertyInclusion" : {
           "$ref" : "#/definitions/Value"
         },
@@ -1436,14 +1444,6 @@
         "annotationIntrospector" : {
           "$ref" : "#/definitions/AnnotationIntrospector"
         },
-        "serializationInclusion" : {
-          "type" : "string",
-          "enum" : [ "ALWAYS", "NON_NULL", "NON_ABSENT", "NON_EMPTY", "NON_DEFAULT", "USE_DEFAULTS" ]
-        },
-        "serializationFeatures" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
         "rootName" : {
           "type" : "string"
         },
@@ -1538,9 +1538,6 @@
     "TimeZone" : {
       "type" : "object",
       "properties" : {
-        "displayName" : {
-          "type" : "string"
-        },
         "dstsavings" : {
           "type" : "integer",
           "format" : "int32"
@@ -1551,6 +1548,9 @@
         },
         "id" : {
           "type" : "string"
+        },
+        "displayName" : {
+          "type" : "string"
         }
       }
     },
@@ -1622,16 +1622,6 @@
         "issuerX500Principal" : {
           "$ref" : "#/definitions/X500Principal"
         },
-        "issuerDN" : {
-          "$ref" : "#/definitions/Principal"
-        },
-        "subjectDN" : {
-          "$ref" : "#/definitions/Principal"
-        },
-        "version" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
         "extendedKeyUsage" : {
           "type" : "array",
           "items" : {
@@ -1695,6 +1685,16 @@
             }
           }
         },
+        "issuerDN" : {
+          "$ref" : "#/definitions/Principal"
+        },
+        "subjectDN" : {
+          "$ref" : "#/definitions/Principal"
+        },
+        "version" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
         "serialNumber" : {
           "type" : "integer"
         },
diff --git a/content/swagger/master/swaggersink.json b/content/swagger/master/swaggersink.json
index 2a37a37..fb21a09 100644
--- a/content/swagger/master/swaggersink.json
+++ b/content/swagger/master/swaggersink.json
@@ -810,12 +810,12 @@
             "$ref" : "#/definitions/X509Certificate"
           }
         },
-        "httpAuthType" : {
-          "type" : "string"
-        },
         "peerAddress" : {
           "$ref" : "#/definitions/SocketAddress"
         },
+        "httpAuthType" : {
+          "type" : "string"
+        },
         "commandData" : {
           "type" : "string"
         }
@@ -887,16 +887,16 @@
     "CompletableFuture" : {
       "type" : "object",
       "properties" : {
-        "numberOfDependents" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
         "done" : {
           "type" : "boolean"
         },
         "cancelled" : {
           "type" : "boolean"
         },
+        "numberOfDependents" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
         "completedExceptionally" : {
           "type" : "boolean"
         }
@@ -905,16 +905,16 @@
     "CompletableFutureClusterData" : {
       "type" : "object",
       "properties" : {
-        "numberOfDependents" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
         "done" : {
           "type" : "boolean"
         },
         "cancelled" : {
           "type" : "boolean"
         },
+        "numberOfDependents" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
         "completedExceptionally" : {
           "type" : "boolean"
         }
@@ -1044,10 +1044,10 @@
         "displayName" : {
           "type" : "string"
         },
-        "numericCodeAsString" : {
+        "symbol" : {
           "type" : "string"
         },
-        "symbol" : {
+        "numericCodeAsString" : {
           "type" : "string"
         }
       }
@@ -1314,17 +1314,17 @@
         "formatName" : {
           "type" : "string"
         },
-        "characterEscapes" : {
-          "$ref" : "#/definitions/CharacterEscapes"
-        },
-        "rootValueSeparator" : {
-          "type" : "string"
-        },
         "inputDecorator" : {
           "$ref" : "#/definitions/InputDecorator"
         },
         "outputDecorator" : {
           "$ref" : "#/definitions/OutputDecorator"
+        },
+        "rootValueSeparator" : {
+          "type" : "string"
+        },
+        "characterEscapes" : {
+          "$ref" : "#/definitions/CharacterEscapes"
         }
       }
     },
@@ -1376,10 +1376,6 @@
     "JsonLocation" : {
       "type" : "object",
       "properties" : {
-        "byteOffset" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
         "sourceRef" : {
           "type" : "object"
         },
@@ -1394,6 +1390,10 @@
         "charOffset" : {
           "type" : "integer",
           "format" : "int64"
+        },
+        "byteOffset" : {
+          "type" : "integer",
+          "format" : "int64"
... 2679 lines suppressed ...