标签:inte 同步 sztcyl node04 hadoop hive HMS jdbc impala
由于Impala 的 Automatic Invalidate/Refresh Metadata的功能在CDH6.3版本才有的功能,通过以上两个升级,已经具备的该功能,下面是需要配置该功能
测试环境
1.CM和CDH版本为6.1.1(hive的版本升级到了CDH6.3.2-2.1.1)
2.操作系统版本为RedHat 7.6
3.impala3.4版本
操作步骤
进入CM界面 > Hive > 配置 > 搜索 启用数据库中的存储通知(英文界面搜索:Enable Stored Notifications in Database),并且勾选,注意一定要勾选,配置后面的配置不生效。数据库通知的保留时间默认为2天,意味着如果事件通知没有更新超过2天事件将会丢失
在 CM界面 > Hive > 配置 > 搜索 hive-site.xml 配置如下几处
hive-site.xml 的 Hive Metastore Server 高级配置代码段(安全阀)
<property>
<name>hive.metastore.notifications.add.thrift.objects</name>
<value>true</value>
</property>
<property>
<name>hive.metastore.alter.notifications.basic</name>
<value>false</value>
</property>
|
如果你想在使用Spark和其他应用程序将数据插入现有表和分区时会生成事件,需要在hive-site.xml 的 Hive 服务高级配置代码段(安全阀)以及hive-site.xml 的 Hive 客户端高级配置代码段(安全阀)添加配置
<property>
<name>hive.metastore.dml.events</name>
<value>true</value>
</property>
|
保存上述配置,并重启Hive 是配置生效,可以在webui 界面确认参数是否生效
然后在CM > Impala > 配置 > 搜索 catalog 命令行参数 添加如下配置,注意前面为两个英文中划线符号。
--hms_event_polling_interval_s=2
|
该参数表示启用hms 滚动事件功能并以秒为单位设置轮询频率,建议该值小于5秒,参数默认值为0 ,表示不启用。配置该参数前需要确认hive-site.xml 的 Hive Metastore Server 高级配置代码段(安全阀)的配置已经生效,否则重启impala 时,Catalog Server 将无法正常启动。
验证配置是否生效可以在Catalog Server WebUI 界面中 /varz 下查看
功能验证
使用beeline 进入hive 中创建一个库,并查看
[root@sztcyl-inte-hadoop-node02 ~]# beeline
beeline> !connect jdbc:hive2://sztcyl-inte-hadoop-node04:10000/default
Connecting to jdbc:hive2://sztcyl-inte-hadoop-node04:10000/default
Enter username for jdbc:hive2://sztcyl-inte-hadoop-node04:10000/default: hive
Enter password for jdbc:hive2://sztcyl-inte-hadoop-node04:10000/default: ****
Connected to: Apache Hive (version 2.1.1-cdh6.3.2)
Driver: Hive JDBC (version 2.1.1-cdh6.3.2)
Transaction isolation: TRANSACTION_REPEATABLE_READ
0: jdbc:hive2://sztcyl-inte-hadoop-node04:100>
0: jdbc:hive2://sztcyl-inte-hadoop-node04:100/> show databases;
0: jdbc:hive2://sztcyl-inte-hadoop-node04:100/> create database ods_test;
0: jdbc:hive2://sztcyl-inte-hadoop-node04:100/> show databases;
|
在Impala 中查看,显示已及时更新
[root@sztcyl-inte-hadoop-node02 ~]# impala-shell -i sztcyl-inte-hadoop-node04 -l -u hive --auth_creds_ok_in_clear
Starting Impala Shell using LDAP-based authentication
LDAP password for hive:
Opened TCP connection to sztcyl-inte-hadoop-node04:21000
Connected to sztcyl-inte-hadoop-node04:21000
Server version: impalad version 3.4.1-RELEASE RELEASE (build eb1ed66fa435a722fa8c6a7c58ff53edc10c572e)
***********************************************************************************
Welcome to the Impala shell.
(Impala Shell v3.1.0-cdh6.1.1 (97215ce) built on Thu Feb 7 23:24:56 PST 2019)
To see live updates on a query's progress, run 'set LIVE_SUMMARY=1;'.
***********************************************************************************
LDAP authentication is enabled, but the connection to Impala is not secured by TLS.
ALL PASSWORDS WILL BE SENT IN THE CLEAR TO IMPALA.
[sztcyl-inte-hadoop-node04:21000] default>
[sztcyl-inte-hadoop-node04:21000] default>
[sztcyl-inte-hadoop-node04:21000] default> show databases;
Query: show databases
+------------------+----------------------------------------------+
| name | comment |
+------------------+----------------------------------------------+
| _impala_builtins | System database for Impala builtin functions |
| db_ods | |
| db_ods_test | |
| db_test | |
| dc_dev | |
| default | Default Hive database |
| hive_test | |
| ods_test | |
| steven | |
| test | |
+------------------+----------------------------------------------+
Fetched 10 row(s) in 0.04s
[sztcyl-inte-hadoop-node04:21000] default>
|
create table测试
0: jdbc:hive2://sztcyl-inte-hadoop-node04:100/> use ods_test;
0: jdbc:hive2://sztcyl-inte-hadoop-node04:100/> create table test1(a string);
0: jdbc:hive2://sztcyl-inte-hadoop-node04:100/> create table test1(a string);
0: jdbc:hive2://sztcyl-inte-hadoop-node04:100/> show tables;
|
在impala 中查看
hive中drop表测试
0: jdbc:hive2://sztcyl-inte-hadoop-node04:100/> drop table test1;
0: jdbc:hive2://sztcyl-inte-hadoop-node04:100/> show tables;
|
在impala 中查看
[sztcyl-inte-hadoop-node04:21000] ods_test> show tables;
Query: show tables
+-------+
| name |
+-------+
| test2 |
+-------+
Fetched 1 row(s) in 0.01s
|
另外HMS 支持表单独禁用impala 自动刷新元数据功能,但是impala 中不支持database 的单独禁用该功能
如果 'impala.disableHmsSync'='true',表示事件将被忽略,并且不会与HMS同步。
如果设置 'impala.disableHmsSync'='false' 或者 impala.disableHmsSync 未设置,则启用与HMS的自动同步,- -hms_event_polling_interval_s 全局标志设置为非零。
文档总结
在日常使用如Hive和Spark之类的工具来处理Hive表中的原始数据时,会生成新的HMS元数据(数据库、表、分区)和文件系统元数据(现有分区/表中的新文件)。在以前的Impala版本中,为了获取最新元数据信息,Impala需要手动执行INVALIDATE 或者 REFRESH 命令。随着impala 功能的不断完善,impala 的元数据同步问题终于在impala3.4得到有效的解决,
标签:inte,
同步,
sztcyl,
node04,
hadoop,
hive,
HMS,
jdbc,
impala
From: https://blog.51cto.com/wang/8491368