Namenode在HDFS中是一个非常重要的组件,相当于hadoop集群系统的心脏,在显示分布式集群环境中,还是会有可能出现Namenode的崩溃或各种意外。所以,高可用模式就体现出作用了。通过多引入一个NN的,可以保证当一个NN宕机时,也可以保证集群服务的正常。
但是两个NN将会产生数据不一致等问题:
1、能否让两个NN都正常响应客户端的请求?
应该让两个NN节点在某个时间只能有一个节点正常响应客户端的请求,响应请求的必须为active状态的的NN。
2、standby状态的节点必须能够快速无缝的切换为active状态
意味着两个NN必须时刻的保持元数据的一致性
3、文件数据的写入首先写入namenode的edits文件中,因此如果将edits放置到qjournal中管理。因为qjournal是一个分布式的集群,这样可以确保edits不会因为单个客户端宕机而丢失。qjournal 依赖于 zookeeper实现
网友评论