存储模型:字节
- 文件依照字节切割成块(block)默认 128MB,最小 1M(可批改),每个 block 块有偏移量 offset,block 块扩散存储在集群结点中。 横向扩大
- 同一文件的 block 块大小雷同,不同文件的 block 块大小能够不同。
-
block 块能够设置正本,默认三个正本(可批改)。 纵向扩大
-
正本搁置策略:
- 第一个正本:放在上传文件的 DataNode
- 第二个正本:放在与第一个正本不同的机架的节点上
- 第三个正本:放在与第二个正本雷同机架的其余节点上
- 更多正本:随机节点
-
- 只反对一次写入屡次读取,不可批改块内容,
- 能够 append 追加数据,同一时刻只有一个写入者
架构模型 1.x:主从
NameNode(主结点):
- 管理文件的元数据信息(MetaData):block 块大小,offset 偏移量等等
- 接管客户端的读写服务
- 基于内存存储(不会和磁盘产生替换)
- 收级 DataNode 汇报的 block 列表
DataNode(从结点):
- 负责保护治理放在本节点的 block 块的元数据信息(MD5:保障数据完整性)
- 与 NameNode 放弃心跳,并向 NameNode 汇报 block 块信息
NameNode 长久化:
- fsimage(时点备份):metadata 存储到磁盘文件的名字
- EditsLog:记录对 metedata 的操作
- fsimage 和 editsLog 在达到肯定条件(check point)会进行合并,造成一个新的 fsimage
SecondaryNameNode(SNN)
- 它不是 NameNode 的备份(然而能够做备份)它的次要工作是帮忙 NN 合并 editsLog 和 fsimage
- SNN 合并流程
HDFS 长处:
-
高容错性
- 数据主动保留多个正本
- 正本失落后主动复原(从良好节点上拷贝)
-
适宜批处理
- 计算向数据挪动
- 数据地位(offset)裸露给计算框架
-
适宜大数据处理
- GB、TB、PB、百万规模文件
- 可构建在便宜机器上
HDFS 写流程:
HDFS 读流程:
Hadoop2.x
产生背景
- Hadoop1.x 中 HDFS 和 MapReduce 存在高可用、扩展性的问题
-
HDFS 问题
- NameNode 单点故障。通过主备 NameNode 解决(HA)
- NameNode 压力过大,联邦 Federation
架构模型 2.x
-
Hadoop 2.x 由 HDFS,MapReduce 和 Yarn 三个分支组成
- HDFS 2.x: 只反对 2 个节点 HA,3.x 反对一主多备