概述
一、HDFS的存储模型
1、文件线性按字节分割成块(block),具有offset,id
2、文件与文件的block大小可以不一样。
3、一个文件除了最后一个block,其他block大小一致。
4、block的大小可以一句硬件的I/O进行调整。
5、block被分散存放在集群的节点中,具有location。
6、Block具有副本(replication),没有主从概念,副本不能出现在同一个节点。
7、副本是满足可靠性和性能的关键。
8、文件上传可以指定block大小和副本数,上传后只能修改副本数。
9、一次写入多次读取,不支持修改。
10、支持追加数据。
二、HDFS的架构设计
1、HDFS是一个主从(Master/slaves)架构。
2、由一个NameNode和一些Datanode组成。
3、面向文件包含:文件数据(data)和文件元数据(metadate)。
4、Datanode负责存储文件数据(block),并提供block的读写。
5、Namenode负责存储和管理文件元数据,并维护了一个层次型的文件目录树。
6、Datanode与Namenode维持心跳,并汇报自己持有的block信息。
7、Client和Namenode交互文件元数据,与Datanode交互文件的block数据。
三、NameNode的功能
1、完全基于内存存储文件元数据、目录结构、文件block的映射。
2、需要持久化方案保证数据的可靠性。
3、提供副本放置策略。
四、DataNode的功能
1、基于本地磁盘存储的block(文件的形式)。
2、并保存block的检验和数据保证block的可靠性。
3、与NameNode保持心跳,汇报block的列表状态。
五、数据持久化方案:
1、日志文件:实时记录发生的增删的操作,会一直最佳操作记录
优点:完整性好
缺点:加载恢复慢,占空间(恢复的时候并不能造成内存溢出)
2、镜像、快照、dump、db:内存全量数据基于某一个时间点做的向磁盘的溢写。
优点:恢复速度快
缺点:因为是时间间隔的,所以会有数据丢失
六、SecondaryNameNode(仅在非HA的模式下会有,在HDFS2.0之后有HA)
使用的日志文件+镜像的组合
1、周期性的将对NN的EditLog和FsImage合并,减少EditLog的大小,减少NN启动时间。
2、根据配置文件设置时间间隔fs.checkpoint.period,默认3600秒
3、根据配置文件设置edits log大小fs.checkpoint.size规定edits文件的最大值默认为64MB
七、Block的副本放置策略。
1、第一个副本:放置在上传文件的NN;如果是集群外提交,则随机挑选一台磁盘不太满,CPU不太忙的节点。
2、第二个副本:放置在与第一个副本不同的机架的节点上。
3、第三个副本:放置在与第二个副本相同机架的不同节点上。
4、更多副本:随机节点
最后
以上就是俊逸小鸭子为你收集整理的关于HDFS(一)的全部内容,希望文章能够帮你解决关于HDFS(一)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复