You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Sean Busbey (JIRA)" <ji...@apache.org> on 2018/06/11 16:15:00 UTC

[jira] [Commented] (HBASE-20615) emphasize use of shaded client jars when they're present in an install

    [ https://issues.apache.org/jira/browse/HBASE-20615?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16508280#comment-16508280 ] 

Sean Busbey commented on HBASE-20615:
-------------------------------------

Here's the result of a long journey with a sad ending.

Originally, I planned to get the client tarball from HBASE-19735 down to just the shaded hbase artifacts.  In the end we're only down ~7MiB for current size. Current limitations are called out in the patch but in summary:

* hbase shell needs the rsgroups module and transitives in order to have the rsgroups related functions. This pulls in just about everything. the shell functions are what we defined as the public API for this feature, so it seems to me like it needs to work. if we generated a version of the hbase-rsgroups jar that relied on relocated dependencies then the shell would work with that + client jars.
* backup, restore, rowcounter, cellcounter need access to MR runtime libraries. we can rely on the shaded jars to run them only folks have their own hadoop install to rely on (which seems okay)
* pe and ltt live in a test jar and rely on some other dependencies that we don't have a "use relocated stuff" version of ATM.

On the plus side, a bunch of stuff can still benefit from using hte shaded jars now and we know what can be improved if we want to bring down the size.

-v1
  - defines a subset of {{bin/hbase}} commands that we expect to work from the client tarball
  - only shows those commands in the help when in a client tarball
  - uses shaded jars where possible for those commands
  - documents in comments when it can't
  - defaults "classpath" and "mapredcp" commands to refer folks to the shaded client jars
  - adds a flag to opt-out of relying on client jars
  - I tested each of the client-side commands with and without the matrix of {{HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP}} and {{--internal-classpath}} against a standalone cluster

Current patch relies on HBASE-20332, HBASE-20333, and HBASE-19735 so it includes commits for each of those.

ATM this also includes the shaded artifacts in the non-client tarball so we can make use providing a cleaner classpath there as well. The changes to {{bin/hbase}} are made so that we could skip that bit without having to change anything else.

> emphasize use of shaded client jars when they're present in an install
> ----------------------------------------------------------------------
>
>                 Key: HBASE-20615
>                 URL: https://issues.apache.org/jira/browse/HBASE-20615
>             Project: HBase
>          Issue Type: Sub-task
>          Components: build, Client, Usability
>    Affects Versions: 2.0.0
>            Reporter: Sean Busbey
>            Assignee: Sean Busbey
>            Priority: Major
>             Fix For: 3.0.0, 2.1.0
>
>         Attachments: HBASE-20615.0.patch, HBASE-20615.1.patch
>
>
> Working through setting up an IT for our shaded artifacts in HBASE-20334 makes our lack of packaging seem like an oversight. While I could work around by pulling the shaded clients out of whatever build process built the convenience binary that we're trying to test, it seems v awkward.
> After reflecting on it more, it makes more sense to me for there to be a common place in the install that folks running jobs against the cluster can rely on. If they need to run without a full hbase install, that should still work fine via e.g. grabbing from the maven repo.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)