我有一个分布式的hadoop集群,其hdfs上运行了hbase。要使用hbase构建map / reduce作业,请包含以下依赖项:
<dependencies>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-core</artifactId>
<version>1.2.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-client</artifactId>
<version>1.2.3</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-server</artifactId>
<version>1.2.3</version>
<scope>provided</scope>
</dependency>
</dependencies>
我正在试图弄清楚如何部署所有这些库。 hadoop应该在其类路径中包含$ HBASE_HOME / lib / *吗?有很多重叠和版本冲突。看起来我应该只需要一些子集,但是hbase文档只提供了一些帮助:
用HBase替换捆绑的Hadoop!因为HBase依赖于 Hadoop,它在其lib下捆绑了一个Hadoop jar的实例 目录。捆绑的jar仅用于独立模式。在 在分布式模式下,Hadoop的版本至关重要 在您的群集上匹配HBase下的内容。更换hadoop jar 在你正在运行的hadoop jar的HBase lib目录中找到 在您的群集上,以避免版本不匹配问题。确保你 在群集的各处替换HBase中的jar。 Hadoop版本 不匹配问题有各种各样的表现,但往往都是看起来像 它挂了。
我无法找到它肯定地告诉你需要添加到hadoop的计算节点的hbase库的位置。
答案 0 :(得分:0)
我试图通过实验回答这个问题。我似乎需要使它工作的最小项目是:
hbase-client-1.2.3.jar -> ../../../../hbase/lib/hbase-client-1.2.3.jar
hbase-common-1.2.3.jar -> ../../../../hbase/lib/hbase-common-1.2.3.jar
hbase-hadoop2-compat-1.2.3.jar -> ../../../../hbase/lib/hbase-hadoop2-compat-1.2.3.jar
hbase-hadoop-compat-1.2.3.jar -> ../../../../hbase/lib/hbase-hadoop-compat-1.2.3.jar
hbase-prefix-tree-1.2.3.jar -> ../../../../hbase/lib/hbase-prefix-tree-1.2.3.jar
base-protocol-1.2.3.jar -> ../../../../hbase/lib/hbase-protocol-1.2.3.jar
hbase-server-1.2.3.jar -> ../../../../hbase/lib/hbase-server-1.2.3.jar
metrics-core-2.2.0.jar -> ../../../../hbase/lib/metrics-core-2.2.0.jar
稍微解释一下,我的hadoop安装在/ home / hadoop中,我的hbase安装在/ home / hbase中。这些都是&#34;安装&#34;只需将apache hadoop和hbase tarball解压缩到&#34; hadoop&#34;和&#34; hbase&#34;用户&#39;主目录,分别。 reducer是一个空的TableReducer。
似乎运行 - 或者至少它没有与hbase相关的任何ClassNotFound异常。
我不确定这是不是真的...我只能说我的空TableReducer完全需要那些东西。