HADOOP之NAMENODE元数据管理(一点理解记下来只是为了帮助自己记忆)

最近一直在研究hadoop,看了一遍培训的视频,没怎么记住,然后又开始看第二遍,感觉懂了好多,随手记下来.hadoop的元数据是由namenode管理的,但是怎么保持读取速度和写的时候不会冲突呢.如果想读取数据的时候速度很快,那肯定要放在内存当中,可是一旦namenode宕机,就在也找不到这些数据,所以还是需要一份同样的数据卸载磁盘上做持久化(保存在磁盘上的文件我们称fsimage).那么问题来了,如果写的时候同时写入内存和磁盘中,这样会很浪费磁盘IO,影响读取速度,所以就多出来个很小的文件(edits:64M大小),这样客户端写入文件时,就会先像edits中写入一份元数据,然后如果想DataNode中写入block成功后会在像namenode中的内存中写入一份,当edits中写满时在像fsimage备份,这样就不会因为namenode宕机导致数据丢失了,但是又有问题了,如果用namenode这个进程来将edits备份到fsimage中也会占用namenode的内存,影响读的速度,所以就多出了SecondaryNameNode,它主要任务就是当edits达到临界值时从namenode中下载过来edits(同时namenode生成一个新的edits文件)和fsimage文件然后合并在传回给namenode.

同时还有个问题,就是如果在客户端像DataNode中写文件时这时候namenode宕机了,这时namenode的内存中肯定是没有元数据了 ,但是edits是存在的,那它存入的最后一条数据也就是客户端像DataNode写文件之前存入edits的那条数据到底会不会保存下来?我猜是不会的,因为如果客户端像DataNode中写block失败了呢,如果这条数据保存下来客户端想在传这个文件就传不上来了,其实这个文件根本没有传成功.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值