分布式存储原理

 

 

 

介绍

 

Hadoop的历史

说道hadoop的历史,就要提到Google公布的GFS、MapReduce和BigTable三篇技术论文,它们被称为三驾马车。第一个提供全文文本搜索的开源函数库Lucene的创始人——Doug Cutting对其做了主要的开源实现。再后来,Apache基金会整合Doug Cutting和一众IT公司的贡献成果,开发并推出了Hadoop生态系统。

 

Hadoop的生态圈包括hdfs、mapreduce、yarn、common。

 

大数据

短时间内快速的产生海量的多种多样的有价值的数据

 

大数据技术

分布式存储

分布式计算(多台服务器并行计算)

1 分布式的批处理

攒一段时间的数据,在未来的某一个时间来处理这批数据

2 分布式的流处理

数据不需要攒,每产生一条数据,立马对这条数据进行处理,将结果推送前端页面存储到数据库中形成报表给老板

eg:11.11天猫大屏幕QQ实时在线分布情况

(看到的时候都是有误差的,报表才是精准值)

3 机器学习包含深度学习(神经网络)

机器学习是一门新兴技术,凡是预测类的工作需要用到机器学习

 

 

1

原理

分布式存储

关键词

NameNode、 SecondaryNameNode、DataNode、block(最小存储单元)

备份机制:解决数据安全

权限

安全模式

读写流程

 

搭建集群的三种模式

伪分布式

测试环境使用

 

完全分布式

完全分布式搭建教程

 

高可用完全分布式

高可用完全分布式搭建教程

安全模式

加载fsimage

如果edits内容不为空,则NameNode自己来合并

检查DataNode的健康情况

检查各个节点上的blcok块以及副本是否符合要求,如果不符合要求,指挥存储数据丢失的DN做备份。

如果DN挂掉,则指挥做备份

 

2

各个角色作用

 

NameNode

1.掌控全局,管理DataNode以及元数据

2.管理元数据(存储在内存中):

1)文件的上传时间文件的上传时间

2)权限

3)文件属主

4)上传文件的block数以及blockID

5)block的位置信息(由DataNode在集群启动时汇报,不会持久化)

6)DN的心跳信息

7)DN的位置信息

3.接受客户端的读写请求

4.收集DataNode汇报的block列表信息

5.NameNode保存的metedata信息包括:

– 文件owership和permissions

– 文件大小,时间

– (block列表:blockID)

– Block副本位置(由DataNode上报)

DataNode

存储block模块

接收客户端的读请求

向active NN汇报心跳

构建pipeline

管理本机上的block元数据

SecondaryNameNode

NameNode元数据位于内存中,但是内存不稳定,所以将数据持久化到磁盘


合并触发机制:

超过3600毫秒

如果edit文件超过64M

合并流程

 

基于拉来的edits文件重演出产出元数据

将重演出的元数据合并到fsimage中

将合并后的fsimage推送给NN

将edits.new文件的后缀去掉

注意:并不是所有的元数据都会持久化:

 

除了block的位置信息,其他的元数据都互持久化(变动频率高变动大)

这样的话,当HDFS集群重启,namenode中的元数据就会有所缺失无法对外提供服务

解决:HDFS启动的时候,所有的DN都会向NN汇报当前节点的block信息

 

zkfc

监控各自的NameNode,将监控的情况汇报给ZK集群

接受zookeeper的选举结果,确认一下另外一个NN是否真的挂了,将自己监控的NameNode提升为active状态


journalnode

写数据的时候只要保证半数以上的节点成功就可以了

最终一致性/弱一致性

存储的是edits文件

备用的NameNode

监控journalnode中的数据变化,实时更新自己的内存元数据

将内存中的元数据持久化到fsimage中,推送到NameNode中。

 

3

HDFS的读写流程

写的流程

如果要上传一个大文件,client切割大文件,计算大文件block数,大文件地址/128M=block数量

client对NameNode汇报:

(1)当前大数据文件的block数

(2)当前大文件属于谁权限

(3)上传时间

for(Block block:bocks(大文件切割出来的Block)){

client切割出来一个block

client请求block块的Id号以及地址

因为NameNode能够掌控全局,管理所有的DN,所以它将负载不高的DN地址返回给client

client拿到地址后找到DN去上传数据

DN将block存储完毕之后会向NameNode汇报当前的存储情况
}

client向DataNode写数据的详细流程

解释:NN返回给client一批地址以后,这些DN之间会形成一个pipelien管道
block切割形成一个packet(64K)之后以流形式源源不断的发送(类比生产流水线)

 

4

读的流程

备份机制

原理图

如果是集群外操作,第一个Block存储在负载不是很高的一台服务器上(默认128M dfs.blocksize,严格按照字节切割,如果存储的是中文,会出现乱码问题。);如果集群内操作,在本机

第一个备份的block存储在与第一个block不同机架的随机一个服务器上

第2个备份的block存储在与第一个备份相同的机架的随机服务器上

其他备份随机存

权限

依据系统的用户系统 ()

 

HDFS优缺点

优点

思维导图

 

 

 

 

 

 

更多信息关注我们微信公众号【CAT哥伦布BAAS】