视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
数据节点中数据库的存储
2020-11-09 16:01:50 责编:小采
文档

第一次启动HDFS需对NameNode(简称NN)格式化 bin/hadoop namenode -format HDFS动态添加和删除DataNode(简称DN),DN无需格式化而是在第一次启动时创建存储目录。DN可以管理多个目录,配置${dfs.data.dir} = /data/datanode,/data2/datanode 1.1 ${dfs.data

第一次启动HDFS需对NameNode(简称NN)格式化

bin/hadoop namenode -format

HDFS动态添加和删除DataNode(简称DN),DN无需格式化而是在第一次启动时创建存储目录。DN可以管理多个目录,配置${dfs.data.dir} = "/data/datanode,/data2/datanode"

1.1 ${dfs.data.dir}目录

该目录一般有4个目录和2个文件。

 

其中in_use.lock文件是在DataNode节点启动之后产生的,其中各个目录的作用如下:

blocksBeingWritten:该文件夹保存着当前正在”写“的数据块。

current:保存着HDFS文件系统中的数据块,这些数据块是成功提交到HDFS中的数据块。detach:用于配合数据节点升级,共数据块分离操作保存临时工作文件。

tmp:该文件夹保存着当前正在”写“的数据块,和blockBeingWritten文件夹的区别是,blockBeingWritten中的数据块写操作由客户端发起,tmp中的写操作由数据块复制引发,另一个数据节点正在发送数据到数据块中。

storage:0.13版本以前的Hadoop使用storage文件作为数据块的保存目录,和现在的目录结构不兼容,这个文件用于防止过旧的Hadoop版本在新的目录结构上启动,损坏系统。

in_use.lock:表明目录已经被使用,停止数据节点,该文件会消失,通过in_use.lock文件,数据节点可以保证独自占用该目录,防止两个数据节点示例共享一个目录,造成混乱。

1.2 ${dfs.data.dir}/current目录

current目录是数据节点中最重要的一个目录,它用于存放数据块,该目录中既包含目录,也包含文件,其中文件有两种类型:

HDFS数据块,保存着HDFS文件的内容;

  • 用于保存数据块的校验信息的校验信息文件,以meta后缀名标识;

  • VERSION文件是一个Java属性文件,包含了HDFS的版本信息。

  • current目录如下图所示:

    在这个图片中,没有目录,是因为当前的数据节点中的文件块的数量较少,只有当目录中存储的数据块增加到一定规模时,子目录名以subdir为前缀,然后后面加上目录编号,数据节点会创建一个新目录,用于保存新的块及元数据。目录中的数据块数达到时,便会创建子目录,并形成一个更宽的目录结构,同时\统一父目录下最多会创建个子目录,所以在默认配置下,一个目录下最多只有个文件块(128个文件)和个子目录。这种目录管理方式既保证了目录深度不会太深,而影响检索文件性能,同时也避免了目录保存大量数据块,确保每个目录中的文件块是可控的。

    下载本文
    显示全文
    专题