Hi all,

I've been assisting with some experiments to see how we might want to
migrate Druid to support Hadoop 3.x, and more importantly, see if maybe we
can finally be free of some of the dependency issues it has been causing
for as long as I can remember working with Druid.

Hadoop 3 introduced shaded client jars,
https://issues.apache.org/jira/browse/HADOOP-11804, with the purpose to
allow applications to talk to the Hadoop cluster without drowning in its
transitive dependencies. The experimental branch that I have been helping
with, which is using these new shaded client jars, can be seen in this PR
https://github.com/apache/druid/pull/11314, and is currently working with
the HDFS integration tests as well as the Hadoop tutorial flow in the Druid
docs (which is pretty much equivalent to the HDFS integration test).

The cloud deep storages still need some further testing and some minor
cleanup still needs done for the docs and such. Additionally we still need
to figure out how to handle the Kerberos extension, because it extends some
Hadoop classes so isn't able to use the shaded client jars in a
straight-forward manner, and so still has heavy dependencies and hasn't
been tested. However, the experiment has started to pan out enough to where
I think it is worth starting this discussion, because it does have some
implications.

Making this change I think will allow us to update our dependencies with a
lot more freedom (I'm looking at you, Guava), but the catch is that once we
make this change and start updating these dependencies, it will become
hard, nearing impossible to support Hadoop 2.x, since as far as I know
there isn't an equivalent set of shaded client jars. I am also not certain
how far back the Hadoop job classpath isolation stuff goes
(mapreduce.job.classloader = true) which I think is required to be set on
Druid tasks for this shaded stuff to work alongside updated Druid
dependencies.

Is anyone opposed to or worried about dropping Hadoop 2.x support after the
Druid 0.22 release?

Reply via email to