[ 
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)

Reply via email to