HDFS组织架构


1. Client:客户端

  • 切分文件。文件上传HDFS时,客户端将文件切分成一个一个的block,然后进行存储
  • 与NameNode交互,获取文件的位置信息
  • 与DataNode交互,读取或写入数据
  • 提供命令管理HDFS:启动关闭访问

2. NameNode:主节点

  • 存储元数据信息,不存储具体数据
  • 管理Block的映射信息
  • 配置副本策略
  • 处理客户端读写请求

2.1 如何保证NameNode的数据存储安全

NameNode HA:一个NameNode有单点故障问题,配置双NameNode

  1. 必须保证两个NameNode的元数据信息是同步的
  2. 一个NameNode挂掉之后另一个要立马补上
  1. 元数据信息同步在HA方案中采用的是“共享存储”。每次写文件时,需要将日志同步写入共享存储,这个步骤成功才能认定写文件成功。然后备份节点定期从共享存储同步日志,以便进行主备切换。
  2. 监控NameNode状态采用Zookeeper,两个NameNode节点的状态存放在Zookeeper中,另外两个NameNode节点分别有一个进程监控程序,实时读取Zookeeper中NameNode的状态,判断当前NameNode是不是已经挂掉,如果standby的NameNode节点发现主节点已经挂掉,那么就会强制给原来activate NameNode节点发送强制关闭请求,之后备用的NameNode设置为activate。

脑裂现象,节点发生“假死”现象,导致两个NameNode都处于active状态,都可以对外提供服务。

2.2 NameNode在启动时会做哪些操作

NameNode数据存储在内存和本地磁盘,本地磁盘数据存储在fsimage镜像文件和edits编辑日志文件

1)Fsimage文件:HDFS文件系统元数据的一个“永久性检查点”其中包含HDFS文件系统的所有目录和文件的inode的序列化信息。
2)Edits文件:edits 文件中存储的是文件系统元数据改变的信息

首次启动

  1. 格式化文件系统,为了生成fsimage镜像文件
  2. 启动NameNode:
      - 读取fsimage文件,将文件内容加载到内存
      - 等待DataNode注册与发送block信息
  3. 启动DataNode:
      - 向NameNode注册
      - 发送block信息
      - 检查fsimage中记录的块数量与DataNode的块数量是否相同
  4. 对文件系统进行操作
      - 此时内存中已经有文件系统的改变信息,但磁盘中没有文件的改变信息,此时会将这些改变写入edits文件中

第二次启动

  1. 读取fsimage和edits文件
  2. 将fsimage和edits文件合并新的fsimage文件
  3. 创建新的edits文件
  4. 启动Datanode

3. DataNode:从节点

  • NameNode下达命令,DataNode执行实际操作
  • 存储实际数据块
  • 执行数据块的读写操作

4. Secondary NameNode

  • 辅助NameNode,分担其工作量
  • 定期合并Fsimage和Edits,并推送给NameNode
  • 在紧急情况下,可辅助恢复NameNode

如果NameNode元数据丢失,是可以从Secondary NameNode恢复一部分元数据信息,但不是全部,因为NameNode正在写的edit日志还没有拷贝到Secondary NameNode。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值