JournalNode,DataNode个数上必须保持相同么?JournalNode是怎么同步namenode元数据信息的?

Eric_Jiang - 我是小象的搬运工!!!

赞同来自: 张善水 yyglider

第一个问题,是不用的。两个的作用完全不一样。dn是为了存储实际数据块和执行数据块读写的,jn是为了解决hadoop单点故障,在节点间共享数据。jn最少三个,并且为奇数个。 至于你的第二个问题是这样的,在配置好HA后,所有的更新操作都会写到JN节点的共享目录中,这格式有dfs.namenode.shared.edits.dir 配置的 qjournal:// ... active nn和standbynn从jn的edits的共享目录中同步edits到自己的edits目录中。 standby nn中的standby checkpoint类会定期检查合并条件是否成立 standby nn中的standbycheckpoint类合并之后,将合并的fsimage上传到activ NN中 active nn接收到之后,将旧的fsimage和edits清理。 ps:fsimage是hadoop文件系统元数据的永久检查点。其中包含hadoop文件系统中所有目录和文件的idnode序列化信息 edits存放hadoop文件系统所有更新操作的路径。 直播课老师会将的。hadoop权威指南中也有

fish - Hadooper

赞同来自: 张善水

Datanode是用于存储hdfs真实数据块的,它的多少和总容量决定了hdfs集群的总存储容量。 JournalNode是用于存储hdfs中,NameNode的操作日志(也就是edits)的,一般由单数个(3个以上)节点组成,保证对于edits的高可靠存储。它不决定集群的容量大小,跟DataNode没什么直接关系。 JournalNode其实不参与NameNode的原信息同步之类的操作,它只是个忠实的存储,存储来自于NameNode的操作日志,由于它可以被ActiveNameNode跟StandbyNameNode同时看到,所以可以使操作日志在不同的NameNode之间得到共享。 ActiveNameNode在文件系统被修改时,会向JournalNode写入修改记录,而StandbyNameNode可以方便的读取到这样的修改记录。

要回复问题请先登录注册