我可以访问MapR Hadoop集群的边缘节点。我有一个名为/ app / SubscriptionBillingPlatform / Matthew的HBase表,其中包含一些虚假数据。在hbase shell中对它进行扫描会产生以下结果:
我有一个非常简单的Talend Job,它应该扫描表并记录每一行:
以下是tHBaseConnection的配置。我从/opt/mapr/hbase/hbase-0.94.13/conf/hbase-site.xml文件中获取了zookeeper仲裁和客户端端口:
这是tHBaseInput的配置:
但是,当我在构建/导出作业并在边缘节点上运行它之后我发现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那样使用HRegionServers,并且认为我的Talend配置是错误的。
有什么想法吗?
答案 0 :(得分: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。这就是它永远挂起的原因。
您可以将/opt/mapr/lib
中的mapr-hbase jar添加到shell脚本的类路径中,或者只是将该目录中的所有jar添加到类路径中。
#!/bin/sh
cd `dirname $0`
ROOT_PATH=`pwd`
java -Xms256M -Xmx1024M -cp /opt/mapr/lib/*:$ROOT_PATH/..
答案 1 :(得分:0)
我快速尝试在Talend Big Data Sandbox中重现这一点,但似乎无法得到您的错误。
将错误消息插入Google(带有一些变体)看起来这是Talend之外的一个半常见错误,所以只要您正确加载必要的库和驱动程序并且它们被包含在内,我就会猜测在导出的作业中,它会在Hadoop集群的某个位置出现配置问题。它似乎也发生在非MapR发行版上。
Cloudera社区委员会上的This issue似乎有一个令人满意的解决方案,其中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,或者如果您只有像Hadoop集群那样的生产或生产要安装,请至少安装MapR sandbox。