温馨提示×

Hadoop在Ubuntu上的数据存储

小樊
31
2025-12-18 19:34:34
栏目: 云计算

Hadoop在Ubuntu上的数据存储全指南

一 核心概念与目录映射

  • Hadoop在Ubuntu上的持久化数据主要落在HDFS与本地磁盘两部分:HDFS负责分布式块存储,本地磁盘保存NameNode与DataNode的元数据与块文件。
  • 关键目录与用途(示例为Hadoop 3.x,2.x键名略有差异):
    • HDFS命名空间元数据:由dfs.namenode.name.dir指定(本地目录),存放FsImage、EditLog等。
    • HDFS数据块:由dfs.datanode.data.dir指定(本地目录),存放实际的块文件。
    • 临时目录:由hadoop.tmp.dir指定(本地目录),Hadoop运行期临时文件与缓存。
    • 典型路径示例:/data/hadoop/namenode、/data/hadoop/datanode、/var/hadoop/tmp。
  • 版本差异提示:Hadoop 3.x Web UI默认端口为9870(NameNode)与9868(SecondaryNameNode);Hadoop 2.x常见为5007050090。配置与访问时需与所用版本匹配。

二 配置步骤与关键参数

  • 准备目录(示例将HDFS数据放到/data/hadoop,临时目录放到/var/hadoop/tmp):
    • sudo mkdir -p /data/hadoop/{namenode,datanode}
    • sudo mkdir -p /var/hadoop/tmp
    • sudo chown -R $USER:$USER /data/hadoop /var/hadoop/tmp
  • 配置环境变量($HADOOP_HOME/etc/hadoop/hadoop-env.sh 或 ~/.bashrc):
    • export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
    • export HADOOP_HOME=/opt/hadoop-3.3.4
    • export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
  • 配置 core-site.xml(指定默认文件系统与临时目录):
    • fs.defaultFShdfs://localhost:9000
    • hadoop.tmp.dirfile:///var/hadoop/tmp
  • 配置 hdfs-site.xml(指定本地存储目录与副本数):
    • dfs.replication1
    • dfs.namenode.name.dirfile:///data/hadoop/namenode
    • dfs.datanode.data.dirfile:///data/hadoop/datanode
    • Hadoop 3.x 建议同时设置Web地址:
      • dfs.namenode.http-addresslocalhost:9870
      • dfs.namenode.secondary.http-addresslocalhost:9868
  • 首次启动前格式化NameNode:
    • hdfs namenode -format
  • 启动与验证:
    • start-dfs.sh
    • jps 应看到 NameNodeDataNode、(可选)SecondaryNameNode
    • 访问:http://localhost:9870(Hadoop 3.x)查看存储与节点信息。

三 更换或迁移存储路径

  • 规划新路径(如:/mnt/ssd/hadoop/namenode 与 /mnt/ssd/hadoop/datanode),提前创建并赋权:
    • sudo mkdir -p /mnt/ssd/hadoop/{namenode,datanode}
    • sudo chown -R $USER:$USER /mnt/ssd/hadoop
  • 修改配置(core-site.xml 与 hdfs-site.xml)中的相关目录为上一步的新路径。
  • 安全做法(避免数据不一致):
    • 停止集群:stop-dfs.sh
    • 迁移旧数据:将旧 namenode 与 datanode 目录内容拷贝到新目录(保持权限一致)
    • 启动集群:start-dfs.sh
  • 验证:jps 检查进程,访问 NameNode Web UI 确认存储路径与可用容量。

四 多磁盘与多目录扩展

  • 为提升容量与吞吐,可在单个DataNode上配置多个本地数据目录(逗号分隔):
    • dfs.datanode.data.dirfile:///data1/hadoop/datanode,file:///data2/hadoop/datanode
  • 建议将不同目录分布在不同物理磁盘,避免I/O争用;同时确保各目录所在磁盘有充足的可用空间inode
  • 注意:副本数(dfs.replication)是跨节点的数据冗余策略,与本地多目录并不等价,生产环境通常设置为3

五 常见问题与排查

  • 权限问题导致无法写入本地目录:创建目录后执行 chown/chmod,确保运行Hadoop的用户拥有读写权限。
  • 端口被占用或无法访问Web UI:检查端口占用(如9870/9868或50070/50090),必要时更换端口或关闭占用进程;云主机需放行安全组与防火墙。
  • 更换路径后未生效或启动失败:确认已停止集群、目录拷贝完整、配置路径书写正确(以**file://**开头),再启动验证。
  • 伪分布式环境无DataNode:常见原因为多次格式化导致clusterID不一致,需清理旧的namenodedatanode目录后再格式化,或手动对齐clusterID后启动。

0