HDFS面试(自己学习版)

1.简单问题

1. HDFS的优点?

  • 处理大数据
  • 容易扩展,直接加服务器
  • 高容错,多副本
  • 低要求 不需要优秀的服务器(负载均衡)

2.HDFS的缺点?

  • 不适应实时 , 修改速率相对较慢(只能追加)
  • 无法对小数据进行大量的存储,因为NN的容量是一定的,
  • 不支持并发写入,文件随机修改:同时只能一个线程对文件进行写操作 ,只能追加写

3.说说HDFS的结构

  • NN(NameNode) 存储元数据和目录,处理客户端的读写请求
  • DN(DataNode) 存储数据块和校验和,执行数据块的读写操作
  • S NN 备份NN,对元数据进行更新操作(滚动日志+fsimage)
  • 客户端:自己将文件切割称相应的块,然后上传。 与NN进行交互获取块。与DN进行交互,执行操作。

4.HDFS文件块大小设定

与寻址时间有关:默认寻址时间为传输时间的百分之一为最优

假设10ms找到目标,

10ms/0.01 = 1s

1s*磁盘传输速率就是块大小

默认是128

5.为什么块不能太大,也不能太小

大:设置太大,磁盘传输时间明显大于定位块的时间,因为块大了,块总数就相对少了,寻址时间相对少很多,而块过大,磁盘传输时间变大。

小:块总数变多,寻址时间增大了。

2.读写解析

1.HDFS是怎么进行写操作的?

  • 客户端向NN发起请求(要传入目标路径),请求上传(因为要判断是否有权限上传)
  • NN收到请求并校验(校验目标路径和权限z`),回应说可以上传
  • 客户端请求上传第一个块,要求返回DN(注意块是一个一个上传的)
  • NN收到,发送3个DN(根据备份个数)
  • 客户端先和3个DN进行交互,检测是否连接成功
  • DN返回应答
  • 客户端对DN串行发送块数据,并行保存。(C->D1->D2->D3)

2.读操作

  • 客户端向NN发送请求要求读数据(下载)
  • NN回应,将元数据发送过去
  • 客户端向DN请求块(优先级是就近原则,但是也是并行读)
  • DN发送数据给客户端(以packet为单位校验)
  • 客户端以packet为单位接收,先在本地缓存,然后写入文件
相关推荐
迪丽热爱10 小时前
每日英语-11
学习
艾莉丝努力练剑11 小时前
【QT:解决问题】Qt5Core.dll:无法定位程序输入点
java·开发语言·qt·学习·面试
青山是哪个青山19 小时前
LangChain 学习笔记(四):Message 与提示词模板
笔记·学习·langchain
hsjiasb20 小时前
FreeRTOS学习(二十六)——动态内存管理heap_1到heap_5
stm32·单片机·学习·学习笔记·freertos
崇子嵘20 小时前
基于zynqMP15eg的linux驱动学习
学习
赤土 炙焱1 天前
hiveserver2启动失败,磁盘满了
hive·hadoop
知识分享小能手1 天前
线性代数学习教程,从入门到精通,向量组的线性相关性 — 完整知识点梳理(7)
学习·线性代数·机器学习
Shell运维手记1 天前
Linux 常用基础命令学习笔记
linux·运维·笔记·学习·算法·github
动词ing1 天前
【学习笔记】C语言(数组指针与指针数组+字符数组+函数+参数传递+字符串作为形参+递归函数+指针函数+回调函数+结构体嵌套+内存动态分配函数)
c语言·笔记·学习
小O的算法实验室1 天前
IEEE TII,学习为多目标深度学习生成偏好
人工智能·深度学习·学习