首页 > 试题广场 >

假设有Hadoop系统中有DataNode节点1、2、3,且

[单选题]
假设有Hadoop系统中有DataNode节点1、2、3,且DataNode节点1、2、3上有Block1,Client请求上传文件file1至Hadoop系统,下面描述该Hadoop系统写流程错误的是()
  • Client第一次请求NameNode上传文件file1
  • 当NameNode返回可以上传后,Client第二个请求会请求file1上传到哪个DataNode节点上
  • 当Client第三次请求时,DataNode数据管道搭建完毕后,会由NameNode应答Client
  • 当Client第三次请求时,DataNode数据管道搭建完毕后,会由多个DataNode节点等依次逐级应答Client
hdfs上传文件(hdfs -put );
    1、client向namenode发起上传文件请求
    2、namenode对发送的请求进行检查
        1.文件是否存在
        2.用户是否有创建文件的权限
        3.父目录是否存在
        之后向client返回检查成功的消息
    3、client真正提交上传文件请求
    4、namenode计算文件的切块个数,然后返回给客户端数据块ID和存储的节点信息
        节点的选择规则:
        1.距离近的优先选择
        2.同节点->同机架->同机房
    5、client准备文件上传,    首先对文件进行逻辑切块
    6、真正开始上传文件
        1.准备发送第一个数据块
        2.构建数据块上传的通道,同时开启守护线程,等待pipeline构建完成响应
        3.pipeline构建完成,开始上传数据块,上传的时候边上传边划分,以packet(64k)为单位上传,因为写数据比较慢,客户端会将数据先放在数据队列中
        4.client将数据块以packet为单位按照pipeline构建的顺序传递,节点之间传送中是边向磁盘写入,边向下一个副本节点发送数据
        5.重复1-4步,让所有的数据块都传输成功
    7、整个文件上传成功,向客户端反馈,同时修改namenode元数据信息
文件上传过程中可能遇到的问题:
    1、数据传输过程中或构建pipeline过程中,发现有一个namenode宕机,则立即重启,如果重启之后通信仍然存在问题,则将这有问题的DataNode剔除掉pipeline,重新构建pipeline
    2、上传过程中,只需要保证一个副本成功即可,失败的副本重新向namenode申请节点,namenode重新分配节点,datanode间异步复制
    3、在数据块分配节点时,为了减少传输失败的问题,将第一个副本放在客户端所在的节点,至少保证一个副本上传成功
发表于 2024-04-28 15:28:16 回复(0)