大数据笔记_2

hadoop 的 HDFS(相关介绍) 包含 NameNode 和 DataNode

NameNode相关
1
 NameNode完全基于内存进行存储,这样会很快的处理各种请求,那这样如何保实现持久化呢? 
持久化方案包括:EditLog和内存镜像 
	EditsLog:记录增删改的操作,下次启动的时候,读取日志,重新执行日志记录的命令
		 优点:完整性好
		 缺点:加载恢复数据的时候慢
		 适合:体积小,记录少适合使用
 	镜像/快照:内存全量数据基于某个时间点做的对磁盘的益写
 		优点:恢复速度快
 		缺点:完整性不好
 		

2. 
HDFS 结合使用两种方式(FSImage + 增量EditsLog)
   比如10点开机打一个快照,然后到11点使用editLog记录,等到了日志大小超过限制之后,就把这些操作更新到快照里 边,这些操作可以再另外电脑上完成(second name node)


3. 
NameNode存储的数据包括: 文件属性,每个快再哪个DataNode上。 如果NameNode重启的时候,只会加载文件属性,block的信息需要DataNode重新告知(为了保持数据的一致性)

4.NameNode启动流程
		1. NameNode首先会加载EditLog和FSImage(第一次搭建的时候会格式化,生成FSImage)
		2.  将EditLog的事物作用到FSImage上
		3. 保存更新了的FsImage,删除就的EditLog
		4. 此时NameNode是处于安全模式的,不会对数据块进行操作
		5. 通过心跳获取DataNode的汇报数据,确认block信息和副本数都正确
		6. 退出安全模式
		7. 确定哪些数据块的副本数没有达到指定数目,通知相关DataNode进行复制



5. 写的流程
		1. 客户端把文件切成很多的小块
		2. 客户端和NameNode交互元数据,告知NameNode需要要写一个文件
		3. NameNode出发副本放置策略,返回根据距离排序的DataNode列表,比如叫做 A B C 。。
		4. 客户端会建立pipeline(会跟A建立TCP连接 ,A会跟C建立TCP连接,B会跟C建立TCP连接。。。。)
		5. 客户端像A传输数据,同事 B 和C也都有了这个数据
6. 读的流程
		1. 客户端和NameNode联系,取回文件的block信息(包括副本)
		2. 客户端再副本中挑选距离自己最近的去下载
		3. 客户端也可以根据需要去下载自己感兴趣的block
		4. 
DataNode相关:
8. DataNode保存block的的校验码和数据,保证block的可靠性
9. 与NameNode保持心跳,汇报block的列表状态
Block(一个文件的一个快)的副本放置策略
第一个副本放在上传文件的DataNode上
第二个副本放在与第一个副本不同的机架的节点上(考虑到只有两个副本的情况)
第三个副本放在与第二个副本相同的节点上(为了减少网络传输)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值