hbase git commit: HBASE-17089 Add doc on experience running with hedged reads; ADDENDUM adding in Ashu Pachauri's experience

2016-11-14 Thread stack
Repository: hbase
Updated Branches:
  refs/heads/master c7bdb3017 -> 86df89b01


HBASE-17089 Add doc on experience running with hedged reads; ADDENDUM adding in 
Ashu Pachauri's experience


Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/86df89b0
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/86df89b0
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/86df89b0

Branch: refs/heads/master
Commit: 86df89b01608052dad4ef75abde5a3fe79447ac0
Parents: c7bdb30
Author: Michael Stack 
Authored: Mon Nov 14 21:06:29 2016 -0800
Committer: Michael Stack 
Committed: Mon Nov 14 21:06:29 2016 -0800

--
 src/main/asciidoc/_chapters/performance.adoc | 31 +--
 1 file changed, 23 insertions(+), 8 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/hbase/blob/86df89b0/src/main/asciidoc/_chapters/performance.adoc
--
diff --git a/src/main/asciidoc/_chapters/performance.adoc 
b/src/main/asciidoc/_chapters/performance.adoc
index bc8b48a..114754f 100644
--- a/src/main/asciidoc/_chapters/performance.adoc
+++ b/src/main/asciidoc/_chapters/performance.adoc
@@ -760,11 +760,30 @@ See the _Development Process_ section of the document 
link:https://issues.apache
 
 Hedged reads are a feature of HDFS, introduced in Hadoop 2.4.0 with 
link:https://issues.apache.org/jira/browse/HDFS-5776[HDFS-5776].
 Normally, a single thread is spawned for each read request.
-However, if hedged reads are enabled, the client waits some configurable 
amount of time, and if the read does not return, the client spawns a second 
read request, against a different block replica of the same data.
-Whichever read returns first is used, and the other read request is discarded.
-Hedged reads can be helpful for times where a rare slow read is caused by a 
transient error such as a failing disk or flaky network connection.
+However, if hedged reads are enabled, the client waits some
+configurable amount of time, and if the read does not return,
+the client spawns a second read request, against a different
+block replica of the same data. Whichever read returns first is
+used, and the other read request is discarded.
+
+Hedged reads are "...very good at eliminating outlier datanodes, which
+in turn makes them very good choice for latency sensitive setups.
+But, if you are looking for maximizing throughput, hedged reads tend to
+create load amplification as things get slower in general. In short,
+the thing to watch out for is the non-graceful performance degradation
+when you are running close a certain throughput threshold." (Quote from Ashu 
Pachauri in HBASE-17083).
+
+Other concerns to keep in mind while running with hedged reads enabled
+include:
 
