大数据初学习之分布式存储HDFS理论概述

什么是大数据?

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

大数据技术
分布式计算
机器学习
分布式的批处理
分布式的流处理
深度学习
多台服务器并行计算(分布式计算)

1、分布式的批处理
攒一段时间的数据,在未来的某一个时间来处理这批数据
2、分布式的流处理
数据不需要攒,每产生一条数据,立马对这条数据进行处理,将结果推送前端页面存储到数据库中形成报表给老板(看到的时候都是有误差的,报表才是精准值)

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

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

HDFS
client客户端

根据默认大小或者用户自定义的大小切分blovk 默认block大小:128M。 以字节的方式读,到128M了以后对namenode做汇报 整个文件大小/128M=block块

node01–Namenode

接收:大文件的block数以及blockId号 文件权限,上传时间
请求第一个block的存储地址(返回3个datanode地址【一个数据两个备份】)

datanode

对namenode做汇报:汇报当前节点的存储情况

写流程

1、如果要上传一个大文件,client切割大文件,计算大文件block数,大文件地址/128M=block数量
2、client对namenode汇报:
(1)当前大数据文件的block数
(2)当前大文件属于谁 权限
(3)上传时间
for(Block block:bocks(大文件切割出来的Block)){
3、client切割出来一个block
4、client请求block块的Id号以及地址
5、因为namenode能够掌控全局,管理所有的DN,所以它将负载不高的DN地址返回给client
6、client拿到地址后找到DN去上传数据
(详细介绍:NN返回给client一批地址以后,这些DN之间会形成一个pipelien管道
block切割形成一个packet(64K)之后以流形式源源不断的发送)
7、DN将block存储完毕之后会向NN汇报当前的存储情况
}
对写数据的图片描述

读流程

1、由于NameNode掌管着每个block块的位置信息,所以client向NameNode请求读取的时候可以拿到block的位置信息。
2、client拿着需要文件的block块的位置找datanode去读

读数据的流程图
在这里插入图片描述

备份机制

集群外提交:利用客户端去提交

1、第一个Block存储在负载不是很高的一台服务器上
2、第一个备份的block存储在与第一个block不同机架的随机一个服务器上
3、第2个备份的block存储在与第一个备份相同的机架的随机服务器上
4、其他备份随机存

集群内提交:datanode节点作为客户端进行提交(不提倡,有网络IO问题)

第一个Block存放在当前节点上,其它与集群外提交相同

为什么称称node01为namenode:

角色在集群中都是由进程来表现的(一个节点可以有多个角色(进程))
因为在node01节点上启动了一个namenode进程

持久化:因为内存不稳定,可以将数据持久化到磁盘上

namenode负载太高:集群不可用,所以将持久化的工作给SecondaryNamenode(namenode助理)做
在这里插入图片描述

持久化的详细过程

1、namenode启动的时候创建出来两个文件:edit(日志文件)和fsimage随着集群运行,将edit和fsimage拉到secondNamenode中,其将会根据edit里的操作进行重演(产生相同元数据)
2、重演之后将元数据写在fsimage中,产生fsimageckpt推给namnode
防止持久化的数据丢失:在重演过程中对edit文件的改变写到edit.new中

合并触发机制:
  • 超过3600毫秒
  • 如果edit文件超过64M
并不是所有的元数据都会持久化

除了block的位置信息,其他的元数据都会持久化(变动频率高变动大,ID号不统一。这样的话,当HDFS集群重启,namenode中的元数据就会有所缺失无法对外提供服务)
解决:HDFS启动的时候,所有的DN都会向NN汇报当前节点的block信息

datanode也叫层节点
rack:机架 一般来说每个机架有10台服务器

机架上的服务器节点也叫datanode

心跳信息:每一个datanode每隔3秒向namenode发送一些信息(Block的位置,DN地址)
		集群成功运行之后才会有心跳信息
权限:依据linux系统的用户系统默认权限(防止好人做坏事,不能防坏人做坏事)
安全模式:用一个命令启动HDFS集群,这个HDFS在一段时间是不可用的,这段时间叫做安全模式
1、加载fsimage,把数据加载到内存中
2、如果edits文件不为空,那么namenode自己来合并
namenode做不做合并?做,而且只做一次
3、检查Datenode的健康情况
4、如果有DN挂掉了,指挥做备份
处于安全模式的过程中能不能读文件内容?
如果fsimage已经加载到内存中,可以查看文件目录,但是无法读取
适合批处理:计算找数据(避免大量的磁盘IO)

搭建集群
角色–与进程对应

搭建集群的模式有三种:
1、伪分布式:在一台服务器上启动多个进程,分别表示各个角色
2、完全分布式:在多台服务器上,每台服务器启动不同角色的进程,使用多台服务器组成HDFS集群

node01:namenode
node02:secondarynamenode datanode
node03:datanode
node04:datanode
block的副本数加自己本身(默认三个)<=datanode节点数

3、高可用的完全分布式
node03也可作为namenode

这里对概述部分进行粗略整理

猜你喜欢

转载自blog.csdn.net/Andrea_null/article/details/82989693