大数据分布式存储原理

大数据基础
1.什么是大数据
短时间内快速的产生海量的多种多样的有价值的数据
2.大数据技术
2.1 分布式存储
2.2 分布式计算
① 分布式批处理(无法实现预测)
存一段时间的数据,等到将来某一时刻时再进行处理
② 分布式流处理(实时处理)(无法实现预测)
数据不需要攒,直接处理,每产生一条数据,立马对这条数据进行处理。
2.3 机器学习
可以实现预测
3.分布式存储原理
3.1主要概念:元数据:描述数据的数据
NameNode:管理元数据
datanode:负责存储源数据
block:存储单元 一个存储单元的数据,不能拆分成两部分来存储
备份:解决数据安全
3.2上传文件步骤:①如果要上传一个大文件,计算大文件的block数量,大文件大小/128M=block数
②客户端向namenode汇报 当前大文件的block数
当前大文件属主 (权限)
上传时间
for(Block block:blocks(大文件计算出来的block)){
③客户端切割出来的一个block
④客户端向namenode请求block块的id号以及地址
⑤因为namenode能够掌握全局,管理所有的DataNode,所以他会将负载不高的DataNode地址返回给客户端
⑥客户端拿到地址后,找到DataNode去上传数据
写数据的详细流程:在DataNode之间建立一个管道
将一个block切割成一个个packet(64k),然后源源不断的往管道中输送
这样做的目的是并行存储
⑦DataNode将block存储完毕后,会向namenode汇报当前的存储情况
}
3.3namenode的作用:掌控全局,管理DataNode以及元数据
元数据存储在内存中(因为内存不稳定,需要将元数据持久化到磁盘上)
元数据包括:文件owership,permissions
文件大小
上传时间
block列表:blockId
block以及副本的位置(由DataNode汇报)
接受客户端的读写服务
接受客户端的读请求,返回地址
3.4DataNode的作用:存储block块,向namenode汇报并发送心跳
接受客户端的读请求
3.5备份机制 (默认有两个备份)
机架:用来放值服务器的,一般一个机架有10台服务器
①第一个block存储在负载不是很高的一台服务器上(集群外提交)
第一个block存储在当前的节点(集群内提交)
②第一个备份的block存储在与第一个block不同的机架的随机一台服务器上
③第二个备份的block存储在与第一个备份相同的机架不同的服务器上
3.6读数据的详细流程
当客户端获得了DataNode的地址时,直接去DataNode读取数据,DataNode之间不会建立管道
3.7持久化的详细流程
因为持久化的过程比较复杂,所以把这个过程交给namenode的代理secondary namenode来执行
角色在集群中都是用进程来表现的
合并触发机制:时间超过3600或者edits文件的大小超过64M
edits文件存放的是:会改变元数据的操作
fsimage文件存放的是:元数据
当集群启动时,namenode会创建两个文件edits和fsimage,当满足合并触发机制时,secondary namenode 会将这两个文件
拉过来,然后对edits文件中的操作进行重演,将生成的元数据与fsimage文件中的合并,生成一个新的文件fsimage.ckpt
返回给namenode。在secondary namenode将两个文件拉过去时,为了防止在合并的过程中,由于又有新的操作改变元数据,
导致元数据丢失,会创建一个新的文件edits.new来存放新的操作
并不是所有的元数据都会持久化。除了block的位置信息,其他的元数据都会持久化。原因:block位置信息经常改变
但这样的话,当HDFS集群重启时,namenode中的元数据就会有所丢失,导致集群无法对外提供服务。解决办法:HDFS集群
启动之时,所有的DataNode都会向namenode汇报当前节点的block信息
4.权限:依据Linux系统的用户系统 是用来防止好人做坏事(防君子,不防小人),你告诉他你是谁,他就会认为你是谁
5.安全模式:①加载fsimage,加载到内存中
②如果edits文件不为空,那么namenode自己来合并
③检查DataNode的健康情况
④如果有DataNode挂掉了。指挥做备份
处于安全模式的过程中,能不能读文件内容?
如果fsimage已经加载到内存中,可以查看到文件目录,但是无法读取
6.HDFS集群不允许修改、文件一旦上传成功不能修改block块的大小。因为一旦修改,那么这个block块以后的block都会修改,这样
就造成了集群泛洪。

你可能感兴趣的:(分布式存储原理)