全部产品
云市场

Hive访问HBase增强版

更新时间:2019-11-22 15:08:07

替换Hive中的hbase相关的jar包

HBase增强版支持Hive访问。但是Hive调用HBase的方式并非标准用法,而是直接调用了HBase内部类。因此无法采用直接加入alihbase-connector的jar的方式做兼容,需要替换hive/lib下已有的hbase jar包。hive

  1. 删除hive/lib中hbase 开头的所有的jar。如图中红框所示的所有jar文件。注意不要删除hive-hbase-handler-{version}.jar,这是Hive访问HBase的逻辑代码jar包。
  2. 点此下载alihbase兼容客户端jar包文件(所有以alihbase-开头的jar包,其他的依赖视情况而定,如果原来就有。可以不放),全部放入hive/lib目录中
  3. 如果之前在hive/.hiverc中或者在启动Hive时使用--auxpath参数指定了hbase依赖的,需要把加载的jar包换成新的alihbase开头的jar

连接前的准备

获取连接地址

参见连接集群,使用地址中Java API访问地址,如果是公网访问,请使用公网域名

获取用户名密码

参见连接集群,默认的用户名为root,密码为root。或者在集群管理页面中关闭ACL功能后,无需再提供用户名密码

将访问HBase的Hive机器IP加入HBase白名单

所有访问HBase的Hive机器的IP,必须加入HBase集群的白名单中,否则无法访问,添加白名单请参考访问白名单

在Hive中配置连接参数

在Hive中配置连接HBase的参数有两种参数,一种是直接配置在hive-site.xml文件中。在这个文件中加入如下配置项:

  1. <configuration>
  2. <!--
  3. 集群的连接地址,在控制台页面的数据库连接界面获得(注意公网地址和VPC内网地址)
  4. -->
  5. <property>
  6. <name>hbase.zookeeper.quorum</name>
  7. <value>ld-xxxx-proxy-hbaseue.hbaseue.xxx.rds.aliyuncs.com:30020</value>
  8. </property>
  9. <!--
  10. 设置用户名密码,默认root:root,可根据实际情况调整
  11. -->
  12. <property>
  13. <name>hbase.client.username</name>
  14. <value>root</value>
  15. </property>
  16. <property>
  17. <name>hbase.client.password</name>
  18. <value>root</value>
  19. </property>
  20. </configuration>

另一种方式是在Hive的Client中直接用命令的方式配置:

  1. set hbase.zookeeper.quorum=ld-xxxx-proxy-hbaseue.hbaseue.xxx.rds.aliyuncs.com:30020
  2. set hbase.client.username=root
  3. set hbase.client.password=root

当完成这些配置后,就可以在Hive中自由地使用HBase外表。

Hive简单使用指南

如果HBase表不存在,可在Hive中直接创建云HBase关联表

  • 进入hive cli命令行Hive CLI
  • 创建HBase表
    1. CREATE TABLE hive_hbase_table(key int, value string)
    2. STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
    3. WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf1:val")
    4. TBLPROPERTIES ("hbase.table.name" = "hive_hbase_table", "hbase.mapred.output.outputtable" = "hive_hbase_table");
  • Hive中向hbase插入数据
    1. insert into hive_hbase_table values(212,'bab');
    hive
  • 查看云HBase表,hbase表已创建,数据也已写入hivehive
  • 在HBase中写入数据,并在Hive中查看

    hive

  • 在Hive中查看:

    hive

  • Hive删除表,HBase表也删除

    hive

  • 查看hbase表,报错不存在表hive

  • 如果HBase表已存在,可在Hive中HBase外表进行关联,外部表在删除时不影响HBase已创建表

  • 云hbase中创建hbase表,并put测试数据hive
  • Hive中创建HBase外部关联表,并查看数据hive
  • 删除Hive表不影响HBase已存在表

    hive

Hive更多操作HBase步骤,可参考https://cwiki.apache.org/confluence/display/Hive/HBaseIntegration

注意:目前暂不支持Hive关联HBase增强版的Snapshot来直接读取HFile文件。如果是采用关联/创建外表的方式读写是完全兼容的。