1、SNN(SecondaryNameNode)的数据合并过程
触发合并:设定时间间隔、设定edits文件大小、Hadoop重启
合并时,SNN会将NameNode中edits文件和fsimage文件拷贝过来,这时NN生成新的edits文件会继续记录新的读写请求。在SNN中将拷贝过来的fsimage和edits文件合并生成新的fsimage,并将其发送到NN中替换之前fsimage文件。
2、NameNode的实现
NN中维护着HDFS的元数据信息,并且将其存储内存中,利用三个文件实现的,edits(保存对数据的操作记录),fsimage(保存大部分的元数据),fstime(保存最近一次检查的时间)。当有写请求时,NN会先将请求写入edits文件,成功后修改内存,然后客户端返回处理结果。
3、DataNode的实现
在Hadoop中,数据是以块的形式存储在DN上。DN会不断向NN发送心跳报告,用于告知NN存活状态,并且接受NN发送过来的处理信息,然后对数据进行相应的处理。
DN在一定时间内没有被NN接受到其发送的心跳报告,NN会认为该DN宕掉,然后会将该DN维护的数据copy到其它存活的DN上。
4、HDFS的读过程
客户端Client,向NN发起读取文件的请求;
NN会检查Client权限,文件是否存在等信息,若正确,Client可以获取到文件块的存储位置;
Client会选择距离近的块中进行读取文件;
读取结束后,会通知NN读取结束。
5、HDFS的写过程
客户端Client,向NN发送写文件的请求;
NN检查要创建的文件是否存在,Client是否有权限,若正确,则记录到edtis中;
Client自行将数据进行切分多个packet,并写入队列中,向NN请求新的block,获取存储的DN列表;
Client只将数据队列发送到一个DN上,DN之间会通过pipeline(管道)写入块;
存储成功返回成功信息给Client;
Client通知NN写入结束。
6、HDFS的删除过程
客户端Client将要删除的数据发送到NN上;
NN会将自身存储的数据相关信息删除,但并不会立即通知DN删除数据;
在DN发送心跳报告时,才会通知删除数据。
7、HDFS的角色划分
block:数据块,HDFS中最基本的存储单位,默认128M
NameNode:保存HDFS的元数据信息,包含文件和block的关系,block的数量、block和DN的关系
DataNode:真正存储block的地方
SecondaryNameNode(Hadoop1.0/Hadoop2.0伪分布式下):帮助NN进行元数据的合并,有一定的数据恢复能力
8、DataNode的容错机制
在DN中,始终维护着指定数量的副本,默认三个,用于保证某个DN宕机后数据的完整性,并且这些副本存放策略是:与DN同一机器上、不同机架上、同一机架的不同机器上,更多的节点随机存储到空闲DN上。