http://git-wip-us.apache.org/repos/asf/hbase-site/blob/495ddb86/book.html ---------------------------------------------------------------------- diff --git a/book.html b/book.html index d004c26..570c87b 100644 --- a/book.html +++ b/book.html @@ -30363,7 +30363,69 @@ However any substantive discussion (as with any off-list project-related discuss </div> </div> <div class="sect2"> -<h3 id="hbase.archetypes.development"><a class="anchor" href="#hbase.archetypes.development"></a>152.9. Development of HBase-related Maven archetypes</h3> +<h3 id="thirdparty"><a class="anchor" href="#thirdparty"></a>152.9. The hbase-thirdparty dependency and shading/relocation</h3> +<div class="paragraph"> +<p>A new project was created for the release of hbase-2.0.0. It was called +<code>hbase-thirdparty</code>. This project exists only to provide the main hbase +project with relocated — or shaded — versions of popular thirdparty +libraries such as guava, netty, and protobuf. The mainline HBase project +relies on the relocated versions of these libraries gotten from hbase-thirdparty +rather than on finding these classes in their usual locations. We do this so +we can specify whatever the version we wish. If we don’t relocate, we must +harmonize our version to match that which hadoop and/or spark uses.</p> +</div> +<div class="paragraph"> +<p>For developers, this means you need to be careful referring to classes from +netty, guava, protobuf, gson, etc. (see the hbase-thirdparty pom.xml for what +it provides). Devs must refer to the hbase-thirdparty provided classes. In +practice, this is usually not an issue (though it can be a bit of a pain). You +will have to hunt for the relocated version of your particular class. You’ll +find it by prepending the general relocation prefix of <code>org.apache.hadoop.hbase.shaded.</code>. +For example if you are looking for <code>com.google.protobuf.Message</code>, the relocated +version used by HBase internals can be found at +<code>org.apache.hadoop.hbase.shaded.com.google.protobuf.Message</code>.</p> +</div> +<div class="paragraph"> +<p>For a few thirdparty libs, like protobuf (see the protobuf chapter in this book +for the why), your IDE may give you both options — the <code>com.google.protobuf.<strong></code> +and the <code>org.apache.hadoop.hbase.shaded.com.google.protobuf.</strong></code> — because both +classes are on your CLASSPATH. Unless you are doing the particular juggling +required in Coprocessor Endpoint development (again see above cited protobuf +chapter), you’ll want to use the shaded version, always.</p> +</div> +<div class="paragraph"> +<p>Of note, the relocation of netty is particular. The netty folks have put in +place facility to aid relocation; it seems like shading netty is a popular project. +One case of this requires the setting of a peculiar system property on the JVM +so that classes out in the bundld shared library (.so) can be found in their +relocated location. Here is the property that needs to be set:</p> +</div> +<div class="paragraph"> +<p><code>-Dorg.apache.hadoop.hbase.shaded.io.netty.packagePrefix=org.apache.hadoop.hbase.shaded.</code></p> +</div> +<div class="paragraph"> +<p>(Note that the trailing '.' is required). Starting hbase normally or when running +test suites, the setting of this property is done for you. If you are doing something +out of the ordinary, starting hbase from your own context, you’ll need to provide +this property on platforms that favor the bundled .so. See release notes on HBASE-18271 +for more. The complaint you see is something like the following: +<code>Cause: java.lang.RuntimeException: Failed construction of Master: class org.apache.hadoop.hbase.master.HMasterorg.apache.hadoop.hbase.shaded.io.netty.channel.epoll.</code></p> +</div> +<div class="paragraph"> +<p>The <code>hbase-thirdparty</code> project has groupid of <code>org.apache.hbase.thirdparty</code>. +As of this writing, it provides three jars; one for netty with an artifactid of +<code>hbase-thirdparty-netty</code>, one for protobuf at <code>hbase-thirdparty-protobuf</code> and then +a jar for all else — gson, guava — at <code>hbase-thirdpaty-miscellaneous</code>.</p> +</div> +<div class="paragraph"> +<p>The hbase-thirdparty artifacts are a product produced by the Apache HBase +project under the aegis of the HBase Project Management Committee. Releases +are done via the usual voting project on the hbase dev mailing list. If issue +in the hbase-thirdparty, use the hbase JIRA and mailing lists to post notice.</p> +</div> +</div> +<div class="sect2"> +<h3 id="hbase.archetypes.development"><a class="anchor" href="#hbase.archetypes.development"></a>152.10. Development of HBase-related Maven archetypes</h3> <div class="paragraph"> <p>The development of HBase-related Maven archetypes was begun with <a href="https://issues.apache.org/jira/browse/HBASE-14876">HBASE-14876</a>. @@ -35007,7 +35069,7 @@ The server will return cellblocks compressed using this same compressor as long <div id="footer"> <div id="footer-text"> Version 3.0.0-SNAPSHOT<br> -Last updated 2017-08-18 14:29:46 UTC +Last updated 2017-08-19 19:25:51 UTC </div> </div> </body>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/495ddb86/bulk-loads.html ---------------------------------------------------------------------- diff --git a/bulk-loads.html b/bulk-loads.html index f02a0f4..2330869 100644 --- a/bulk-loads.html +++ b/bulk-loads.html @@ -7,7 +7,7 @@ <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> - <meta name="Date-Revision-yyyymmdd" content="20170818" /> + <meta name="Date-Revision-yyyymmdd" content="20170819" /> <meta http-equiv="Content-Language" content="en" /> <title>Apache HBase – Bulk Loads in Apache HBase (TM) @@ -311,7 +311,7 @@ under the License. --> <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved. - <li id="publishDate" class="pull-right">Last Published: 2017-08-18</li> + <li id="publishDate" class="pull-right">Last Published: 2017-08-19</li> </p> </div>
