初学大数据之HDFS

HDFS是分布式存储实现的一种方式,或者一种软件。HDFS有NameNode节点,SecondaryNameNode节点,DataNode节点,client客户端,各个节点都是一个服务器。HDFS的工作流程:client:将要上传到服务器的各个节点的数据进行切割计算,切割的单位是block块,blocks=文件大小/128M(默认block大小:128M)。
   

      切割完成后向NameNode节点汇报,传给NameNode节点blocks,文件的属性,上传时间,NameNode节点收到client的汇报请求后会创建一个edits文件,将元数据保存在其中,返回dataNode中负载不高的block块的地址给client,client拿到地址后将切割好的block块数据再次切割成64k大小的packet传入到dataNode形成的管道(pipeline)中,管道中的dataNode在packet流过时进行存储,并行操作,效率高。DataNode存储完毕后向NameNode汇报当前的存储情况。
     HDFS的备份机制:
     1、第一个Block存储在负载不是很高的一台服务器上
    2、第一个备份的block存储在与第一个block不同机架的随机一个服务器上
    3、第2个备份的block存储在与第一个备份相同的机架的随机服务器上
    4、其他备份随机存


     NameNode的工作流程:系统启动时会创建edits文件和fsimage文件,加载fsimage文件中的数据到内存,如果edits有数据则进行合并操作。


     持久化操作:因为内存不稳定,可以将元数据持久化到磁盘上,持久化需要一个助理节点(SecondaryNameNode),在nameNode中,当client请求时,封装client元素据到edits中,当edits满64M或距离上次持久化时间超高3600s时,SecondaryNameNode会将nameNode中的edits文件和fsImage文件拿走进行重演合并持久化到磁盘,在此期间若有新的client请求,nameNode会创建新的edits-new文件封装元数据,当SecondaryNameNode完成持久化后将fsImage文件返回给nameNode,以此类推。


    并不是所有的元数据都会持久化:除了block的位置信息,其他的元数据都互持久化(变动频率高变动大)
        HDFS的安全模式:
        即HDFS启动时到工作的模式,类似于windows的开启,在安全模式期间进行一些配置的初始化。
        安全模式主要有以下几点:
            1、加载fsimage的数据到内存
            2、如果edits有数据则进行合并操作。
            3、检查DataNode的健康情况,是否有DataNode挂了,因为DataNode每隔3s会向NameNode汇报当前的状态
            4、如果有DataNode挂了,指挥系统作备份
        处于安全模式的过程中是client无法读取文件内容的,如果fsimage已经加载到内存中,可以看到目录,但不能读取
     

你可能感兴趣的:(初学大数据之HDFS)