hadoop hdfs分布式文件系统工作原理

非HA下的namenode 工作原理

nameNode的作用:1.管理元数据 2.维护目录树 3.响应客户请求(主要就是记录一些 真实数据存放在 被切割后 放在了 哪些机器上,等客户端下载时  找到这些文件块 在合并返回给客户端)



1.当客户端没请求一次时  nameNode都要记录这次请求记录 在给客户端响应

nameNode的元数据是非常庞大的,还要保证效率,怎么做的?

解决方案1.可以使用readis缓存数据库,还可以持久化,但是 hadoop不想依赖太多第三方的东西 想自己做


方案2:自己将 数据 保存在磁盘上(fsImage)如果没操作一次 就将数据 放入fsImage中,fsImage非常大,又是放在磁盘上,非常消耗性能,

还是可以将可以利用readis缓存数据库 定时网fsImage中存放

PS:nameNode不支持多线程

说了不想引入第三方东西太多 。


3.他使用了日志的方式存放   新建一个edits.log 的文件  edits.log文件默认大小是64M,超过64M,就将其改名为edits.log.1  这样edits.log就没有了 ,就会新建

edits.log是追加的(append only) (文件追加效率还是很高的)不断追加客户端的操作记录


4.在什么时候合并呢?怎么合并的

默认合并时间是 3600秒 

如果就在本机上合并,fsimage数据太大,合并和耗时间,这样响应客户端的请求就会慢

hadoop启动的时候 默认给我们启动了一个  secondary namenode 

使用secondaryNameNode 进程做合并处理


5.secondary nameNode 首先 将fsImage和多个edits日志文件下载到本地

6.加载到内存进行合并处理

7.给NameNode发送一个通知,让他别忘edits.log文件中写入数据,改为网editsNew中写数据

8.生成合并之后的fsimage 命名为fsImage.checkpoint

9.nameNode下载合并后的fsimage.checkpoint

10.nameNode将fsiamge.checkpoint改为 fsimage 替换老的fsimage

11.将editsNew给我edits.log 

如此循环下去




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值