了解HDFS的关键点

原则

  • CAP
  • 技术背景,要解决的问题
  • 优势和劣势
  • 适用场景
  • 核心思想,关键点(副本恢复及其带宽问题/数据分布均衡/负载均衡/集群伸缩/通信)
  • 底层原理
  • 已有实现及其对比

HDFS

行动

技术背景,目标
  1. 高可用,面向硬件故障设计的HDFS,故障检测,快速和自动恢复是HDFS最主要的设计目标。
  2. 高吞吐,可适当牺牲延时。主要场景是数据批处理,非交互式。
  3. 大规模集群,数据量巨大,不仅单个集群的文件数量很多,而且单个文件巨大(>1TB)
适用场景
  1. 商用机器,低配置机器
  2. 大规模集群
  3. 数据批处理,写少读多
优势和劣势
  • 劣势:namenode单点,不支持多用户写,不适合低时延场景
  • 优势:面向故障设计,大规模集群
核心思想
  1. 架构:主从架构,
  • 主节点:namenode 负责命名空间和元数据管理,控制从节点
  • 从节点:datanode 存储真实文件和处理客户端读写请求,执行namenode的创建/删除/复制指令
  1. 数据复制
  • 心跳heartbeat:datanode定期发送心跳给namenode,代表自己正常工作
  • 块报告blockreport:datanode发送自己的块列表

a. replica placement:三副本为例,一副本在rack1,两副本在rack2,可以提高写性能而且不会影响数据可靠性。

b. replica selection:就近读取,同地域优先,好处是降低带宽。

  1. 元数据持久化
  • Editlog:事务日志,记录变更
  • FSImage:元数据,包括ns和blockmap
  1. 高可用
  • 数据失败,network partition:心跳检测,故障时进行重新复制
  • 集群伸缩:副本移动,未做完
  • 元数据故障:editLog和FSImage多副本
  • 数据完整性:客户端分块校验
底层原理
  1. 通信协议
  • rpc:客户端协议和dataNode协议,客户端和dataNode是rpc请求发起者,nameNode是rpc请求响应者
  1. 数据组织
  • 分块存储,不同块可以在不同节点上,突破单个节点的存储限制
  • staging/buffer:客户端暂存部分文件,达到一定大小后才和namenode通信。客户端buffer,增加吞吐量。
  • 复制流水线:客户端 -> dataNode1 -> dataNode2 -> dataNode3 块粒度复制
已有实现和对比
  • GFS,是HDFS的增强版,允许多个客户端append文件
  • TFS,是blob FS,适合小文件存储;元数据巨大,一般存储不了,内存仅存储id,真实元数据映射到外部数据库。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值