mas*_*meh 5 hadoop hive cloudera impala
正如impala教程中讨论的那样,Impala使用了Hive共享的Metastore。但是已经提到过,如果您使用hive在表上创建或制作某些版本,则应执行INVALIDATE METADATA或REFRESH命令以通知impala有关更改。
所以我很困惑,我的问题是:如果共享元数据数据库,为什么需要执行INVALIDATE METADATA或REFRESH由impala 执行?
如果是通过impala来缓存元数据,为什么守护程序在发生缓存未命中时不更新其缓存,并且不需要手动刷新元数据?
任何帮助表示赞赏。
好!让我们从评论中的问题开始,即集中式元存储的好处是什么。
拥有中央元存储不需要用户在两个不同的位置维护元数据,每个位置分别用于Hive和Impala。用户可以拥有一个中央存储库,并且这两个工具都可以访问此位置以获取任何元数据信息。
现在,第二部分,为什么在共享元存储时需要执行INVALIDATE METADATA或REFRESH?
Impala利用Massively Parallel Processing范例来完成工作。它倾向于从执行者节点保留元数据,而不是从集中的元存储中读取每个查询,以便它可以完全绕过“冷启动”,在冷启动中可能花费大量时间来读取元数据。
INVALIDATE METADATA / REFRESH会将元数据/块信息传播到执行程序节点。
为什么要手动?
在早期版本的Impala中,不存在分类过程。元数据更新需要通过上述命令传播。从Impala 1.2开始,添加了catalogd,此过程将元数据更改从Impala SQL语句中继到集群中的所有节点。
因此,无需手动进行操作!
希望能有所帮助。
| 归档时间: |
|
| 查看次数: |
5291 次 |
| 最近记录: |