3

我可以访问 MapR Hadoop 集群的边缘节点。我有一个名为 /app/SubscriptionBillingPlatform/Matthew 的 HBase 表,其中包含一些假数据。在 hbase shell 中对其进行扫描会导致:

在此处输入图像描述

我有一个非常简单的 Talend 作业,它应该扫描表并记录每一行:

在此处输入图像描述

这是 tHBaseConnection 的配置。我从 /opt/mapr/hbase/hbase-0.94.13/conf/hbase-site.xml 文件中获得了 zookeeper 仲裁和客户端端口:

在此处输入图像描述

这是 tHBaseInput 的配置:

在此处输入图像描述

但是,当我在构建/导出作业并在边缘节点上运行它之后对 jar 文件进行 SCP 处理时,我收到以下错误:

14/08/06 15:51:26 INFO mapr.TableMappingRulesFactory: Could not find MapRTableMappingRules class, assuming HBase only cluster.
14/08/06 15:51:26 INFO mapr.TableMappingRulesFactory: If you are trying to access M7 tables, add mapr-hbase jar to your classpath.
14/08/06 15:51:26 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
14/08/06 15:51:26 INFO security.JniBasedUnixGroupsMappingWithFallback: Falling back to shell based
...
Exception in component tHBaseInput_1
org.apache.hadoop.hbase.client.NoServerForRegionException: Unable to find region for /app/SubscriptionBillingPlatform/Matthew,,99999999999999 after 10 tries.
        at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:991)
        at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:896)
        at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:998)
        at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:900)
        at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:857)
        at org.apache.hadoop.hbase.client.HTable.finishSetup(HTable.java:257)
        at org.apache.hadoop.hbase.client.HTable.<init>(HTable.java:187)
        at org.apache.hadoop.hbase.client.HTable.<init>(HTable.java:142)
        at poc2.testhbaseoperations_0_1.TestHBaseOperations.tHBaseInput_1Process(TestHBaseOperations.java:752)
        at poc2.testhbaseoperations_0_1.TestHBaseOperations.tHBaseConnection_1Process(TestHBaseOperations.java:375)
        at poc2.testhbaseoperations_0_1.TestHBaseOperations.runJobInTOS(TestHBaseOperations.java:1104)
        at poc2.testhbaseoperations_0_1.TestHBaseOperations.main(TestHBaseOperations.java:993)

当我告诉系统管理员这件事时,他们不知道 Talend 是什么,他们告诉我 MapR 不像 Cloudera 那样使用 HRegionServers,并且认为我的 Talend 配置是错误的。

有任何想法吗?

4

2 回答 2

1

踢球者是这两行:

INFO mapr.TableMappingRulesFactory: Could not find MapRTableMappingRules class, assuming HBase only cluster.
mapr.TableMappingRulesFactory: If you are trying to access M7 tables, add mapr-hbase jar to your classpath.

如果作业在类路径中没有 mapr-hbase jar,它将尝试将作业提交到常规 HBase,而不是 MapR-DB。这就是它永远挂起的原因。

您可以将 mapr-hbase jar 添加/opt/mapr/lib到 shell 脚本的类路径中,或者简单地将该目录中的所有 jar 添加到类路径中。

#!/bin/sh
cd `dirname $0`
 ROOT_PATH=`pwd`
java -Xms256M -Xmx1024M -cp /opt/mapr/lib/*:$ROOT_PATH/.. 
于 2016-02-29T00:25:58.963 回答
0

我快速尝试在Talend Big Data Sandbox中重现这一点,但恐怕似乎无法得到您的错误。

将错误消息插入谷歌(有一些变化)看起来这是 Talend 之外的一个半常见错误,所以我猜只要您正确加载必要的库和驱动程序并且它们被包含在您的导出作业中这是 Hadoop 集群上某处的配置问题。它似乎也发生在非 MapR 发行版上。

Cloudera 社区板上的这个问题似乎有一个令人满意的解决方案,其中 Oozie 配置错误并返回与您相同的错误。可能值得尝试添加:

<property>
<name>oozie.credentials.credentialclasses</name>
<value>hcat=org.apache.oozie.action.hadoop.HCatCredentials</value>
</property>

Oozie service->Configuration->Oozie Server(default)->Advanced-> Oozie Server Configuration Safety Valve for oozie-site.xml并重新启动 Hive 和 Oozie 服务。

当然,这可能会因管理 Hadoop 集群的方式而变得复杂,如果您有一个开发集群/本地实例要运行,也会遇到同样的问题。

我强烈建议您安装上述 Talend Big Data Sandbox 或至少安装MapR 沙箱,如果您只有生产或生产(如 Hadoop 集群)要部署到。

于 2014-08-26T12:40:05.443 回答