如果在 impala statestore 关闭时执行 DDL,为啥 Impala 查询会失败?

Posted

技术标签:

【中文标题】如果在 impala statestore 关闭时执行 DDL,为啥 Impala 查询会失败?【英文标题】:Why does an Impala query fail if DDL is executed when impala statestore is down?如果在 impala statestore 关闭时执行 DDL,为什么 Impala 查询会失败? 【发布时间】:2019-07-16 07:22:42 【问题描述】:

在impalahere的官方文档中,statestore组件有一句声明:

如果在 statestore 关闭时发出 DDL 语句,访问 DDL 创建的新对象的查询将失败。

如果我错了,请纠正我,但通过 Impala SQL 所做的元数据更改会从 Impala 目录服务传播到 Impala 守护程序。那么,如果 statestore 宕机,为什么对通过 DDL 生成的新对象的查询会失败呢?

【问题讨论】:

【参考方案1】:

只是你理解的一个小更正,文档说明如下

称为目录服务的 Impala 组件中继元数据 从 Impala SQL 语句到所有 Impala 守护进程的变化 集群。

所以基本上它通过 StateStore 将元数据更改传递给 Impala 守护程序。您还将在文档中看到以下内容,

因为 statestore 的目的是在出现问题时提供帮助 向协调员广播元数据

因此,任何元数据更改都会由 Catalog 服务通过 Statestore 服务中继到 Impala 守护程序。

简单来说,当 Statestore 启动并运行时,Impala 守护进程和 Statestore 始终处于连接状态。 Statestore 负责

监控所有 Impala 守护进程并让其他 Impala 守护进程 知道是否在其中一个守护程序上发现了任何健康问题(例如守护程序关闭)。

它在查询时将元数据更改广播到 Impala 守护进程 在 Invalidate Metadata 期间执行。

希望有帮助!

【讨论】:

我现在明白了。尽管他们应该提到中继是通过 statestore。感谢您的澄清。

以上是关于如果在 impala statestore 关闭时执行 DDL,为啥 Impala 查询会失败?的主要内容,如果未能解决你的问题,请参考以下文章

Impala 资源管理

IMPALA-元数据相关

Impala原理探索

Impala隐藏的惊天秘密

impala入门(一篇就够了)

Impala MetaData问题