大数据学习日记Day01
大数据学习日记Day01
分布式存储
-
组成元素
Namenode:管理元数据。
SecondiryNamenode:帮助Namenode完成重演合并操作。
Datanode:储存源数据。 -
写流程
1.计算文件的block数量=文件大小/128MB。
2.客户端向namenode汇报(block数,权限,所属者,上传时间)。
3.客户端切割出一个block。
4.请求blockId以及存放地址。
5.namenode将负载不高的datanode地址返回给客户端。
6.客户端拿到地址后将数据上传到datanode。
7.datanode将数据储存完毕后向namenode汇报当前储存情况。
注:1,2步只会在客户端第一次上传数据时执行。 -
Namenode作用
管理datanode以及元数据。
将元数据存入内存。
接受客户端的读写操作。
收集datanode汇报的block列表信息。
Namenode保存metedata信息包括:文件owership和permissions,文件大小,时间,blockId,block副本位置。
接收客户端的读请求,返回地址。 -
Datanode作用
储存block块,向namenode发送心跳。
接收客户端的写请求。 -
备份机制:(默认备份数为2)
1.第一个block储存在负载不是很高的一台服务器上。
2.第一个备份保存在与第一个block不同机架随机一台服务器上。
3.第二个备份在与第一个备份相同的机架的不同服务器上。 -
客户端向datanode写数据的详细流程
客户端请求namenode后,namenode将会返回客户端一批datanode地址,这些datanode之间会形成一个pipeline管道,block被切割成很多packet(64kb)并发的储存
角色在集群中都是用进程来表现的,因为在node01服务器节点上启动了一个namenode进程所以node01被称为namenode,node01还可以启动别的进程。 -
元数据的持久化
当Namenode启动时,或者一个checkpoint被触发的时候,SecondiryNamenode会从内存中读取FsImage和Edits文件,执行所有的EditLog文件中的事务,执行后的事务会更新现有的FsImage。再把最新版本的FsImage标记为当前的这个FsImage,同时保存到磁盘上,如果Edits文件大小超过64MB或者距离上次合并超过3600s,将会触发合并,如果在SecondiryNamenode合并时Edits文件达到触发条件,会排队执行。 -
安全模式
1.当HDFS启动时处于安全模式,首先会加载fsimage加载到内存中,此时可以查看文件目录,不能读取数据。
2.然后如果edits文件不为空,那么namenode会自己进行合并,namenode只进行一次合并(启动时)之后由secondirynamenode合并。
3.检查datanode的健康情况。(datanode会向namenode汇报心跳,如果同一个block数量少于3个认为有datanode死亡,则指挥做数据的备份) -
搭建集群
伪分布式:在一台服务器上启动多个进程,分别表示各个角色。
完全分布式:在多台服务器上,每台服务器启动不同角色的进程,使用多台服务器组成HDFS集群。(注意:block副本数+自己本身<=datanode节点数)
高可用的完全分布式:在随机node上运行另一个namenode进程。 -
注意
储存单元:一个储存数据的单元,不可拆分。
备份:解决数据安全问题。
HDFS集群不允许修改,文件一旦上传成功不能修改block大小,禁掉的功能就是为了防止集群泛洪。 -
图示
未完待续…