HDFS数据在Ubuntu上的存储流程与配置指南
HDFS(Hadoop分布式文件系统)是Ubuntu环境下存储大规模数据的分布式解决方案,其核心逻辑是将数据分块存储在多个节点上,通过NameNode管理元数据、DataNode存储实际数据块,实现高容错性与高吞吐量。以下是在Ubuntu上配置HDFS数据存储的详细步骤:
在开始配置前,需完成以下基础准备:
sudo apt update && sudo apt upgrade -y,确保系统软件包为最新版本。sudo apt install -y openjdk-8-jdk;验证安装:java -version(需显示Java版本信息)。sudo apt install -y openssh-server build-essential。wget https://downloads.apache.org/hadoop/core/hadoop-3.3.4/hadoop-3.3.4.tar.gz。/usr/local/目录:sudo tar -xzvf hadoop-3.3.4.tar.gz -C /usr/local/。~/.bashrc文件,添加Hadoop路径:export HADOOP_HOME=/usr/local/hadoop-3.3.4
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
使配置生效:source ~/.bashrc。HDFS的存储行为由core-site.xml(基础配置)和hdfs-site.xml(HDFS特定配置)控制,需修改这两个文件:
core-site.xml:指定NameNode的URI(本地模式为localhost,集群模式为NameNode IP/主机名):<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
hdfs-site.xml:配置数据存储路径、副本数(默认3,单节点可设为1):<configuration>
<!-- 数据副本数(单节点建议1,集群建议3) -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<!-- NameNode元数据存储路径(本地目录) -->
<property>
<name>dfs.namenode.name.dir</name>
<value>/usr/local/hadoop-3.3.4/data/namenode</value>
</property>
<!-- DataNode数据存储路径(本地目录) -->
<property>
<name>dfs.datanode.data.dir</name>
<value>/usr/local/hadoop-3.3.4/data/datanode</value>
</property>
</configuration>
根据hdfs-site.xml中的配置,创建NameNode和DataNode的存储目录:
sudo mkdir -p /usr/local/hadoop-3.3.4/data/namenode
sudo mkdir -p /usr/local/hadoop-3.3.4/data/datanode
# 修改目录所有者(避免权限问题)
sudo chown -R $USER:$USER /usr/local/hadoop-3.3.4/data
NameNode是HDFS的“元数据库”,首次启动前需格式化(清除旧数据):
hdfs namenode -format
格式化后会生成VERSION文件(包含命名空间ID、集群ID等信息),用于标识NameNode的元数据版本。
使用以下命令启动HDFS(包含NameNode、DataNode等进程):
start-dfs.sh
验证服务是否启动成功:
jps
若输出包含NameNode、DataNode,则说明HDFS已正常运行。
http://localhost:50070(HDFS管理界面),可查看集群状态、存储容量、数据块分布等信息。hdfs dfs命令将本地文件上传至HDFS:hdfs dfs -mkdir -p /user/$USER/input # 创建HDFS目录
hdfs dfs -put ~/test.txt /user/$USER/input # 上传本地文件至HDFS
hdfs dfs -ls /user/$USER/input # 查看HDFS中的文件
上传后,文件会被分割为多个数据块(默认128MB),并存储在dfs.datanode.data.dir指定的目录中(如/usr/local/hadoop-3.3.4/data/datanode/current/BP-*/current/finalized/subdir*/)。dfs.namenode.name.dir和dfs.datanode.data.dir目录的权限正确(属主为用户,而非root),否则会导致启动失败。dfs.replication应根据集群节点数量调整(推荐节点数*2/3),以保证数据容错性。sudo ufw allow 9000/tcp、sudo ufw allow 50070/tcp。