[hbase] 16/16: HBASE-26265 Update ref guide to mention the new store file tracker im… (#3942)

2021-12-22 Thread elserj
This is an automated email from the ASF dual-hosted git repository.

elserj pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hbase.git

commit f16b7b1bfa49a68029c8ec7c1882ff4bd5536593
Author: Wellington Ramos Chevreuil 
AuthorDate: Thu Dec 16 21:07:38 2021 +

HBASE-26265 Update ref guide to mention the new store file tracker im… 
(#3942)
---
 .../asciidoc/_chapters/store_file_tracking.adoc| 145 +
 src/main/asciidoc/book.adoc|   1 +
 2 files changed, 146 insertions(+)

diff --git a/src/main/asciidoc/_chapters/store_file_tracking.adoc 
b/src/main/asciidoc/_chapters/store_file_tracking.adoc
new file mode 100644
index 000..74d802f
--- /dev/null
+++ b/src/main/asciidoc/_chapters/store_file_tracking.adoc
@@ -0,0 +1,145 @@
+
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+[[storefiletracking]]
+= Store File Tracking
+:doctype: book
+:numbered:
+:toc: left
+:icons: font
+:experimental:
+
+== Overview
+
+This feature introduces an abstraction layer to track store files still 
used/needed by store
+engines, allowing for plugging different approaches of identifying store
+files required by the given store.
+
+Historically, HBase internals have relied on creating hfiles on temporary 
directories first, renaming
+those files to the actual store directory at operation commit time. That's a 
simple and convenient
+way to separate transient from already finalised files that are ready to serve 
client reads with data.
+This approach works well with strong consistent file systems, but with the 
popularity of less consistent
+file systems, mainly Object Store which can be used like file systems, 
dependency on atomic rename operations starts to introduce
+performance penalties. The Amazon S3 Object Store, in particular, has been the 
most affected deployment,
+due to its lack of atomic renames. The HBase community temporarily bypassed 
this problem by building a distributed locking layer called HBOSS,
+to guarantee atomicity of operations against S3.
+
+With *Store File Tracking*, decision on where to originally create new hfiles 
and how to proceed upon
+commit is delegated to the specific Store File Tracking implementation.
+The implementation can be set at the HBase service leve in *hbase-site.xml* or 
at the
+Table or Column Family via the TableDescriptor configuration.
+
+NOTE: When the store file tracking implementation is specified in 
*hbase_site.xml*, this configuration is also propagated into a tables 
configuration
+at table creation time. This is to avoid dangerous configuration mismatches 
between processes, which
+could potentially lead to data loss.
+
+== Available Implementations
+
+Store File Tracking initial version provides three builtin implementations:
+
+* DEFAULT
+* FILE
+* MIGRATION
+
+### DEFAULT
+
+As per the name, this is the Store File Tracking implementation used by 
default when no explicit
+configuration has been defined. The DEFAULT tracker implements the standard 
approach using temporary
+directories and renames. This is how all previous (implicit) implementation 
that HBase used to track store files.
+
+### FILE
+
+A file tracker implementation that creates new files straight in the store 
directory, avoiding the
+need for rename operations. It keeps a list of committed hfiles in memory, 
backed by meta files, in
+each store directory. Whenever a new hfile is committed, the list of _tracked 
files_ in the given
+store is updated and a new meta file is written with this list contents, 
discarding the previous
+meta file now containing an out dated list.
+
+### MIGRATION
+
+A special implementation to be used when swapping between Store File Tracking 
implementations on
+pre-existing tables that already contain data, and therefore, files being 
tracked under an specific
+logic.
+
+== Usage
+
+For fresh deployments that don't yet contain any user data, *FILE* 
implementation can be just set as
+value for *hbase.store.file-tracker.impl* property in global *hbase-site.xml* 
configuration, prior
+to the first hbase start. Omitting this property sets the *DEFAULT* 
implementation.
+
+For clusters with data that are upgraded to 

[hbase] 16/16: HBASE-26265 Update ref guide to mention the new store file tracker im… (#3942)

2021-12-17 Thread zhangduo
This is an automated email from the ASF dual-hosted git repository.

zhangduo pushed a commit to branch HBASE-26067
in repository https://gitbox.apache.org/repos/asf/hbase.git

commit a6cc0af9a9dd2c822eb6ba15c88f998944f86e62
Author: Wellington Ramos Chevreuil 
AuthorDate: Thu Dec 16 21:07:38 2021 +

HBASE-26265 Update ref guide to mention the new store file tracker im… 
(#3942)
---
 .../asciidoc/_chapters/store_file_tracking.adoc| 145 +
 src/main/asciidoc/book.adoc|   1 +
 2 files changed, 146 insertions(+)

diff --git a/src/main/asciidoc/_chapters/store_file_tracking.adoc 
b/src/main/asciidoc/_chapters/store_file_tracking.adoc
new file mode 100644
index 000..74d802f
--- /dev/null
+++ b/src/main/asciidoc/_chapters/store_file_tracking.adoc
@@ -0,0 +1,145 @@
+
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+[[storefiletracking]]
+= Store File Tracking
+:doctype: book
+:numbered:
+:toc: left
+:icons: font
+:experimental:
+
+== Overview
+
+This feature introduces an abstraction layer to track store files still 
used/needed by store
+engines, allowing for plugging different approaches of identifying store
+files required by the given store.
+
+Historically, HBase internals have relied on creating hfiles on temporary 
directories first, renaming
+those files to the actual store directory at operation commit time. That's a 
simple and convenient
+way to separate transient from already finalised files that are ready to serve 
client reads with data.
+This approach works well with strong consistent file systems, but with the 
popularity of less consistent
+file systems, mainly Object Store which can be used like file systems, 
dependency on atomic rename operations starts to introduce
+performance penalties. The Amazon S3 Object Store, in particular, has been the 
most affected deployment,
+due to its lack of atomic renames. The HBase community temporarily bypassed 
this problem by building a distributed locking layer called HBOSS,
+to guarantee atomicity of operations against S3.
+
+With *Store File Tracking*, decision on where to originally create new hfiles 
and how to proceed upon
+commit is delegated to the specific Store File Tracking implementation.
+The implementation can be set at the HBase service leve in *hbase-site.xml* or 
at the
+Table or Column Family via the TableDescriptor configuration.
+
+NOTE: When the store file tracking implementation is specified in 
*hbase_site.xml*, this configuration is also propagated into a tables 
configuration
+at table creation time. This is to avoid dangerous configuration mismatches 
between processes, which
+could potentially lead to data loss.
+
+== Available Implementations
+
+Store File Tracking initial version provides three builtin implementations:
+
+* DEFAULT
+* FILE
+* MIGRATION
+
+### DEFAULT
+
+As per the name, this is the Store File Tracking implementation used by 
default when no explicit
+configuration has been defined. The DEFAULT tracker implements the standard 
approach using temporary
+directories and renames. This is how all previous (implicit) implementation 
that HBase used to track store files.
+
+### FILE
+
+A file tracker implementation that creates new files straight in the store 
directory, avoiding the
+need for rename operations. It keeps a list of committed hfiles in memory, 
backed by meta files, in
+each store directory. Whenever a new hfile is committed, the list of _tracked 
files_ in the given
+store is updated and a new meta file is written with this list contents, 
discarding the previous
+meta file now containing an out dated list.
+
+### MIGRATION
+
+A special implementation to be used when swapping between Store File Tracking 
implementations on
+pre-existing tables that already contain data, and therefore, files being 
tracked under an specific
+logic.
+
+== Usage
+
+For fresh deployments that don't yet contain any user data, *FILE* 
implementation can be just set as
+value for *hbase.store.file-tracker.impl* property in global *hbase-site.xml* 
configuration, prior
+to the first hbase start. Omitting this property sets the *DEFAULT* 
implementation.
+
+For clusters with data that are upgra