NameNode和DataNode中重要的数据结构解析

NameNode中的数据结构

一、NameNode在导入fsimage文件时,会生成的目录文件树状结构图,假设存在文件”/tmp/file1”,存在目录”/tmp/tmp3”,”/tmp2”;则生成的图如下:

NameNode和DataNode中重要的数据结构解析_第1张图片

二、FSNamesystem.blocksMap存放HDFS系统的所有block块信息;blocksMap的数据结构如下:

注:BlocksMap.BlockInfo类实现了LightWeightGSet.LinkedElement

三、NameNode生成的DataNode网络拓扑图

假设有三个DataNode,其中每个IP对应的路径如下:

IP 127.0.0.1 对应路径/d1/r1/h1;

IP 127.0.0.2 对应路径/d1/r1/h2;

IP 127.0.1.1 对应路径/d1/r2/h3;

因此上述信息生成一个网络拓扑图如下:

NameNode和DataNode中重要的数据结构解析_第2张图片

四、FSNamesystem.datanodemapstorageIDkey值存储所有DataNodeRegistration信息,即DataNode的信息;

五、FSNamesystem.host2DataNodemaphostnamekey值存储所有DataNodeRegistration信息,即DataNode的信息;

六、BlockInfo中三元组Object[]的结构如下图所示,其中NULL表示空

NameNode和DataNode中重要的数据结构解析_第3张图片

DataNode的数据结构

一、将所有${dfs.data.dir}/current路径下面的文件生成树状结构图;

假设dfs.data.dir配置为” /tmp/data”” /tmp/data2”,current下面各有2block块;树状图如下:

NameNode和DataNode中重要的数据结构解析_第4张图片

 

二、 FSDataSet.vloumeMap存储所有 ${dfs.data.dir}/current下的所有 block块信息;

你可能感兴趣的:(数据结构,hadoop,hdfs,NameNode,datanode)