INFO-impala自动同步元数据

功能说明

适用模块

impala
离线开发

具体说明

impala获取hive的元数据(自动同步),但同步失败(Impala升级到3.4版本后 截止目前没有用户反馈元数据同步失败情况),可通过在猛犸上创建 scripts 节点任务进行定时同步作为补充; 
1Impala 数据自动同步,仅支持 Hive 元数据变更或通过 Hive 引擎操作的 Hive 数据变更;直接变更 HDFS 数据文件无法做到自动同步,如直接 put 文件至  HDFS 目录或通过 SQOOP 进行数据传输至Hive 表中,此时需手工执行 refresh xxx.xxx 来触发数据同步;

2、配置参数中 SYNC_METASTORE 必须大写;

3Hive 元数据变更(字段变更)时,可手动在 Impala 下执行  invalidate metadata xxx.xxx 手动触发同步;

4Hive 增加分区或者分区路径下数据文件发生变更时,可在 Impala 下执行 refresh xxx.xxx 手动触发同步;

使用示例

如下所述:
1 编写shell脚本、并下载项目keytab  
 获取项目kerberos认证信息:在猛犸项目中心中,下载项目keytab,查看项目principal

INFO-Impala自动同步元数据 - 图1

 编写shell脚本

#! /bin/bash
# 先进行kerberos认证
# 其中 poc.keytab 需替换为用户所在项目 keytab 
# poc/dev@HADOOP.HZ.NETEASE.COM 需替换为对应项目 keytab 的 principal
kinit -kt  poc.keytab  poc/dev@HADOOP.HZ.NETEASE.COM

# 再通过beeline连接impala,执行sql
# jdbc 链接串需替换为用户所在集群对应jdbc 连接串
# beeline 参数说明: -u "jdbc链接串"  ;  -e "一条SQL" ;  -f $filepath  执行一个SQL文件 ;
beeline -u "jdbc:hive2://demo1.jd.163.org:2181,demo2.jd.163.org:2181,demo3.jd.163.org:demo4/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=impala-ha/hiveserver2;principal=impala/_HOST@HADOOP2.HZ.NETEASE.COM" -e "select * from $db.table"
2、在猛犸数据开发模块,新建一个任务流,并拖入一个script节点

INFO-Impala自动同步元数据 - 图2

3、将shell文件和项目keytab上传至任务流资源信息中

INFO-Impala自动同步元数据 - 图3 INFO-Impala自动同步元数据 - 图4 INFO-Impala自动同步元数据 - 图5 INFO-Impala自动同步元数据 - 图6

4、编辑该script节点,使其调用资源信息中对应的shell脚本文件,文件路径为 ./

INFO-Impala自动同步元数据 - 图7

5、在开发模式中调试该script节点至运行成功,再将该任务流提交上线,并按照需求设置调度即可

INFO-Impala自动同步元数据 - 图8 INFO-Impala自动同步元数据 - 图9 INFO-Impala自动同步元数据 - 图10 INFO-Impala自动同步元数据 - 图11


配置自动同步

1、创建 Hive 表时直接指定该表进行元数据同步;

create table poc.demo
(id int,
 name string
)
TBLPROPERTIES('SYNC_METASTORE'='on'
2、已存在Hive 表修改 tblproperties 属性,实现该表元数据同步

# Impala 引擎下执行
invalidate metadata  xxx.xxx;

# Hive 下执行
ALTER TABLE POC.DEMO SET TBLPROPERTIES('SYNC_METASTORE'='on'

作者:林帅