[
https://issues.apache.org/jira/browse/HBASE-5286?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13198025#comment-13198025
]
Roman Shaposhnik commented on HBASE-5286:
-----------------------------------------
The basic challenge the way I see it is to have bin/hbase capable of supporting
standalone mode AND distribution mode at the same time.
HBase needs to keep bundling its dependencies so that one can deploy it
straight from binary tarballs. At the same time
we have to make sure that we can point at the ZK/Hadoop dependencies available
elsewhere.
Talking with Todd off-line here's what emerged:
We could change around the hbase assembly so that
hadoop/ZK (and its transitive deps) get pushed into a
lib/[hadoop|zookeeper]-dependencies directory.
Then in the wrapper script, if HADOOP_HOME isn't defined
(or detectable at usual spots) then we add
lib/[hadoop|zookeeper]-dependencies/* to the classpath?
Otherwise we use the one set in the env?
Thoughts?
> bin/hbase's logic of adding Hadoop jar files to the classpath is fragile when
> presented with split packaged Hadoop 0.23 installation
> ------------------------------------------------------------------------------------------------------------------------------------
>
> Key: HBASE-5286
> URL: https://issues.apache.org/jira/browse/HBASE-5286
> Project: HBase
> Issue Type: Bug
> Components: scripts
> Affects Versions: 0.92.0
> Reporter: Roman Shaposhnik
> Assignee: Roman Shaposhnik
>
> Here's the bit from bin/hbase that might need TLC now that Hadoop can be
> spotted in the wild in split-package configuration:
> {noformat}
> #If avail, add Hadoop to the CLASSPATH and to the JAVA_LIBRARY_PATH
> if [ ! -z $HADOOP_HOME ]; then
> HADOOPCPPATH=""
> if [ -z $HADOOP_CONF_DIR ]; then
> HADOOPCPPATH=$(append_path "${HADOOPCPPATH}" "${HADOOP_HOME}/conf")
> else
> HADOOPCPPATH=$(append_path "${HADOOPCPPATH}" "${HADOOP_CONF_DIR}")
> fi
> if [ "`echo ${HADOOP_HOME}/hadoop-core*.jar`" !=
> "${HADOOP_HOME}/hadoop-core*.jar" ] ; then
> HADOOPCPPATH=$(append_path "${HADOOPCPPATH}" `ls
> ${HADOOP_HOME}/hadoop-core*.jar | head -1`)
> else
> HADOOPCPPATH=$(append_path "${HADOOPCPPATH}" `ls
> ${HADOOP_HOME}/hadoop-common*.jar | head -1`)
> HADOOPCPPATH=$(append_path "${HADOOPCPPATH}" `ls
> ${HADOOP_HOME}/hadoop-hdfs*.jar | head -1`)
> HADOOPCPPATH=$(append_path "${HADOOPCPPATH}" `ls
> ${HADOOP_HOME}/hadoop-mapred*.jar | head -1`)
> fi
> {noformat}
> There's a couple of issues with the above code:
> 0. HADOOP_HOME is now deprecated in Hadoop 0.23
> 1. the list of jar files added to the class-path should be revised
> 2. we need to figure out a more robust way to get the jar files that are
> needed to the classpath (things like hadoop-mapred*.jar tend to match
> src/test jars as well)
> Better yet, it would be useful to look into whether we can transition HBase's
> bin/hbase onto using bin/hadoop as a launcher script instead of direct JAVA
> invocations (Pig, Hive, Sqoop and Mahout already do that)
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira