用于mapr的talend thbaseconnection和thbaseinput

z31licg0  于 2021-06-09  发布在  Hbase
关注(0)|答案(2)|浏览(423)

我可以访问maprhadoop集群的边缘节点。我有一个名为/app/subscriptionbillingplatform/matthew的hbase表,其中包含一些伪数据。在hbase shell中对其进行扫描会产生以下结果:

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

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

下面是thbaseinput的配置:

但是,当我在构建/导出作业并在边缘节点上运行它之后scp jar文件时,会出现以下错误:

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那样使用HregionServer,并且认为我的talend配置是错误的。
有什么想法吗?

5q4ezhmt

5q4ezhmt1#

关键在于这两条线:

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/..
eni9jsuy

eni9jsuy2#

我试着在talend大数据沙盒中快速复制这个,但恐怕无法得到你的错误。
将错误消息插入google(有一些变化)看起来这是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大数据沙盒,或者至少安装mapr沙盒,如果您只需要部署hadoop集群之类的产品或产品。

相关问题