You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@phoenix.apache.org by "Josh Elser (JIRA)" <ji...@apache.org> on 2018/09/12 02:22:00 UTC

[jira] [Commented] (PHOENIX-4880) Phoenix IndexTool doesn't work on HBase2 per documentation

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

Josh Elser commented on PHOENIX-4880:
-------------------------------------

Let me re-summarize to make sure the problem and solution are clear. Using `bin/hbase` to launch Phoenix tools ultimately fails because phoenix-server.jar wasn't bundling some necessary classes. If we trivially tried to include those jars, they fail a different way because it conflicts with other HBase dependencies (e.g. commons-cli).

The solution was to make sure that phoenix-server.jar brings all dependencies it needs *except* those that are provided by HBase in the standard location: e.g. hbase, hadoop, log4j, slf4j, zookeeper, and protobuf jars. We can also remove things from phoenix-core which we know aren't relevant when inside HBase: e.g. jline, sqlline.

The rest of the dependencies are things that phoenix-core declares it needs, so we bundle it and ensure that it's relocated to {{org.apache.phoenix.shaded}}.

I tested that sqlline.py still works as expected and that I can launch IndexTool per the Phoenix documentation.

> Phoenix IndexTool doesn't work on HBase2 per documentation
> ----------------------------------------------------------
>
>                 Key: PHOENIX-4880
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-4880
>             Project: Phoenix
>          Issue Type: Bug
>            Reporter: Josh Elser
>            Assignee: Josh Elser
>            Priority: Major
>             Fix For: 4.15.0, 5.1.0
>
>         Attachments: PHOENIX-4880.001.patch
>
>
> The website documentation states that to run {{IndexTool}}, you should do:
> {code}
> $ hbase org.apache.phoenix.mapreduce.index.IndexTool
> {code}
> This ends up running the class using the phoenix-server jar which fails because we have conflicting versions of commons-cli, as described by HBASE-20201. Phoenix-client.jar does not have this problem as we did the workaround there as well.
> {code}
> $ hadoop jar $PHOENIX_HOME/phoenix-*client.jar org.apache.phoenix.mapreduce.index.IndexTool
> {code}
> Does work, however. I suppose we still want to fix phoenix-server.jar? (no reason not to?)



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