Ubuntu环境下HDFS数据存储路径解析
HDFS(Hadoop Distributed File System)的数据存储路径主要由NameNode元数据目录和DataNode数据块目录两部分组成,具体路径通过Hadoop配置文件中的参数定义。以下是详细说明:
HDFS的数据存储路径依赖以下两个关键配置项(均位于$HADOOP_HOME/etc/hadoop/目录下的配置文件中):
hadoop.tmp.dir(定义临时根目录)
该参数是Hadoop所有临时文件(包括HDFS元数据、数据块的临时存储)的父目录,默认值为/tmp/hadoop-${user.name}(如/tmp/hadoop-hyxy)。由于/tmp目录在系统重启时可能被清空,生产环境中建议修改为用户目录或其他持久化路径(如/home/username/hadoop/tmp),避免数据丢失。
dfs.namenode.name.dir(NameNode元数据目录)
用于存储NameNode的核心元数据(如文件系统树、文件与数据块的映射关系、数据块副本位置等),默认值为${hadoop.tmp.dir}/dfs/name(如/tmp/hadoop-hyxy/dfs/name)。该目录下的fsimage文件记录文件系统元数据的持久化快照,edit文件记录元数据的变更日志。
dfs.datanode.data.dir(DataNode数据块目录)
用于存储DataNode上的实际数据块(HDFS将大文件切分为128MB/256MB的块,默认3副本),默认值为${hadoop.tmp.dir}/dfs/data(如/tmp/hadoop-hyxy/dfs/data)。该目录下会生成current子目录(存储有效数据块和元数据)、tmp子目录(存储临时数据块)。
若未修改配置,Ubuntu环境下HDFS的默认存储路径如下:
/tmp/hadoop-${user.name}/dfs/name(如/tmp/hadoop-hyxy/dfs/name)/tmp/hadoop-${user.name}/dfs/data(如/tmp/hadoop-hyxy/dfs/data)若需更改存储路径(如将数据存储到/home/ubuntu/hadoop/data),需修改对应配置文件并重启HDFS服务:
core-site.xml(配置临时根目录)<property>
<name>hadoop.tmp.dir</name>
<value>/home/ubuntu/hadoop/tmp</value>
</property>
hdfs-site.xml(配置NameNode和DataNode目录)<!-- NameNode元数据目录 -->
<property>
<name>dfs.namenode.name.dir</name>
<value>file://${hadoop.tmp.dir}/dfs/name</value>
</property>
<!-- DataNode数据块目录 -->
<property>
<name>dfs.datanode.data.dir</name>
<value>file://${hadoop.tmp.dir}/dfs/data</value>
</property>
$HADOOP_HOME/sbin/stop-dfs.sh # 停止HDFS
$HADOOP_HOME/sbin/start-dfs.sh # 启动HDFS
hadoop或当前用户)有读写权限(如chmod 755 /home/ubuntu/hadoop/tmp)。dfs.namenode.name.dir路径,需重新格式化NameNode(hdfs namenode -format),但此操作会删除原有元数据,需谨慎执行。通过以上配置,HDFS会将元数据和数据块存储在Ubuntu系统的指定路径中,满足不同场景下的存储需求。