Impala与 Hbase整合使用说明
目录
HBase 是一个基于列的 NoSQL 数据库,它可以实现的数据的灵活存储。它本身是一个大表,在一些应用中,通过设计 RowKey ,可以实现对海量数据的快速存储和访问。但是,对于复杂的查询统计类需求,如果直接基于 HBase API 来实现,性能非常差,或者,可以通过实现 MapReduce 程序来进行查询分析,这也继承了 MapReduce 所具备的延迟性。
实现 Hive 与 HBase 集成,我们知道, impala 与 hive 共享相同的 metstore 数据库, Hive 表的列的映射信息也适用 impala ,所以二者集成,可以使用我们熟悉的 SQL, 像操作传统关系型数据库一样,很容易给出复杂查询、统计分析的 SQL 设计,并通过 Impala 查询统计分析,比原生 的 MapReduce 以及 Hive 的执行速度快很多 。
一 、 UDH 环境 集成 配置
1. 首先要确保 /usr /lib /hive/lib 下 HBase 的 jar 包的版本要和实际环境中 HBase 的版本一致,需要用 /usr/lib/hbase /lib/ 目录下得 jar 包 做软连接,如下图:
2. 在 UDH hive 配置界面以下属性:
hive.aux.jars.path
hbase.zookeeper.quoru m
zookeeper.znode.parent
二 、 Hive 映射已存在的 Hbase 表
H ive 中的外部表可以映射到已存在的 Hbase 表,如映射到百度爬虫数据
上面 DDL 语句中,在 WITH SERDEPROPERTIES 选项中指定 Hive 外部表字段到 HBase 列的映射,其中 “:key” 对应于 HBase 中的 RowKey ,名称为 “ rkey ” ,其余的就是列簇 info 中的列名。最后在 TBLPROPERTIES 中指定了 HBase 中要进行映射的表名。
三 、 使用 impala 验证映射的 Hbase 表
Impala 共享 Hive 的 Metastore ,这时需要同步元数据,可以通过在 Hue 中 impala 查询界面 执行同步命令:
INVALIDATE METADATA;
然后,就可以查看到映射 HBase 中表的结构:
通过上面三步,我们就完成了 Hive 和 HBase 的 集成 配置
四 、 常见问题汇总
- 在 hive 中创建映射表报如下错误,原因 hive 没有指定 hbase 的连接地址
解决:在 hive-site.xml 中添加 Hbase 的连接方法,需要添加两个属性分别是 hbase.zookeeper.quorum 、 zookeeper.znode.parent 对应如下图
- 在 hive 中执行 select count(*) from scores 语句查询时出现如下错误
解决: hive-site.xml 中 hive.aux.jars.path 属性里缺少 htrace-core.jar 库路径
- I mpala 执行查询出现 AnalysisException: Failed to load metadata for table 错误,检查 impala 配置主目录下( /etc/impala/conf )是否包含 hbase-site.xml 文件。
Attachments:
Impala Hbase 整合使用说明.docx (application/vnd.openxmlformats-officedocument.wordprocessingml.document)
Impala Hbase 整合使用说明.docx (application/vnd.openxmlformats-officedocument.wordprocessingml.document)