在大数据面试中,深刻理解 Hadoop 是取得成功的关键之一。以下是一些关于 Hadoop 的HDFS存储系统的高频面试题目以及解答思路和经验分享:
一、 HDFS读流程
- 发起下载请求: 客户端创建分布式文件系统,向 NameNode 请求下载
user/warehouse/ss.avi
文件; - 获取文件元数据:NameNode 返回目标文件的元数据,包括文件块的位置;
- 请求读取第一个块:客户端向
data1
请求读取第一个块; - 数据传输:
data1
通过FSDataInputStream
将数据返回给客户端; - 继续请求读取:重复步骤 3-4 直到所有文件块都读取完毕,然后关闭
FSDataInputStream
。
二、 HDFS写流程
- 发起上传请求:客户端创建分布式文件系统,向 NameNode 请求上传
user/warehouse/ss.avi
文件; - 权限与路径检查:NameNode 检查路径是否存在,客户端是否有上传权限,然后向客户端响应可上传文件;
- 请求上传第一个块:客户端请求上传第一个块,让 NameNode 返回 DataNode;
- 分配存储位置:NameNode 返回
dn1
、dn2
、dn3
,表示用这三个节点存储数据; - 建立传输通道:客户端请求建立块传输通道,三个 DataNode 相互协作;
- 数据传输与同步:客户端通过
FSDataOutputStream
向dn1
传输数据,dn1
将数据保存并传输给dn2
,dn2
再同步给dn3
; - 完成传输:数据传输完成后客户端关闭
FSDataOutputStream
并向 NameNode 响应数据传输成功。
三、HDFS写入流程中DataNode挂掉的处理
在某个 DataNode 挂掉时:
- 客户端无法接收该 DataNode 的 ACK 确认;
- 客户端通知 NameNode;
- NameNode 检查并确定该块的副本与规定不符后通知其他空闲的 DataNode 复制副本;
- 挂掉的节点恢复后,先删除不完整的数据。
四、HDFS的NameNode内存
- Hadoop 2.x 系列,配置 NameNode 默认为 2000MB;
- Hadoop 3.x 系列,NameNode 的内存是动态分配的,默认最小内存为 1GB,每增加 100 万个文件块,增加 1GB 内存。
五、小文件问题及解决方案
危害
- 存储层面:一个文件块占用 NameNode 大约 150 字节内存,128GB 内存可存储 9.1 亿文件块;
- 计算层面:每个小文件启动一个 MapTask,默认内存 1GB,浪费资源。
解决方案
- 采用HAR归档;
- 采用CombineTextInputFormat;
- 开启JVM重用;
- 自行编写MapReduce程序合并小文件。
六、纠删码原理
- HDFS 默认情况下有三个副本,引入纠删码,通过计算方式可节省约一半的存储空间。
- 例如,使用
rs-3-2-1024k
编码,每三个数据单元生成两个检验单元,共 5 个单元,只要有任意的三个单元存在就可以得到原始数据。
七、异构存储
- 存储类型:
- RAM_DISK(内存镜像文件系统)
- SSD(固态硬盘)
- DISK(普通磁盘)
- ARCHIVE(归档)
- 存储策略:
-
lazy_persist:
一个副本在RAM_DISK
,其余在DISK
; -
all_ssd
:所有副本在SSD
; -
one_ssd
:一个副本在SSD
,其余在DISK
; -
hot
(默认):所有副本在DISK
。
八、 HDFS的优缺点
优点
- 高容错性:数据自动保存多个副本,通过增加副本提高容错性;
- 适合处理大数据(数据规模、文件规模);
- 可构建在廉价机器上,通过多副本机制提高可靠性。
缺点文章来源:https://www.toymoban.com/news/detail-841062.html
- 不适合低延时数据访问,比如毫秒级的存储数据是做不到的;
- 无法高效的对大量小文件进行存储,可能占用 NameNode 大量内存;
- 不支持并发写入、文件随机修改。
九、HDFS文件块大小
- 寻址与传输时间:寻址时间与传输时间的最佳状态为 1%;
- 磁盘传输速率:目前磁盘传输速率为 100MB/s;
- 文件块大小设置:取决于磁盘传输速率。
以上是关于 Hadoop 的HDFS系统的高频面试题目,希望这些问题和解答思路能够在面试中帮助你更自信地回答。如有特定问题或需要深入了解,请在评论区留言,我将尽力提供帮助。文章来源地址https://www.toymoban.com/news/detail-841062.html
到了这里,关于大数据面试高频题目 - 深入解析 Hadoop:探索强大的HDFS存储系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!