1、HDFS是文件管理系统 (分布式的),常见的还有NTFS,FAT32
2、一次写入,多次读出,写入后不能修改(可以追加)
HDFS组成
1、NameNode
2、DataNode
3、Client
4、2NN
其他特点
1、HDFS块大小取决于磁盘传输速度
2、通过目录树定位文件
3、hdfs-default.xml为默认设置信息
HDFS API
HDFS参数优先级
代码中的配置> JAVA resource > hdfs-site.xml > hdfs-default.xml
HDFS读写流程
HDFS小文件问题也是重点
1 Write(6点+1)
红字为闪光点,面试官八股听腻了想听没有的!
1、双向应答:先请求并检查,才返回DN
1. 询问NN,检查权限与目录
检查目录的原因:因为上传需要返回元数据,若目录不存在则元数据不存在,需要先创建该目录
2. NN响应客户端可以上传文件
3. 客户端请求上传文件,NN返回DN节点
4. 客户端与DN通过RPC协议连接
4.1 RPC协议
5. 通过机架感知,传输到最近的DN,并同时同步到附近DN,相当于半读半写
5.1 此时ACK队列同时进行进行数据备份
6. 传输完成后客户端向NN反馈完成,NN保存元数据
双向应答,NN要保存新的历史
传输最小单位为packet 64Kb(由Chunk 512Byte+Chunksum 4Byte组成),Chunk集合达到64K生成packet
1.1 节点距离计算
在HDFS写数据的过程中,NameNode会选择距离待上传数据最近距离的DataNode接收数据。那么这个最近距离怎么计算呢?在HDFS写数据的过程中,NameNode会选择距离待上传数据最近距离的DataNode接收数据。那么这个最近距离怎么计算呢?
寻求共同祖先
1.2 机架感知
副本存储策略
副本1:本地节点
副本2:其他机架2的节点
副本3:其他机架2的另一个节点
2 Read(5点)
1. 客户端向NN发送读取请求
2. NN返回目标文件的元数据
3. 客户端根据NN反馈的元数据,考虑负载均衡的前提下,就近寻找DN读取
4. DN传输数据
5. 在内存缓冲中,读取的块合成一个文件
3 Fsimage和Edits定义和合并过程(NN和2NN)
Fsimage 镜像文件,存储最新数据(网页上的东西)
Edits 追加(操作历史)
seen_txid 下次合并开始的点,一般是fsimage+1
2NN定期合并上述两个文件
4 DataNoe原理
.meta 数据长度、校验和、时间戳
4.1 checkpoint 检查点(了解)