Impala自动同步Hive元数据

在Cloudera官方文档 Impala Metadata Management,找到了CDH平台中Impala自动同步Hive元数据的配置方法。

文档中提示这是CDH6.3/Impala3.3的一个预览特性,不是普遍有效的。

经过在CDH6.3.2集群中的实际测试,发现对于Hive的一般操作,Impala都可以有效自动同步。文档中提到对于Spark INSERT Hive的操作,Impala也可以自动同步,不过我没有对此进行测试验证。

这种机制称为 基于事件的自动元数据同步,是通过监控Hive元数据变动通知实现Impala周期性的自动同步,所以如果一个操作不会在HMS(Hive Metastore Server)中生成事件,那么这个操作就不会被同步到,例如Spark直接写数据到HDFS这种操作:

Seq((1, 2)).toDF("i", "j").write.save("/user/hive/warehouse/spark_etl.db/customers/date=01012019")

下面简要记录一下配置方法,详情请查看 Impala Metadata Management

配置Hive

1、导航到 群集 > Hive > 配置 > 筛选器 > 范围 > Hive Metastore Server
2、选择 启用数据库中的存储通知
3、编辑 hive-site.xml 的 Hive Metastore Server 高级配置代码段(安全阀),添加如下配置:

名称
hive.metastore.notifications.add.thrift.objectstrue
hive.metastore.alter.notifications.basicfalse

4、保存改变
5、如果你想要在Spark应用插入数据到已存在的表和分区时生成 INSERT 事件,则进行如下配置:
编辑 hive-site.xml 的 Hive 客户端高级配置代码段(安全阀),添加如下配置:

名称
hive.metastore.dml.eventstrue

编辑 hive-site.xml 的 Hive 服务高级配置代码段(安全阀),添加如下配置:

名称
hive.metastore.dml.eventstrue

6、保存改变,重启服务。

配置Impala

1、导航到 群集 > Impala > 配置 > 筛选器 > 范围 > Imapla Catalog Server
2、编辑 Catalog Server 命令行参数高级配置代码段(安全阀),添加配置:--hms_event_polling_interval_s=4
3、保存改变,重启服务。
--hms_event_polling_interval_s是设置元数据同步频率的,默认为0,表示不同步。

关闭自动同步

当启用了基于事件的自动元数据同步后,默认对所有数据库和表有效。如果你希望控制同步的启用和关闭,可以使用impala.disableHmsSync属性。

  • 'impala.disableHmsSync'='true' 表示关闭。
  • 'impala.disableHmsSync'='false' 表示启用,这是默认配置。

关闭新数据库的自动同步

Impala不支持设置数据库属性,所以这个必须使用Hive操作。示例:

CREATE DATABASE <name> WITH DBPROPERTIES ('impala.disableHmsSync'='true');

启用或关闭表的自动同步

新建表,示例:

CREATE TABLE <name> ... TBLPROPERTIES ('impala.disableHmsSync'='true' | 'false');

更改表,示例:

ALTER TABLE <name> SET TBLPROPERTIES ('impala.disableHmsSync'='true' | 'false');
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值