hdfs3.1.3——数据是怎么在DataNode上存储的?

一、前言

由于面试时被问到过这个问题,那么今天就从源码角度分析下是如何存储的?

二、数据在DataNode上是以什么样的形式存储的?

首先,我们可以通过在hdfs-site.xml中配置dfs.datanode.data.dir,来规定在哪些datanode服务器的哪些目录下存储数据

在我的服务器上,数据存储在/opt/module/hadoop-3.1.3/data目录下

Datanode保存的是文件划分的block块,以及这些block块的元数据

Datanode也可以定义多个目录保存数据块

数据保存在/opt/module/hadoop-3.1.3/data/dfs/data/current/BP-454224392-192.168.10.105-1647526514487/current/目录下

  • BP-454224392-192.168.10.105-1647526514487:这个目录是一个块池目录,块池目录保存了一个块池在当前存储目录下存储的所有数据块, 在Federation部署方式中, Datanode的一个存储目录会包含多个以“BP”开头的块池目录。 BP后面会紧跟一个唯一的随机块池ID, 在这个示例中就是451827885。 接下来的IP地址192.168.8.156是当前块池对应的Namenode的IP地址。 最后一个部分是这个块池的
    创建时间。
     
  • VERSION文件:和Namenode以及JournalNode的VERSION文件类似, 块池目录
在深入学习Hadoop分布式文件系统(HDFS)之前,正确配置Hadoop环境是关键的一步。你需要在Ubuntu系统上安装Hadoop 3.1.3版本、JDK 1.8,并配置好环境变量。之后,可以使用Shell命令和Java API两种方式来操作HDFS文件。 参考资源链接:[厦门大学林子雨:HDFS操作实验详解及教程](https://wenku.csdn.net/doc/1oc4iz2msv?spm=1055.2569.3001.10343) 首先,确保HadoopHDFS服务正常运行,可以通过运行`jps`命令来检查是否启动了NameNode和DataNode进程。接下来,利用Hadoop的Shell命令来执行文件操作。例如,创建一个目录可以通过运行`hdfs dfs -mkdir /user`命令完成。如果你想查看HDFS中的文件和目录,可以使用`hdfs dfs -ls /`。对于文件的上传、下载、删除等操作,也有相应的Shell命令,如`hdfs dfs -put localfile /user/hadoop/file`用于上传文件,`hdfs dfs -get /user/hadoop/file localfile`用于下载文件,以及`hdfs dfs -rm /user/hadoop/file`用于删除文件。 除了Shell命令,Java API提供了一种编程方式来操作HDFS文件。你可以使用Java开发IDE(如Eclipse)来编写代码。具体来说,需要导入Hadoop的Java库,创建一个FileSystem对象来连接HDFS。然后,通过这个对象调用方法来执行文件的读取、写入、创建目录等操作。例如,创建目录的Java代码可以写成如下形式: ```java Configuration conf = new Configuration(); FileSystem fs = FileSystem.get(conf); fs.mkdirs(new Path( 参考资源链接:[厦门大学林子雨:HDFS操作实验详解及教程](https://wenku.csdn.net/doc/1oc4iz2msv?spm=1055.2569.3001.10343)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

罗啰萝在努力

如果这篇文章对你有帮助,望支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值