Skip to content

STORM-3061: Update version of hbase#2691

Closed
revans2 wants to merge 2 commits intoapache:masterfrom
revans2:STORM-3061-hbase-cleanup
Closed

STORM-3061: Update version of hbase#2691
revans2 wants to merge 2 commits intoapache:masterfrom
revans2:STORM-3061-hbase-cleanup

Conversation

@revans2
Copy link
Contributor

@revans2 revans2 commented May 23, 2018

This updates the version of hbase used and cleans up some of the dependencies.

The biggest change besides updating the version is that we remove hbase-server as a dependency, because it was only used for access to a copy of StringUtils.

This ends up impacting a lot of packages that were pulling in storm-hbase, either directly or indirectly.

storm-autocreds
strom-hdfs (because it depends on storm-autocreds)
flux-core (not really sure why the core of flux needs hbase but it is a dependency)
flux-examples
storm-sql-hdfs (because of storm-autocreds)
storm-hdfs-blobstore (auotcreds again)
storm-hive (autocreds yet again)
storm-starter
storm-hdfs-examples (autocreds)
storm-hbase-examples
storm-hive-examples (autocreds)
storm-perf (autocreds)

I have not run any of the manual tests for this yet. But I plan on doing some soon.

<hadoop.version>2.6.1</hadoop.version>
<hdfs.version>${hadoop.version}</hdfs.version>
<hbase.version>1.1.12</hbase.version>
<hbase.version>1.4.4</hbase.version>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since we are upgrading anyway, do we want to attempt Hbase 2.0 ?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am happy to give it a try. I was a bit cautious with it being a major version change, and that there was no 2.0.1 yet. But it does fit better with going to hadoop 3.1 coming in another pull request. Probably after this one is merged in.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In 2.0 TokenUtil is a part of hbase-server. I will spend some time to see if there is something I can do to work around this but I really don't want to require the server code be shipped with all of the clients. Perhaps I can refactor autocreds so the nimbus portions are split off into a separate package.

@revans2
Copy link
Contributor Author

revans2 commented May 24, 2018

@arunmahadevan I am happy to try and split up autocreds to make that happen, but it is a much larger job than what is currently for this. If you are fine with waiting I would rather file a follow on JIRA to upgrade to 2.0.0 and split up autocreds instead of blocking this.

@arunmahadevan
Copy link
Contributor

Sure we can revisit this in a follow up JIRA.

We may not have to split the autocreds since none of the other components depends on it. The hbase-server dependency if included is just going to end up under external/storm-autocreds and not going to be included in the class path by default. We could also check with the Hbase team to pull out the TokenUtils into hbase-client package.

@arunmahadevan
Copy link
Contributor

Actually I was wrong. storm-hdfs, storm-hbase, storm-hive seem to depend on storm-autocreds. I guess we could pull out the required classes into some common package as part of the follow up JIRA.

@revans2
Copy link
Contributor Author

revans2 commented May 24, 2018

Yes that was the plan. there is a lot that depends on storm-autocreds and I would like to understand it all better before I try to clean it up.

Copy link
Contributor

@HeartSaVioR HeartSaVioR left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess the patch itself gives benefit though we may want to support HBase 2.0 afterwards.

So I'm +1 on the change.

@HeartSaVioR
Copy link
Contributor

@revans2 Do you still plan to do manual tests on this patch? Sadly I couldn't do it myself for now, so would like to rely on your test result.

@revans2
Copy link
Contributor Author

revans2 commented Jun 4, 2018

I am planning right now to get STORM-2882 in first, and then I will come back and do as much manual testing as possible for the different components, and update thing accordingly.

@revans2 revans2 force-pushed the STORM-3061-hbase-cleanup branch from 63506a0 to 4cda7c0 Compare June 18, 2018 19:13
@revans2
Copy link
Contributor Author

revans2 commented Jun 18, 2018

@HeartSaVioR @arunmahadevan

I rebased my changes on master, I also ran the example topologies. I had to make a minor change around the HBase config to make the trident example work. I also added in a README to the examples that explains how to run them and verify that they are working.

@arunmahadevan
Copy link
Contributor

+1, Looks good.

Copy link
Contributor

@HeartSaVioR HeartSaVioR left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks great overall, left minor and nits.

@@ -0,0 +1,62 @@
# Storm HBase Integration Example

This is a very simple set of topologies that show how to use the storm-hbase package for accessign HBase from storm.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: accessing


## HBase Setup

First you need an instance of HBase that is setup and running. If you have one already you can skip to setting up the table, if not download a copy from http://archive.apache.org/dist/hbase/1.4.4/ and untar the result into a directory you want to run it in. Then follow the instructiuons from https://hbase.apache.org/0.94/book/quickstart.html to setup a standalone HBase instance. Be aware that when you run `start-hbase.sh` an instance of zookeeper will also be started. If you are testing using a single node storm cluster you can skip running zookeeper yourself as the hbase zookeeper instance will work.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit:
skip to setting -> skip setting
instructiuons -> instruction

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks like reference guide for HBase 1.2.6 doc is a single page which is taking super huge latency, but is quickstart page for 0.94 compatible with 1.4.4? There's huge gap between two versions so just would like to check.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

0.94 is the most up to date version of the book, sadly. But it still works.

<version>${project.version}</version>
<scope>${provided.scope}</scope>
</dependency>
<dependency>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Did you check with delegation token too? If it doesn't affect delegation token, then removing this would be even better.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I didn't test delegation tokens, but the code to download it didn't change and is a part of the client. It moved to the server in 2.x, which is why I didn't go to 2.x right now. To support 2.x we will want to split up the AutoHbase credentials so we don't need to have the server on the classpath just for that API.

@revans2
Copy link
Contributor Author

revans2 commented Jun 19, 2018

@HeartSaVioR I updated the docs from you comments. Thanks for the review.

Copy link
Contributor

@HeartSaVioR HeartSaVioR left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1
@revans2
Thanks for addressing comments quickly!

@asfgit asfgit closed this in 593c453 Jun 19, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants