HDFS技术原理

什么是HDFS?

HDFS(Hadoop Distributed File System)基于Google发布的GFS论文设计开发,运行在通用硬件平台上的分布式文件系统。

hdfs的优点:

  1. 可构建在廉价机器上,成本低。
  2. 高容错性, 通过多副本提高可靠性,提供了容错和恢复机制。
  3. 适合离线批处理,不适合处理实时数据。
  4. 移动计算:数据在哪里,计算就到哪里,计算跟着数据跑。
  5. 适合海量数据处理,GB、TB、甚至 PB 级数据,百万规模以上的文件数量,10K+节点规模。
  6. 流式文件访问, 一次性写入,多次读取,保证数据一致性,hdfs不支持文件修改,但是支持文件追加。

hdfs的缺点:

  1. 不支持实时数据处理
  2. 不适合小文件的存储,原因:1)寻址时间过长,寻道时间超过读取时间   2) 占用 NameNode 大量内存,会造成namenode的压力过大。
  3. 不支持数据修改  一次写入多次读取

HDFS的设计思想

  • 分而治之——海量数据分块存储的思想

大文件被切割成小文件,使用分而治之的思想让很多服务器对同一个文件进行联合管理,如何分块?块太大容易出现负载不均衡,数据块太小造成namenode压力太大。HDFS在设计的时候默认一个块128m。

  • 冗余备份——每个数据块多个副本

每个小文件做冗余备份,并且分散存到不同的服务器,做到高可靠不丢失。

HDFS的系统架构

各自作用:

主节点NameNode的作用:

  1. 存储管理元数据信息,(元数据就是管理DataNode数据的数据,主要有三个方面:1抽象目录树,2数据和块的对应关系,3数据块的存储位置)
  2. 处理客户端读写请求,客户端的读写请求首先要访问namenode.
  3. 接受datanode的心跳报告
  4. 负载均衡
  5. 负责数据块的副本的存储节点的分配

从节点DataNode的作用:

  1. 真正进行数据块的存储
  2. 真正处理客户端的读写请求
  3. 向namenode发送心跳报告
  4. 进行副本的复制

助理SecondaryNameNode的作用:

  1. 帮助namenode备份元数据信息   namenode宕机后,可以进行数据恢复
  2. 帮助namenode做一些事情  (元数据合并)  减轻namenode的压力

客户端:

  1. 发送读写请求
  2. 对上传的文件进行逻辑切块和物理切块
  3. 向namenode反馈数据上传,下载的响应
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值