面试题
HDFS的优缺点
优点:
- 高容错性(硬件故障是常态):数据自动保存多个副本,副本丢失后,会自动恢复
- 适合大数据集:GB、TB、甚至PB级数据、千万规模以上的文件数量,1000以上节点规模。
- 数据访问: 一次性写入,多次读取;保证数据一致性,安全性
- 构建成本低:可以构建在廉价机器上。
- 多种软硬件平台中的可移植性
- 高效性:Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度非常快。
- 高可靠性:Hadoop的存储和处理数据的能力值得人们信赖.
缺点:
- 不适合做低延迟数据访问:
HDFS的设计目标有一点是:处理大型数据集,高吞吐率。这一点势必要以高延迟为代价的。因此HDFS不适合处
理用户要求的毫秒级的低延迟应用请求 - 不适合小文件存取:
一个是大量小文件需要消耗大量的寻址时间,违反了HDFS的尽可能减少寻址时间比例的设计目标。第二个是内
存有限,一个block元数据大内存消耗大约为150个字节,存储一亿个block和存储一亿个小文件都会消耗20G内存。
因此相对来说,大文件更省内存。 - 不适合并发写入,文件随机修改:
HDFS上的文件只能拥有一个写者,仅仅支持append操作。不支持多用户对同一个文件的写操作,以及在文件任
意位置进行修改
HDFS的体系 结构
NameNode
- namenode进程只有一个(HA除外)
- 管理HDFS的命名空间,并以fsimage和edit进行持久化保存。
- 在内存中维护数据块的映射信息
- 实施副本冗余策略
- 处理客户端的访问请求
DataNode
- 存储真正的数据(块进行存储)
- 执行数据块的读写操作
- 心跳机制(3秒)
SecondaryNameNode
- 帮助NameNode合并fsimage和edits文件
- 不能实时同步,不能作为热备份节点
HDFS的Client接口
- HDFS实际上提供了各种语言操作HDFS的接口。
- 与NameNode进行交互,获取文件的存储位置(读/写两种操作)
- 与DataNode进行交互,写入数据,或者读取数据
- 上传时分块进行存储,读取时分片进行读取
HDFS的工作机制
系统离开安全模式,需要满足哪些条件?
当namenode收到来自datanode的状态报告后,namenode根据配置确定
- 可用的block占总数的比例
- 可用的数据节点数量符合要求之后,离开安全模式。
- 1、2两个条件满足后维持的时间达到配置的要求。
- 注意: 如果有必要,也可以通过命令强制离开安全模式。
SecondayNamenode的工作机制(检查点机制)
- SecondaryNamenode请求Namenode停止使用正在编辑的editlog文件,Namenode会创建新的editlog文件,同时
更新seed_txid文件。 - SecondaryNamenode通过HTTP协议获取Namenode上的fsimage和editlog文件。
- SecondaryNamenode将fsimage读进内存当中,并逐步分析editlog文件里的数据,进行合并操作,然后写入新
文件fsimage_x.ckpt文件中。 - SecondaryNamenode将新文件fsimage_x.ckpt通过HTTP协议发送回Namenode。
并操作,然后写入新
文件fsimage_x.ckpt文件中。 - SecondaryNamenode将新文件fsimage_x.ckpt通过HTTP协议发送回Namenode。
- Namenode再进行更名操作。