hbase-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Stack <st...@duboce.net>
Subject Re: [DISCUSSION] Upgrading core dependencies
Date Wed, 08 Feb 2017 05:38:08 GMT
On Tue, Feb 7, 2017 at 7:48 PM, Ted Yu <yuzhihong@gmail.com> wrote:

> bq. Better to start using the new API's available in Java 8
>
> +1 to the above.
> If no new Guava construct is introduced and we replace current Guava usage
> with Java 8 counterpart(s), in the future we can get rid of Guava
> dependency.
>
>
I don't follow. JDK8 is not a superset of Guava lib (or of netty, jackson,
etc.)
S





> On Tue, Feb 7, 2017 at 6:50 PM, Nick Dimiduk <ndimiduk@gmail.com> wrote:
>
> > For the client: I'm a fan of shaded client modules by default and
> > minimizing the exposure of that surface area of 3rd party libs (none, if
> > possible). For example, Elastic Search has a similar set of challenges,
> the
> > solve it by advocating users shade from step 1. It's addressed first
> thing
> > in the docs for their client libs. We could take it a step further by
> > making the shaded client the default client (o.a.hbase:hbase-client)
> > artifact and internally consume an hbase-client-unshaded. Turns the whole
> > thing on it's head in a way that's better for the naive user.
> >
> > For MR/Spark/etc connectors: We're probably stuck as it is until
> necessary
> > classes can be extracted from hbase-server. I haven't looked into this
> > lately, so I hesitate to give a prescription.
> >
> > For coprocessors: They forfeit their right to 3rd party library
> dependency
> > stability by entering our process space. Maybe in 3.0 or 4.0 we can
> rebuild
> > on jigsaw or OSGi, but for today I think the best we should do is provide
> > relatively stable internal APIs. I also find it unlikely that we'd want
> to
> > spend loads of cycles optimizing for this usecase. There's other, bigger
> > fish, IMHO.
> >
> > For size/compile time: I think these ultimately matter less than user
> > experience. Let's find a solution that sucks less for downstreamers and
> > work backward on reducing bloat.
> >
> > On the point of leaning heavily on Guava: their pace is traditionally too
> > fast for us to expose in any public API. Maybe that's changing, in which
> > case we could reconsider for 3.0. Better to start using the new API's
> > available in Java 8...
> >
> > Thanks for taking this up, Stack.
> > -n
> >
> > On Tue, Feb 7, 2017 at 12:22 PM Stack <stack@duboce.net> wrote:
> >
> > > Here's an old thorny issue that won't go away. I'd like to hear what
> > folks
> > > are thinking these times.
> > >
> > > My immediate need is that I want to upgrade Guava [1]. I want to move
> us
> > to
> > > guava 21.0, the latest release [2]. We currently depend on guava 12.0.
> > > Hadoop's guava -- 11.0 -- is also on our CLASSPATH (three times). We
> > could
> > > just do it in an hbase-2.0.0, a major version release, but then
> > > downstreamers and coprocessors that may have been a little lazy and
> that
> > > have transitively come to depend on our versions of libs will break
> [3].
> > > Then there is the murky area around the running of YARN/MR/Spark jobs
> > where
> > > the ordering of libs on the CLASSPATH gets interesting where fat-jaring
> > or
> > > command-line antics can get you over (most) problems if you persevere.
> > >
> > > Multiply the above by netty, jackson, and a few other favorites.
> > >
> > > Our proffered solution to the above is the shaded hbase artifact
> project;
> > > have applications and tasks refer to the shaded hbase client instead.
> > > Because we've not done the work to narrow the surface area we expose to
> > > downstreamers, most consumers of our API -- certainly in a spark/MR
> > context
> > > since our MR utility is buried in hbase-server module still -- need
> both
> > > the shaded hbase client and server on their CLASSPATH (i.e. near all of
> > > hbase).
> > >
> > > Leaving aside for the moment that our shaded client and server need
> > > untangling, getting folks up on the shaded artifacts takes effort
> > > evangelizing. We also need to be doing work to make sure our shading
> > > doesn't leak dependencies, that it works for all deploy scenarios, and
> > that
> > > this route forward is well doc'd, and so on.
> > >
> > > I don't see much evidence of our pushing the shaded artifacts route nor
> > of
> > > their being used. What is the perception of others?
> > >
> > > I played with adding a new module to host shaded 3rd party libs[4]. The
> > > downsides are a couple; would have to internally, refer to the offset
> > > version of the lib and we bulk up our tarball by a bunch of megs (Build
> > > gets a few seconds longer, not much). Upside is that we can float over
> a
> > > variety of hadoop/spark versions using whatever guava or netty we want;
> > > downstreamers and general users should have an easier time of it too
> > > because they'll be less likely to run into library clashes. is this
> > project
> > > worth finishing?
> > >
> > > WDYT?
> > > St.Ack
> > >
> > > 1. I wanted to make use of the protobuf to-json tool. It is in the
> > > extra-jar, protobuf-util. It requires a guava 16.0.
> > > 2. Guava is a quality lib that should be at the core of all our dev but
> > we
> > > are gun shy around using it because it semver's with gusto at a rate
> that
> > > is orders of magnitude in advance of the Hadoop/HBase cadence.
> > > 3. We are trying to minimize breakage when we go to hbase-2.0.0.
> > > 4. HBASE-15749 suggested this but was shutdown because it made no case
> > for
> > > why we'd want to do it.
> > >
> >
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message