【问题标题】:Hbase mappers/reduce library requirements on cluster nodesHbase 映射器/减少集群节点上的库需求
【发布时间】:2016-10-07 16:27:17
【问题描述】:

我有一个分布式 hadoop 集群,hbase 在其 hdfs 上运行。要使用 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版本 不匹配问题有多种表现形式,但通常看起来都像 挂了。

我找不到它在哪里肯定地告诉您需要将哪些 hbase 库添加到 hadoop 的计算节点。

【问题讨论】:

    标签: hadoop hbase classpath


    【解决方案1】:

    我试图通过实验来回答这个问题。我似乎需要使它工作的最少项目是这样的:

    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。只需将 apache hadoop 和 hbase tarball 分别解压缩到“hadoop”和“hbase”用户的主目录中,即可“安装”它们。 reducer 是一个空的 TableReducer。

    它似乎在运行——或者至少它没有任何与 hbase 相关的 ClassNotFound 异常。

    我不确定这是否是真正的集合......我只能说我的空 TableReducer 正是需要这些东西。

    【讨论】:

    • 我所做的是将它们作为符号链接放在 /home/hadoop/share/hadoop/hbase/ 中,然后将整个目录添加到 hadoop-env.sh 中的 hadoop 类路径
    猜你喜欢
    • 2013-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-05
    • 1970-01-01
    • 2016-05-06
    • 2012-05-30
    相关资源
    最近更新 更多