大数据学习之路(二)HDFS1.0

                                                                               HDFS1.0

HDFS组成

  • NameNode(master)                       NN
  • SecondaryNameNode(master)                            SNN
  • DataNode(slave)                             DN

NameNode :主节点,因为在HDFS1.0中只有一个,因此有单点故障的风险,其中存储一些元数据,有两种映射关系

(1)已知路径(HDFS上)——>blockid list列表

(2)blockid 数据块——>DataNode节点地址

       元数据:存储在内存中。元数据的持久化(fsimage),目的:为了避免数据丢失

       fsimage:元数据的镜像文件,机器重启的时候加载fsimage

       元数据持久化过程(SNN):内存 -> edit logs(磁盘上) -> fsimage

SecondaryNameNode:并不是NameNode的备份,其存在的意义在于数据的备份以及恢复

Namenode 和 edit logs关系:Namenode需要把每一次改动都存在edit log中
       整个过程谁来主动推进的?(Datanode与Namenode之间的心跳机制)

除了单点问题之外,还有那些问题:
         不适合存储太多小文件,导致block太多,内存可能放不下         

 DataNode(从节点,slave,多个机器)
        (1)block数据块 -> 真实数据
            心跳机制
            副本机制,默认3个副本,作用:数据冗余做到数据高可用的目的,利用空间换取高可用
            本地化原则(就近原则),MapReduce:主Jobtracker(Namenode) 从tasktracker(DataNode)

可靠性保证:

(1)数据检验:md5,crc32

     在整个过程中数据需要校验几次

       1)client给DataNode写数据时候:要针对所写的数据,每个检查单位(512字节),
                        创建一个单独校验码(crc32),将数据和校验码一起发送给DataNode

       2)DataNode接收数据的时候:用同样加密算法生成校验码,并校验
        
            在后台有一个扫描进程:DataBlockScanner:
            一旦检测出问题的block,通过心跳,通知NN,于是NN让DN进行修复(拷贝一个无问题的备份)

(2)可靠性保证
            1)心跳机制
            2)多副本机制
            3)crc32数据校验
            4)SNN:保证元数据避免丢失
            5)回收站(.Trash目录)
            6)报告
                        ]# hdfs fsck /passwd -files -blocks -locations
            7)快照:备份,有助于快速还原

     3)回收站

          -Trash目录

           
HDFS特点:write-once read-many
        不适合随机读,原因:无法被系统做大寻址方面优化(预读)
                
同步与异步
            同步:速度慢,但能保证全局数据一致性
            异步:无法保证全局数据一致性,但是速度快

数据本地化:
        Namenode和Jobtracker是可以部署不同机器(可以拆开)
       通过yarn,会将jobtracker拆为ResourceManage 和 ApplicationManager

而RM就是取代了Jobtracker中的资源调度的功能,降低负重
        
解决单点问题的方法   将Hadoop元数据写入到本地文件系统的同时 同步到一个远程挂载的网络文件系统(NFS)

                                   运行一个secondary NameNode,它的作用是与NameNode进行交 互,定期通过编辑日志文件合并命名空间镜像,当NameNode发生故 障时它会通过自己合并的命名空间镜像副本来恢复。需要注意的是 secondaryNameNode保存的状态总是滞后于NameNode,所以这 种方式难免会导致丢失部分数据

机架感知策略

• 第一个副本,在客户端相同的节点(如果客户端是集群外的一台机器,就随机算节 点,但是系统会避免挑选太满或者太忙的节点)

• 第二个副本,放在不同机架(随机选择)的节点

• 第三个副本,放在与第二个副本同机架但是不同节点上。

HDFS写流程

           

HDFS读流程

HDFS API

猜你喜欢

转载自blog.csdn.net/huaicainiao/article/details/89788606
今日推荐