元数据是保存在namenode中的,这些元数据包括文件名、目录名,文件目录从属关系、文件大小,文件与块对应关系,块所对应的节点等;namenode会将这些元数据信息保存在硬盘上,对应的名字是fsimage_txid(即类似这种:fsimage_000000000000003210),以备下次启动时,可以及时获取到整个hdfs文件系统的重要信息;除了这个文件,还有一个文件edits(或者叫editlog,对应的名字格式:edit_0000000000000xxxx-000000000000xxx+1,通常会分成多个文件存储)文件,这个文件记录了namenode(以及客户端)和datanode交互的所有动作,如果说fsimage文件是地理纬度,则edits文件是时间维度,也就是说,fsimage文件+edits文件=hdfs在某一时刻的快照。由于此文件存储hdfs的所有动作,存储数据量较大,因此
当hdfs重新启动时,必须获得hdfs关闭前的状态,而这个状态自然是记录在fsimage和edits文件中的,因此需要将fsimage和edits中保存的信息加载入namenode的内存,其方式是先将fsimage加载,然后逐条执行edits中的指令,这样看好像解决了重启丢失数据的问题,但仍然有其它问题,hdfs集群通常是长期不关机的,这回造成edits文件无限变大,如果经过了很长时间后,需要重启一次,再像之前那样加载fsimage特别是edits文件,会出现启动时间过长的问题.....三五个小时,