Hadoop常见面试题总结

1.HDFS读写流程

1.1 读

在这里插入图片描述 (1)client跟namenode通信查询元数据,namenode通过查询元数据,找到文件块所在的datanode服务器
(2)挑选一台datanode(就近原则,然后随机)服务器,请求建立socket流
(3) datanode开始发送数据(从磁盘里面读取数据放入流,以packet为单位来做校验,大小为64k)
(4)客户端以packet为单位接收,现在本地缓存,然后写入目标文件

1.2 写

在这里插入图片描述 (1)客户端跟namenode通信请求上传文件,namenode检查目标文件是否已存在,父目录是否存在,用户是否有权限等(2)namenode返回是否可以上传
(3) client请求第一个 block该传输到哪些datanode服务器上
(4)namenode返回3个datanode服务器ABC
(5)client请求3台dn中的一台A上传数据(本质上是一个RPC调用,建立pipeline),A收到请求会继续调用B,然后B调用C,将整个pipeline建立完成,逐级返回客户端
(6)client开始往A上传第一个block(先从磁盘读取数据放到一个本地内存缓存),以packet为单位,A收到一个packet就会传给B,B传给C;A每传一个packet会放入一个应答队列等待应答
(7)当一个block传输完成之后,client再次请求namenode上传第二个block的服务器。
注:
a.在通过客户端向hdfs中写数据的时候,如果某一台机器宕机了,在写入的时候不会重新重新分配datanode。如果写入时,一个datanode挂掉,会将已经写入的数据放置到queue的顶部,并将挂掉的datanode移出pipline,将数据写入到剩余的datanode,在写入结束后, namenode会收集datanode的信息,发现此文件的replication没有达到配置的要求(default=3),然后寻找一个datanode保存副本。。
b. datanode根据网络拓扑结构以及就近原则,返回三个节点给namenode。

2.hdfs的体系结构

hdfs有namenode、secondraynamenode、datanode组成。为n+1模式

2.1 NameNode负责管理和记录整个文件系统的元数据
2.2 DataNode 负责管理用户的文件数据块,文件会按照固定的大小(blocksize)切成若干块后分布式存储在若干台datanode上,每一个文件块可以有多个副本,并存放在不同的datanode上,Datanode会定期向Namenode汇报自身所保存的文件block信息,而namenode则会负责保持文件的副本数量
2.3 HDFS的内部工作机制对客户端保持透明,客户端请求访问HDFS都是通过向namenode申请来进行
2.4 secondraynamenode负责合并日志

3.一个datanode 宕机,怎么一个流程恢复

Datanode宕机了后,如果是短暂的宕机,可以实现写好脚本监控,将它启动起来。如果是长时间宕机了,那么datanode上的数据应该已经被备份到其他机器了,那这台datanode就是一台新的datanode了,删除他的所有数据文件和状态文件,重新启动。

4.hadoop 的 namenode 宕机,怎么解决

先分析宕机后的损失,宕机后直接导致client无法访问,内存中的元数据丢失,但是硬盘中的元数据应该还存在,如果只是节点挂了,重启即可,如果是机器挂了,重启机器后看节点是否能重启,不能重启就要找到原因修复了。但是最终的解决方案应该是在设计集群的初期就考虑到这个问题,做namenode的HA。</

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值