SecondryNameNode-数据持久化操作

 SecondryNameNode的职责是合并NameNode的edit logs 到fsimage文件中。

SecondryNameNode-数据持久化操作_第1张图片
虽然说NameNode可以做持久化但是操作,但是当NameNode遇到一些特殊原因,比如说断电,重启等原因,会导致edit logs 变的很大,怎么取管理这个文件也是一个问题。所以说NameNode就找了一个下手,这个下手就是SecondryNameNode.
首先说一下
edit logs 中打印的信息是NameNode已经启动的情况下对Hdfs进行的各种更新操作的记录。Hdfs客户端执行的写操作也会被记录到edit logs 中。
fsimage中保存了最新的元数据检查点,在hdfs启动的时候加载fsimage的信息。
fsimage中包括所有的系统信息,每秒都会产生信息向fsimage中存放。
数据持久化会有两个触发条件。

  1. NameNode启动时间超过3600s
  2. edit logs 的大小超过了64M

如果edit logs 发送到了SecondryNameNode之后,edit logs又超过了64M
两个解决方案。

  1. edit logs 1号会和fsimage先合并之后传给NameNode,然后
    edit logs 2号会和合并之后的 fsimage再给到SecondryNameNode
    进行合并,产生新的fsimage。
    2.扩大edit logs 的大小。

数据持久化操作

数据持久化操作其实就是讲NameNode将元数据存储到磁盘中,当NameNode碰到问题之后再磁盘中读取相应的元数据,然后恢复到碰到问题之前的状态。

安全模式

NameNode和DataNode中会有一种通信机制。这种机制就叫心跳机制。
为什么会有这种机制 比如说,你是一家公司的老板,你的员工被秘书全拐走了,
秘书还告诉你,你的员工还都在,如果你和你自己的员工之间有通信就不会是这种情况了。

心跳机制:默认设置DataNode会向NameNode每隔3秒发送一次心跳,如果一分钟没有发送,那么NameNode会认为这个DataNode已经挂掉了。

如果NameNode认为DataNode已经挂掉 就不会再向DataNode发送数据,会向其他的DataNode继续发送数据
如果DataNode修复好之后,NameNode如果发送的还是之前的block块那么不会在发送给
DataNode,如果是新的block块将会继续启用这个DataNode。

你可能感兴趣的:(SecodryNameNode)