Hbase映射器/减少群集节点上的库要求

时间:2016-10-07 16:27:17

标签: hadoop hbase classpath

我有一个分布式的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库的位置。

1 个答案:

答案 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完全需要那些东西。