-Because an HBase RegionServer is a HDFS client, you can enable hedged reads in 
HBase, by adding the following properties to the RegionServer's hbase-site.xml 
and tuning the values to suit your environment.
+* They may lead to network congestion. See 
link:https://issues.apache.org/jira/browse/HBASE-17083[HBASE-17083]
+* Make sure you set the thread pool large enough so as blocking on the pool 
does not become a bottleneck (Again see 
link:https://issues.apache.org/jira/browse/HBASE-17083[HBASE-17083])
+
+(From Yu Li up in HBASE-17083)
+
+Because an HBase RegionServer is a HDFS client, you can enable hedged
+reads in HBase, by adding the following properties to the RegionServer's
+hbase-site.xml and tuning the values to suit your environment.
 
 .Configuration for Hedged Reads
 * `dfs.client.hedged.read.threadpool.size` - the number of threads dedicated 
to servicing hedged reads.
@@ -795,10 +814,6 @@ See <>  for more information.
 * hedgeReadOpsWin - the number of times the hedged read thread was faster than 
the original thread.
   This could indicate that a given RegionServer is having trouble servicing 
requests.
 
-Concerns while running with hedged reads enabled include:
-
-* They may lead to network congestion. See 
link:https://issues.apache.org/jira/browse/HBASE-17083[HBASE-17083]
-* Make sure you set the thread pool large enough so as blocking on the pool 
does not become a bottleneck (Again see 
link:https://issues.apache.org/jira/browse/HBASE-17083[HBASE-17083])
 
 [[perf.deleting]]
 == Deleting from HBase



hbase git commit: HBASE-17089 Add doc on experience running with hedged reads

2016-11-14 Thread stack
Repository: hbase
Updated Branches:
  refs/heads/master c3685760f -> 6ee2dcf48


HBASE-17089 Add doc on experience running with hedged reads


Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/6ee2dcf4
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/6ee2dcf4
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/6ee2dcf4

Branch: refs/heads/master
Commit: 6ee2dcf480dd95877a20e33086a020eb1a19e41f
Parents: c368576
Author: Michael Stack 
Authored: Mon Nov 14 10:27:58 2016 -0800
Committer: Michael Stack 
Committed: Mon Nov 14 10:28:09 2016 -0800

--
 src/main/asciidoc/_chapters/performance.adoc | 12 +++-
 src/main/asciidoc/_chapters/protobuf.adoc|  5 +++--
 2 files changed, 14 insertions(+), 3 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/hbase/blob/6ee2dcf4/src/main/asciidoc/_chapters/performance.adoc
--
diff --git a/src/main/asciidoc/_chapters/performance.adoc 
b/src/main/asciidoc/_chapters/performance.adoc
index 5f27640..bc8b48a 100644
--- a/src/main/asciidoc/_chapters/performance.adoc
+++ b/src/main/asciidoc/_chapters/performance.adoc
@@ -156,6 +156,10 @@ See <>
 
 See <>.
 
+[[perf.99th.percentile]]
+=== Improving the 99th Percentile
+Try link:[hedged_reads].
+
 [[perf.compactions.and.splits]]
 === Managing Compactions
 
@@ -751,9 +755,10 @@ Most people should leave this alone.
 Default = 7, or can collapse to at least 1/128th of original size.
 See the _Development Process_ section of the document 
link:https://issues.apache.org/jira/secure/attachment/12444007/Bloom_Filters_in_HBase.pdf[BloomFilters
 in HBase] for more on what this option means.
 
+[[hedged.reads]]
 === Hedged Reads
 
-Hedged reads are a feature of HDFS, introduced in 
link:https://issues.apache.org/jira/browse/HDFS-5776[HDFS-5776].
+Hedged reads are a feature of HDFS, introduced in Hadoop 2.4.0 with 
link:https://issues.apache.org/jira/browse/HDFS-5776[HDFS-5776].
 Normally, a single thread is spawned for each read request.
 However, if hedged reads are enabled, the client waits some configurable 
amount of time, and if the read does not return, the client spawns a second 
read request, against a different block replica of the same data.
 Whichever read returns first is used, and the other read request is discarded.
@@ -790,6 +795,11 @@ See <>  for more information.
 * hedgeReadOpsWin - the number of times the hedged read thread was faster than 
the original thread.
   This could indicate that a given RegionServer is having trouble servicing 
requests.
 
+Concerns while running with hedged reads enabled include:
+
+* They may lead to network congestion. See 
link:https://issues.apache.org/jira/browse/HBASE-17083[HBASE-17083]
+* Make sure you set the thread pool large enough so as blocking on the pool 
does not become a bottleneck (Again see 
link:https://issues.apache.org/jira/browse/HBASE-17083[HBASE-17083])
+
 [[perf.deleting]]
 == Deleting from HBase
 

http://git-wip-us.apache.org/repos/asf/hbase/blob/6ee2dcf4/src/main/asciidoc/_chapters/protobuf.adoc
--
diff --git a/src/main/asciidoc/_chapters/protobuf.adoc 
b/src/main/asciidoc/_chapters/protobuf.adoc
index fa63127..1c2cc47 100644
--- a/src/main/asciidoc/_chapters/protobuf.adoc
+++ b/src/main/asciidoc/_chapters/protobuf.adoc
@@ -27,6 +27,8 @@
 :icons: font
 :experimental:
 
+
+== Protobuf
 HBase uses Google's link:http://protobuf.protobufs[protobufs] wherever
 it persists metadata -- in the tail of hfiles or Cells written by
 HBase into the system hbase;meta table or when HBase writes znodes
@@ -36,12 +38,11 @@ Interfaces (Services) we expose to clients, for example the 
`Admin` and `Client`
 Interfaces that the RegionServer fields,
 or specifying the arbitrary extensions added by developers via our
 xref:cp[Coprocessor Endpoint] mechanism.
+
 In this chapter we go into detail for  developers who are looking to
 understand better how it all works. This chapter is of particular
 use to those who would amend or extend HBase functionality.
 
-== Protobuf
-
 With protobuf, you describe serializations and services in a `.protos` file.
 You then feed these descriptors to a protobuf tool, the `protoc` binary,
 to generate classes that can marshall and unmarshall the described 
serializations