hadoop-HDFS运行原理


1.外部是怎么跟namenode、datanode联系?

    有外部要求读取数据的时候,外部会让一个客户端client,来执行这个命令,这个客户端不会直接去跟namenode、datanode直接操作,是用调用了对象的一个类,跟namenode联系的时候是通过这个Distributed FileSystem这个对象,客户端的执行命令是读取,那就是调取这个对象的open方法,然后这个对象对namenode创建一个PRC调用,跟namenode联系。

2.namenode在这里的作用是?

     它在这里就是当对象调用了PRC远程过程调用,接受到打开的文件名,它第一检查了这文件名HDFS里面有没有,第二检验这个客户端过来访问合不合法,第三前两项都通过就找到文件存放datanode的地址,根据跟这个客户端的距离远近datanode三个复本进行排序,后发给客户端。第四个,当read到坏的datanode时候,namenode会记录那些坏的datanode

3.读到损坏的datanode怎么办?

    第一,报告namenode这个坏的datanode位置。第二,根据之前datanode的排序找下一个复本的datanode的位置



4.namenode做了哪些检查?

    第一,文件名是否跟原来的重复。第二,验证客户端有没有哪个权限。第三,在前面两点都通过的时候,建立一个文件,顺便记录起来

5.data queue(数据列队)?

     就是数据在写入的时候会被分成一个个的数据包,并写入内部队列,也叫数据队列。DataStreamer处理数据队列,它的责任是挑选合适存储复本的一组datanode,并据此来要求namenode分配新的数据块。

6.三个datanode之间是什么?

      是管线,第一个接收到数据后写完就传给第二个写入数据,第二个写完就传入第三个写入数据

7.数据写入过程中发生故障怎么办?

       第一,关闭管线,确认把列队中的所有数据包都添加回数据列队的最前端。 第二,找另外一个datanode代替损坏的。 第三,新的datanode指定一个新的标识,然后把标识发给namenode记录起来。 第四,原本坏的数据块删掉存储的部分数据。第五,管线中删掉故障的datanode。

8.复本怎么放?

   一般第一个是放在客户端同一个机架上,第二第三个放在另外一个机架上

9.什么是缓存刷新?

    当我们写入数据的时候,系统不会实时的显示出来,我们就要用这个hflush(),hsync()函数来刷新,第一个函数是刷新到内存里面去,第二个是刷新到硬盘去。一般刷新到硬盘里面就算突然掉电,数据也比较安全,所以我们在程序中都是用第二个刷新函数,然后设置一个刷新频率给它。

10.distcp有什么作用?

      cp是复制,distcp是并行复制,可以将一整个文件夹或者目录都复制过去,它作为一个MapReduce作业来实现的,默认情况下是20个map





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值