HDFS

优缺点

优点:

  • 高容错性:数据自动保存多个副本;副本丢失后,自动恢复
  • 适合批处理:移动计算而数据;数据位置暴露给计算框架
  • 适合大数据处理:GB、TB、PB级数据;百万规模以上的文件数量;10K+节点
  • 可构建在廉价机器上:通过多副本提高可靠性;提供了容错和恢复机制

缺点:

  • 不适合低延迟数据访问(订单):毫秒级;低延迟与高吞吐率
  • 不适合小文件存取:占用NameNode大量内存;寻道时间超过读取时间
  • 并发写入、文件随机修改:一个文件只能有一个写者;仅支持append

HDFS架构图

clipboard.png

HDFS数据存储单元(block)

  • 文件被切分成固定大小的数据块:默认数据块大小为64MB,可配置;若文件大小不到64MB,则单独存成一个block
  • 一个文件存储方式:按大小被切分成若干个block,存储到不同节点上;默认情况下每个block都有三个副本
  • block大小和副本通过client端上传文件时设置,文件上传成功后副本数可以变更,block size不可变更

NameNode(NN)

  • 主要功能:接受客户端的读写服务
  • 保存元数据信息包括:文件overship和permission;文件包含哪儿些块;block保存在哪儿个DN(由DN启动时上报)
  • 元数据信息在NN启动后加载到内存:元数据存储到硬盘的文件名为fsimage;block的位置信息不会保存到fsimage;edit记录对元数据的操作日志

SecondaryNameNode(SNN)

  • 不是NN的备份(但可以做备份),它的主要工作是帮助NN合并edits log,减少NN启动时间
  • SNN执行合并时机:根据配置文件设置的时间间隔fs.checkpoint.period(默认3600秒);根据配置文件设置edits log大小fs.checkpoint.size规定edits文件的最大(默认64MB)

Data Node

  • 存储数据(Block)
  • 启动DN线程时会向NN汇报Block信息
  • 通过向NN发送心跳保持与其联系(3秒),如果NN10分钟没有收到DN心跳,则认为其已经lost,并copy其上的block到其他DN

Block的副本放置策略

  • 第一个副本:放置在上传文件的DN;如果是集群外提交,则随机挑选一台磁盘不太满,CPU不太忙的节点
  • 第二个副本:放置在于第一个副本不同的机架的节点上
  • 第三个副本:与第二个副本相同机架的节点
  • 更多副本:随机节点

运行机制:

  • 一个名字节点和多个数据节点
  • 数据复制
  • 故障检测
  • 空间回收机制

HDFS读流程

clipboard (1).png

HDFS写流程

clipboard (2).png

安全模式

  1. NN启动的时候,首先将映像文件(fsimage)载入内存,并执行编辑日志(edits)中的各项操作
  2. 一旦在内存中成功建立文件系统元数据的映射,则创建一个新的fsimage文件(这个操作不需要SNN)和一个空的编辑日志
  3. 此刻NN运行在安全模式。即NN的文件系统对于客户端来说是只读的。
  4. 在此阶段NN收集各个DN的报告,当数据块达到最小副本数以上时,会被认为是安全的,在一定比例的数据块确定为安全后,再过若干时间,安全模式结束
  5. 当检测到副本数不足的数据块,该块会被复制直到达到最小副本数,系统中数据块的位置并不是由NN维护的,而是以块列表形式存储在DN中

你可能感兴趣的:(HDFS)