分布式存储

大数据学习日记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大小,禁掉的功能就是为了防止集群泛洪。

  • 图示分布式存储_第1张图片

未完待续…

你可能感兴趣的:(大数据,分布式存储,学习日记,大数据学习日记)