温馨提示×

HDFS数据如何在Ubuntu上存储

小樊
47
2025-10-25 07:15:56
栏目: 云计算

HDFS数据在Ubuntu上的存储流程与配置指南
HDFS(Hadoop分布式文件系统)是Ubuntu环境下存储大规模数据的分布式解决方案,其核心逻辑是将数据分块存储在多个节点上,通过NameNode管理元数据、DataNode存储实际数据块,实现高容错性与高吞吐量。以下是在Ubuntu上配置HDFS数据存储的详细步骤:

1. 环境准备

在开始配置前,需完成以下基础准备:

  • 更新系统:运行sudo apt update && sudo apt upgrade -y,确保系统软件包为最新版本。
  • 安装Java环境:HDFS依赖Java运行,安装OpenJDK 8(推荐):sudo apt install -y openjdk-8-jdk;验证安装:java -version(需显示Java版本信息)。
  • 安装基础工具:安装SSH(用于节点间通信)和build-essential(编译工具):sudo apt install -y openssh-server build-essential

2. 下载与安装Hadoop

  • 下载Hadoop:从Apache官网下载稳定版本(如3.3.4):wget https://downloads.apache.org/hadoop/core/hadoop-3.3.4/hadoop-3.3.4.tar.gz
  • 解压安装:将Hadoop解压至/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

3. 配置HDFS核心参数

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>
    

4. 创建HDFS数据目录

根据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

5. 格式化NameNode

NameNode是HDFS的“元数据库”,首次启动前需格式化(清除旧数据):

hdfs namenode -format

格式化后会生成VERSION文件(包含命名空间ID、集群ID等信息),用于标识NameNode的元数据版本。

6. 启动HDFS服务

使用以下命令启动HDFS(包含NameNode、DataNode等进程):

start-dfs.sh

验证服务是否启动成功:

jps

若输出包含NameNodeDataNode,则说明HDFS已正常运行。

7. 验证数据存储功能

  • 查看HDFS Web界面:在浏览器中访问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.dirdfs.datanode.data.dir目录的权限正确(属主为用户,而非root),否则会导致启动失败。
  • 副本数调整:生产环境中,dfs.replication应根据集群节点数量调整(推荐节点数*2/3),以保证数据容错性。
  • 防火墙配置:若需远程访问HDFS,需开放相关端口(如9000、50070):sudo ufw allow 9000/tcpsudo ufw allow 50070/tcp

0