每日小结
今年马上工作三年了,17年毕业到现在,正好复习下学到的大数据知识,如果有什么错误请指正。
hdfs管理机制
当文件被上传到hdfs上时,客户端会询问namenode元数据,namenode合理分配,将文件以块(通常为128M)
的形式分配到不同的数据节点上,也就是datanode,以及分配副本,namenode存储着数据文件的元信息,比如哪个块,在哪个datanode上。
hdfs数据更新机制
namenode元数据管理有三种形式
一种是内存元数据,也就是metadata
第二种是edits,也就是编辑日志,保存了对元数据的操作信息。
第三种是fsimage,是在磁盘中保存的内存元数据的镜像,通常也叫检查点。
secondarynamenode和HA的区别
网上大多只有官方文档的翻译,说说我个人的理解吧
standbynamenode和secondarynamenode是两个东西,ha立马切换,snamenode只是为了更好地辅助namenode
因为namenode操作会产生日志,这个就是edits.log ,正常情况下只有重启才会合并日志,但是生产情况通常namenode都是7x24小时的,所以edtis.log会大大大,这样的话,重启会很消耗时间,snn就是为了这种情况而生
操作信息首先会被记录到edits中,然后当edits满了,会新建一个edits_new,停止向edits中写入数据,secondarynamenode 会通过http get将fsimage和edits_old放入到内存中,并合并成fsimage_new,最后通过http_put用fsimage_new 替换掉fsimage,同时edits_new改名成edits
而Ha呢,会把edits复制到 本地(差别一个是本地,snamenode通常都是另外一个机器),然后放入到类似共享集群中,然后standby会定时读edit.log,会和fsimage合并,然后再讲合并后的fsimage放入到共享集群中,active namenode会替换掉fsimage,至于替换的时机,由两个参数决定,一个是时间,一个是edit事务条目