namenode管理着集群数据的元数据信息,并持久化存储在fsimage和editlog文件中,文件存放的位置是通过hdfs-site.xml中配置的。
fsimage的存放路径是dfs.namenode.name.dir的值,默认是“${dfs.tmp.dir}/dfs/name”。editlog文件的存放路径是dfs.namenode.edits.dir指定的值,默认是“${dfs.namenode.name.dir}”
为了保证安全性:
1、在hdfs-stite.xml文件中,指定路径时,指定多个路径,并用逗号分开,则fsimage和editlog文件会同时存储在多个位置,从而产生冗余,保证安全。
方案一定程度上能保证数据安全性,但前提是namenode这个节点没有宕机,因为文件是存在该节点的不同位置的。如果该节点宕机,那就找不到元数据了。
2、namenode的HA
存在两个namenode节点 NN Active和NN Standby,使用代理(Zookeeper)监控NN Active的状态,当NN Active宕机时,自动把NN Standby转化为NN Active,为了保证NN Active和NN Standby 元数据的同步, NN Active和NN Standby通过journal node 进行通信,保证两个节点元数据的一致性