NameNode

可以理解为主从模式:

  1. NameNode 是主节点 [Master]
    SecondaryNameNode[Master]
  2. DataNode 是从节点 [Worker]

Hdfs 1.0 回顾

1.NameNode 两种元数据映射:
1.文件名—->block数据映射
2.block 数据块 —> datanode 节点地址的映射

细节:
1.是持久化到NN的磁盘上的
(fsimage<—edits log<—NN的内存变化来的)
2.是通过心跳来组织起来的(DN—>NN)

注意:如果设置的副本数量小于DataNode的节点个数,其实是不会超过DataNode 的个数的。比如副本个数设3,DataNode只有两个,副本只会有两个。

2.就目前我们的环境(1个master,2个slaves):虽然默认3个副本,期实是两个。
3.NN倾向存储大数据:太小的话,block多,内存放不下,太大的话,MR作务执行慢。
4.如果没有SNN,fsimage多久加载一次,只有重启时加载,如果有了SNN呢?SNN存在的意义?备份,数据恢复editlog 什么时候会合并到 fsimage中?(重启、定期)
5.为什么在1.0只能有一个NN? (在zookeepeer 之前)
6. 数据完整性校验的目的:检测数据是否损坏
用什么校验方法? (crc32算法产生的校验合和)存在几种校验逻辑(1.client写校验和,DN校验, 2.DabablockScanner 后来进程)

7.HDFS 可靠性保证有哪些

  1. 心跳:DN-->NN
  2. 块报告:检查数据有没有发生异常,存储情况
  3. 数据块完整性
  4. 空间回收
  5. 副本---数据冗余
  6. SNN
  7. 快照
  8. 同步和异步的区别?
    以nameNode 写和为例:
  • 同步写:一个 client 操作 节点写完即可,剩余节点一个一个写完 。
  • 异步写:写完一个节点后,期余节点同步即可。
  1. 计算框架和任务调度管理部署同一台机器的好处?本地化,尽量减少数据移动的开销。