美文网首页
Hadoop面试问题和回答4

Hadoop面试问题和回答4

作者: 小小少年Boy | 来源:发表于2018-08-06 17:18 被阅读0次

    1 HDFS数据块复制时的目的节点的选择原则?

    1 和客户端在同一节点或者同一个机架
    2 选择其他机架
    3 和第二个一样的机架但是不用的节点上

    2 HDFS删除一个文件的过程源码?

    1 客户端通过RPC,执行ClientProtocol.delete()发送删除请求

    2 Namenode获得删除数据块的信息,执行底层的方法,删除所有数据块和对应的租约信息(先删除数据库信息和meta信息,删除之后执行数据节点中的数据块删除)

    注意:
    HDFS中的数据删除并不是直接删除,而是先放到类似于回收站的地方(trash),可供恢复。
    当达到生命期限后(6小时),将彻底删除,并由Namenode修改相关的元数据信息
    可以清空trash:bin/hadoop dfs expunge

    3 删除一个数据块的原因?

    数据块损坏、多余数据块、无效数据块等
    Datanode会异步单独开启线程删除磁盘数据

    4 NameNode的租约管理器?

    租约是名字节点给与租约持有者(Client)的,在一定时间内的权限(写文件)。客户端需要不断的更新租约信息。

    每一个打开的文件在租约管理器中都会有一条记录,所以已经打开的文件不能再被其他客户端打开,关闭文件时需要释放租约,每一条租约记录包括客户端信息,租约最新更新时间,打开的文件。

    租约管理器会定时检查租约,对于长时间没有进行租约更新的文件,名字节点会进行租约恢复(租约恢复时针对已经打开的文件),关闭文件。

    租约管理器中有两个租约过期时间:

    • 软超时时间(1分钟)
    • 硬超时时间(一小时),不可配置。

    在超过了硬超时时间后会触发,租约恢复。

    1)租约恢复过程:
    总:选择恢复主节点,修改恢复文件的租约信息,收集参与租约恢复数据块的信息,找到最优的一个数据块取其长度,申请新的数据块版本号,然后同步数据块的版本号和长度,上报结果给Namenode并进行数据块信息的更新。
    1)选择恢复主节点
    首先在正常工作的数据流管道成员中选择一个作为恢复的主节点,其他节点作为参与节点,并将这些信息加入到主数据节点描述符中,等待该数据节点的心跳上报;

    2)修改恢复文件的租约信息
    名字节点触发的租约恢复会修改恢复文件的租约信息,他们的租约持有者统一改为NN_Recovery ;

    3)租约恢复收集数据块信息
    主数据节点收到指令后开始租约恢复,首先联系各个参与节点,开始租约恢复收集数据块信息.

    4)找最小值数据块为恢复后的长度
    根据收集到的数据块信息,找到最小值的教据块作为数据块恢复后的长度。

    5)申请新数据块版本号
    主数据节点向名字节点重新申请数据块版本号

    6)同步长度和版本号
    将长度和版本号同步到各个节点,同步结束后这些数据块拥有相同的大小和新的版本号。更新主要是利用DataNode上的FSDataSet.updata()方法进行更新

    7)将恢复的结果上报给namenode.

    8)Namenode更新块映射信息等
    名字节点更新blockMap以及DataNodedescriptor中的信息等

    2)租约检测
    第1步,获取最老的已过期的租约。
    第2步,得到此租约中保存的文件Id。
    第3步,关闭这些文件Id对应的文件,并将这些文件Id从此租约中移除。
    第4步,如果此租约中已经没有打开的文件Id,则将此租约从系统中进行移除。

    5 在向HDFS中写数据的时候,当写入某个副本的时候出错怎么处理?

    1、使用数据队列和确认队列来保证,无论那个节点故障了,都不会发生数据的丢失

    2、使用租约恢复:

    正常的数据节点辉被赋予一个新的版本号(租约信息中的时间戳版本),当故障恢复后发现版本信息不对,故障节点就会本删除

    在当前正常的数据节点根据租约信息找到一个主DataNode,并与其他节点通信,选择虽小的数据块大小的DataNode,与其他节点进行同步,之后重新建立管道

    3、NameNode的副本机制,在管线中删除故障节点,带文件关闭后,namenode发现副本不会,自然会进行复制副本。

    相关文章

      网友评论

          本文标题:Hadoop面试问题和回答4

          本文链接:https://www.haomeiwen.com/subject/ffjgvftx.html