大数据面试题之Hadoop:每日三题(一)

在这里插入图片描述

Hadoop

hadoop中常问的有三块,第一:存储,问到存储,就把HDFS相关的知识点拿出来;第二:计算框架(MapReduce);第三:资源调度框架(yarn)

1.请说下HDFS读写流程

这个问题虽然见过无数次,面试官问过无数次,但是就是有人不能完整的说下来,所以请务必记住。并且很多问题都是从HDFS读写流程中引申出来的

HDFS 写流程

1)client客户端发送上传请求,通过RPC与namenode建立通信,namenode检查该用户是否有上传权限,以及上传的文件是否在hdfs对应的目录下重名,如果这二者有任何一个不满足,则直接报错,如果二者都满足,则返回给客户端一个可以上传的信息

2)client根据文件的大小进行切分,默认128M一块,切分完成之后给namenode发送请求第一个block块上传到哪些服务器上

3)namenode收到请求之后,根据网络拓扑和机架感知以及副本机制进行文件分配,返回可用的DataNode的地址

注:Hadoop在设计时考虑到数据的安全与高效,数据文件默认在HDFS上存放三份,存储策略为本地一份,同机架内其他某一节点上一份,不同机架的某一节点上一份

4)客户端收到地址之后与服务器地址列表中的一个节点如A进行通信,本质上就是RPC调用,建立pipeline,A收到请求后会继续调用B,B在调用C,将整个pipeline建立完成,逐级返回client

5)client开始向A上发送第一个block(先从磁盘读取数据然后放到本地内存缓存),以packet(数据包,64KB) 为单位,A收到一个packet就会发送给B,然后B发送给C,A每传完一个packet就会放入一个应答队列等待应答

6)数据被分割成一个个的packet数据包在pipeline上依次传输,在pipeline反向传输中,逐个发送ack(命令正确应答),最终由pipeline中第一个DataNode节点A将piplineack发送给Client

7)当一个block传输完成之后,Client再次请求NameNode上传第二个block,namenode重新选择三台DataNode给client
在这里插入图片描述

HDFS 读流程

1)client 向 namenode 发送 RPC 请求。请求文件 block 的位置

2)namenode 收到请求之后会检查用户权限以及是否有这个文件,如果都符合,
则会视情况返回部分或全部的 block 列表,对于每个 block,NameNode 都会返
回含有该 block 副本的 DataNode 地址; 这些返回的 DN 地址,会按照集群拓
扑结构得出 DataNode 与客户端的距离,然后进行排序,排序两个规则:网络拓
扑结构中距离 Client 近的排靠前;心跳机制中超时汇报的 DN 状态为 STALE,
这样的排靠后

3)Client 选取排序靠前的 DataNode 来读取 block,如果客户端本身就是
DataNode,那么将从本地直接获取数据(短路读取特性)

4)底层上本质是建立 Socket Stream(FSDataInputStream),重复的调用父类
DataInputStream 的 read 方法,直到这个块上的数据读取完毕

5)当读完列表的 block 后,若文件读取还没有结束,客户端会继续向 NameNode
获取下一批的 block 列表

6)读取完一个 block 都会进行 checksum 验证,如果读取 DataNode 时出现错
误,客户端会通知 NameNode,然后再从下一个拥有该 block 副本的 DataNode
继续读

7)read 方法是并行的读取 block 信息,不是一块一块的读取;NameNode 只
是返回 Client 请求包含块的 DataNode 地址,并不是返回请求块的数据

8) 最终读取来所有的 block 会合并成一个完整的最终文件

2. HDFS 在读取文件的时候,如果其中一个块突然损坏了怎么办?

客户端读取完 DataNode 上的块之后会进行 checksum 验证,也就是把客户端读
取到本地的块与 HDFS 上的原始块进行校验,如果发现校验结果不一致,客户端
会通知 NameNode,然后再从下一个拥有该 block 副本的 DataNode 继续读

3. HDFS 在上传文件的时候,如果其中一个 DataNode 突然挂掉了怎么办?

客户端上传文件时与DataNode建立pipeline管道,管道正向是客户端向DataNode
发送的数据包,管道反向是 DataNode 向客户端发送 ack 确认,也就是正确接收
到数据包之后发送一个已确认接收到的应答,当 DataNode 突然挂掉了,客户端
接收不到这个 DataNode 发送的 ack 确认,客户端会通知 NameNode,NameNode
检查该块的副本与规定的不符,NameNode 会通知 DataNode 去复制副本,并将挂
掉的 DataNode 作下线处理,不再让它参与文件上传与下载。
在这里插入图片描述

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Hadoop是一个用于处理大规模数据的开源框架,它不仅是大数据技术的核心重点,也是面试中经常会问到的问题之一。Hadoop包含了Hadoop框架本身以及Hadoop生态系统中的其他辅助框架,如zookeeper、Flume、Hbase、Hive、Sqoop等。在一个正常工作的Hadoop集群中,需要启动多个进程来完成不同的任务。这些进程包括: 1. NameNode:负责管理HDFS(Hadoop分布式文件系统)的元数据,如文件的目录结构和文件块的位置信息。 2. DataNode:负责存储实际的数据块,并向NameNode报告块的状态。 3. ResourceManager:负责管理集群上的资源分配和任务调度,协调不同应用程序之间的资源竞争。 4. NodeManager:负责管理每个节点上的资源,接收来自ResourceManager的指令,启动和监控容器,执行具体的任务。 5. SecondaryNameNode:定期从NameNode中复制元数据,用于恢复NameNode的故障。 6. JobTracker:负责任务调度和资源管理,监控任务的执行并重新调度失败的任务。 7. TaskTracker:在每个节点上运行,负责执行特定的任务,如Map任务或Reduce任务。 这些进程协同工作,以实现Hadoop集群的分布式计算和数据存储。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [大数据开发面试题详解:Hadoop的运行原理](https://blog.csdn.net/xx666zz/article/details/85708344)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [2021最全大数据面试题汇总---hadoop篇,附答案!](https://blog.csdn.net/weixin_45574790/article/details/119241157)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

(YSY_YSY)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值