转载:HDFS-Datanode磁盘选择策略源码分析

Datanode节点会配置多块数据盘,当我们往 HDFS 上写入新的数据块,DataNode 将会使用 volume 选择策略来为数据块选择存储的磁盘目录。选择正确的策略可以避免单块磁盘数据过多.
HDFS在写入时有两种策略:
  • 基于轮询策略(默认), 不考虑文件大小
  • 基于可用空间的策略

轮询策略核心代码
x
 
1
// 遍历磁盘列表  
2
while (true) {  
3
    final V volume = volumes.get(curVolume);  
4
    curVolume = (curVolume + 1) % volumes.size();  
5
    long availableVolumeSize = volume.getAvailable();  
6
    // 可用空间大于数据块,直接返回volume  
7
    if (availableVolumeSize > blockSize) {  
8
    return volume;  
9
}  


原文地址:https://www.cnblogs.com/bitbitbyte/p/12968567.html