大数据面试高频题目 - 深入解析 Hadoop:探索强大的HDFS存储系统

在大数据面试中,深刻理解 Hadoop 是取得成功的关键之一。以下是一些关于 Hadoop 的HDFS存储系统的高频面试题目以及解答思路和经验分享:

一、 HDFS读流程

  1. 发起下载请求: 客户端创建分布式文件系统,向 NameNode 请求下载 user/warehouse/ss.avi 文件;
  2. 获取文件元数据:NameNode 返回目标文件的元数据,包括文件块的位置;
  3. 请求读取第一个块:客户端向 data1 请求读取第一个块;
  4. 数据传输:data1 通过 FSDataInputStream 将数据返回给客户端;
  5. 继续请求读取:重复步骤 3-4 直到所有文件块都读取完毕,然后关闭 FSDataInputStream

二、 HDFS写流程

  1. 发起上传请求:客户端创建分布式文件系统,向 NameNode 请求上传 user/warehouse/ss.avi 文件;
  2. 权限与路径检查:NameNode 检查路径是否存在,客户端是否有上传权限,然后向客户端响应可上传文件;
  3. 请求上传第一个块:客户端请求上传第一个块,让 NameNode 返回 DataNode;
  4. 分配存储位置:NameNode 返回 dn1dn2dn3,表示用这三个节点存储数据;
  5. 建立传输通道:客户端请求建立块传输通道,三个 DataNode 相互协作;
  6. 数据传输与同步:客户端通过 FSDataOutputStream 向 dn1 传输数据,dn1 将数据保存并传输给 dn2dn2 再同步给 dn3
  7. 完成传输:数据传输完成后客户端关闭 FSDataOutputStream 并向 NameNode 响应数据传输成功。

三、HDFS写入流程中DataNode挂掉的处理

在某个 DataNode 挂掉时:

  • 客户端无法接收该 DataNode 的 ACK 确认;
  • 客户端通知 NameNode;
  • NameNode 检查并确定该块的副本与规定不符后通知其他空闲的 DataNode 复制副本;
  • 挂掉的节点恢复后,先删除不完整的数据。

四、HDFS的NameNode内存

  • Hadoop 2.x 系列,配置 NameNode 默认为 2000MB;
  • Hadoop 3.x 系列,NameNode 的内存是动态分配的,默认最小内存为 1GB,每增加 100 万个文件块,增加 1GB 内存。

五、小文件问题及解决方案

危害

  1. 存储层面:一个文件块占用 NameNode 大约 150 字节内存,128GB 内存可存储 9.1 亿文件块;
  2. 计算层面:每个小文件启动一个 MapTask,默认内存 1GB,浪费资源。

解决方案

  1. 采用HAR归档;
  2. 采用CombineTextInputFormat;
  3. 开启JVM重用;
  4. 自行编写MapReduce程序合并小文件。

六、纠删码原理

  • HDFS 默认情况下有三个副本,引入纠删码,通过计算方式可节省约一半的存储空间。
  • 例如,使用 rs-3-2-1024k 编码,每三个数据单元生成两个检验单元,共 5 个单元,只要有任意的三个单元存在就可以得到原始数据。

七、异构存储

  1. 存储类型:
  • RAM_DISK(内存镜像文件系统)
  • SSD(固态硬盘)
  • DISK(普通磁盘)
  • ARCHIVE(归档)
  • 存储策略:
  • lazy_persist:一个副本在 RAM_DISK,其余在 DISK
  • all_ssd:所有副本在 SSD
  • one_ssd:一个副本在 SSD,其余在 DISK
  • hot(默认):所有副本在 DISK

八、 HDFS的优缺点

优点

  1. 高容错性:数据自动保存多个副本,通过增加副本提高容错性;
  2. 适合处理大数据(数据规模、文件规模);
  3. 可构建在廉价机器上,通过多副本机制提高可靠性。

缺点

  1. 不适合低延时数据访问,比如毫秒级的存储数据是做不到的;
  2. 无法高效的对大量小文件进行存储,可能占用 NameNode 大量内存;
  3. 不支持并发写入、文件随机修改。

九、HDFS文件块大小

  1. 寻址与传输时间:寻址时间与传输时间的最佳状态为 1%;
  2. 磁盘传输速率:目前磁盘传输速率为 100MB/s;
  3. 文件块大小设置:取决于磁盘传输速率。

以上是关于 Hadoop 的HDFS系统的高频面试题目,希望这些问题和解答思路能够在面试中帮助你更自信地回答。如有特定问题或需要深入了解,请在评论区留言,我将尽力提供帮助。

  • 25
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值