存储模型:字节
- 文件依照字节切割成块(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反对一主多备