我想了解hive如何知道哪个hadoop名称节点处于活动状态以及当活动名称节点失败时会发生什么
Hive 通过 metatool
配置为指向为 HA HDFS 配置的dfs.nameservices
。 请参阅 https://cwiki.apache.org/confluence/display/Hive/Hive+MetaTool。 dfs.nameservices
是一个逻辑地址,而实际的名称节点配置为 dfs.ha.namenodes.[id]
。
至于哪个Namenode处于活动状态,状态存储在Zookeeper中。 当活动名称节点发生故障时,将在配置的时间(默认值为 5 秒,ha.zookeeper.session-timeout.ms
)后触发故障转移。 需要屏蔽脚本,并触发备用名称节点变为活动状态。
在 hdfs HA 环境中,节点名称应该是一个逻辑名称(例如 hdfs://logicalnamenode)。我们需要将 Hive 配置为使用 HA。为此,您需要使用 metatool 命令更改 hive 名称节点配置。
- 列出当前 NN 配置
~# 元工具 -listFSRoot
hdfs://namenode:8020/user/hive/warehouse - 以下命令将使用逻辑名称更新旧的 NN 配置
metatool -updateLocation hdfs://logicalnamenode hdfs://namenode:8020 -tablePropKey avro.schema.url