分享

求教: HBase1.0和Hive整合失败 NoSuchMethodError: HTableDescriptor.addFamily

wbh_qj 发表于 2015-3-28 17:41:50 [显示全部楼层] 只看大图 回帖奖励 阅读模式 关闭右栏 16 110416
本帖最后由 wbh_qj 于 2015-3-28 19:01 编辑

我在ubuntu上装的hadoop 2.6, hbase 1.0 and hive 1.1,单个运行正常。但是整合hive 和hbase之后,在Hive中执行下面的语句,

        hive> CREATE TABLE hbase_table_1(key int, value string) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf1:val") TBLPROPERTIES ("hbase.table.name" = "xyz");
报错如下:
2015-03-27 15:40:57,409 ERROR [main]: exec.DDLTask (DDLTask.java:failed(512)) - java.lang.NoSuchMethodError: org.apache.hadoop.hbase.HTableDescriptor.addFamily(Lorg/apache/hadoop/hbase/HColumnDescriptor;)V
        at org.apache.hadoop.hive.hbase.HBaseStorageHandler.preCreateTable(HBaseStorageHandler.java:203)
        at org.apache.hadoop.hive.metastore.HiveMetaStoreClient.createTable(HiveMetaStoreClient.java:653)
        at org.apache.hadoop.hive.metastore.HiveMetaStoreClient.createTable(HiveMetaStoreClient.java:646)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.invoke(RetryingMetaStoreClient.java:91)
        at com.sun.proxy.$Proxy9.createTable(Unknown Source)
        at org.apache.hadoop.hive.ql.metadata.Hive.createTable(Hive.java:680)
        at org.apache.hadoop.hive.ql.exec.DDLTask.createTable(DDLTask.java:4005)
        at org.apache.hadoop.hive.ql.exec.DDLTask.execute(DDLTask.java:298)
        at org.apache.hadoop.hive.ql.exec.Task.executeTask(Task.java:160)
        at org.apache.hadoop.hive.ql.exec.TaskRunner.runSequential(TaskRunner.java:88)
        at org.apache.hadoop.hive.ql.Driver.launchTask(Driver.java:1638)
        at org.apache.hadoop.hive.ql.Driver.execute(Driver.java:1397)
        at org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1183)
        at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1049)
        at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1039)
        at org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:207)
        at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:159)
        at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:370)
        at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:754)
        at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:675)
        at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:615)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.apache.hadoop.util.RunJar.run(RunJar.java:221)
        at org.apache.hadoop.util.RunJar.main(RunJar.java:136)
2015-03-27 15:40:57,410 ERROR [main]: ql.Driver (SessionState.java:printError(861)) - FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. org.apache.hadoop.hbase.HTableDescriptor.addFamily(Lorg/apache/hadoop/hbase/HColumnDescriptor;)V




我已经将hbase-client-1.0.0.jar放到hive的lib目录下面,其中包含的 HTableDescriptor.class 有方法addFamily(HColumnDescriptor).

我是一个新手,不知道为什么报错。请高手指教

已有(16)人评论

跳转到指定楼层
bioger_hit 发表于 2015-3-28 18:09:11
版本太新了,目前hadoop官方还没有明确给出支持这两个版本。楼主是从哪个地方看到的
Hadoop version support matrix
·         "S" = supported
·         "X" = not supported
·         "NT" = Not tested
HBase-0.92.x
HBase-0.94.x
HBase-0.96.x
HBase-0.98.x (Support for Hadoop 1.1+ is deprecated.)
HBase-1.0.x (Hadoop 1.x is NOT supported)
Hadoop-0.20.205
S
X
X
X
X
Hadoop-0.22.x
S
X
X
X
X
Hadoop-1.0.x
X
X
X
X
X
Hadoop-1.1.x
NT
S
S
NT
X
Hadoop-0.23.x
X
S
NT
X
X
Hadoop-2.0.x-alpha
X
NT
X
X
X
Hadoop-2.1.0-beta
X
NT
S
X
X
Hadoop-2.2.0
X
NT
S
S
NT
Hadoop-2.3.x
X
NT
S
S
NT
Hadoop-2.4.x
X
NT
S
S
S
Hadoop-2.5.x
X
NT
S
S
S


HBase 和 Hadoop 版本关系的官方文档:
https://hbase.apache.org/book/configuration.html#hadoop


回复

使用道具 举报

wbh_qj 发表于 2015-3-28 18:33:36
本帖最后由 wbh_qj 于 2015-3-28 18:57 编辑

谢谢 bioger_hit
我是看release note中说支持hadoop 2.x.y,没有看到明确的版本对应关系,:(。

从错误来看,貌似其他地方还有一个无addFamily(Lorg/apache/hadoop/hbase/HColumnDescriptor;)方法的HTableDescriptor类。
就是不知道在哪个Jar中,是否可以替换掉。

回复

使用道具 举报

desehawk 发表于 2015-3-28 19:48:50
本帖最后由 desehawk 于 2015-3-28 19:54 编辑
wbh_qj 发表于 2015-3-28 18:33
谢谢 bioger_hit
我是看release note中说支持hadoop 2.x.y,没有看到明确的版本对应关系,:(。

楼主对hive权限是否做了设置

或则hive1.1可能对权限有了一定的限定。
以前版本hive默认都是超级管理员。

网址
回复

使用道具 举报

langke93 发表于 2015-3-28 20:00:00
回复

使用道具 举报

wbh_qj 发表于 2015-3-28 20:31:27
desehawk 发表于 2015-3-28 19:48
楼主对hive权限是否做了设置

或则hive1.1可能对权限有了一定的限定。

我没有做权限方面的设置。
不创建与hbase关联的table是没有问题的。

回复

使用道具 举报

wbh_qj 发表于 2015-3-28 20:37:50
langke93 发表于 2015-3-28 20:00
不兼容引起的

https://github.com/hortonworks/hadoop-tutorials/issues/30

我刚接触hive & hbase, 还没入门,虽然也怀疑是不兼容的问题,但是不知道从哪里下手,该改什么,:(

请教一下,有没有什么建议
回复

使用道具 举报

langke93 发表于 2015-3-28 20:46:37
wbh_qj 发表于 2015-3-28 20:37
我刚接触hive & hbase, 还没入门,虽然也怀疑是不兼容的问题,但是不知道从哪里下手,该改什么,:(

...

不兼容只有替换包或则修改源码。
这两个难度还是比较大的

回复

使用道具 举报

wbh_qj 发表于 2015-3-28 22:16:37
本帖最后由 wbh_qj 于 2015-3-28 22:27 编辑

明白,谢谢langke93!

求大神们推荐一个较新的、兼容的、验证过的版本组合(hadoop, hbase, hive, sqoop)

不甚感激!
回复

使用道具 举报

langke93 发表于 2015-3-28 22:52:20
wbh_qj 发表于 2015-3-28 22:16
明白,谢谢langke93!

求大神们推荐一个较新的、兼容的、验证过的版本组合(hadoop, hbase, hive, sqoop) ...



这上面都是经过验证的。不过不是太新
回复

使用道具 举报

12下一页
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条