- 首页 >
- 问答 >
-
云计算 >
- Hadoop在Ubuntu上的数据存储
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常见为50070与50090。配置与访问时需与所用版本匹配。
二 配置步骤与关键参数
- 准备目录(示例将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:
- 启动与验证:
- start-dfs.sh
- jps 应看到 NameNode、DataNode、(可选)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不一致,需清理旧的namenode与datanode目录后再格式化,或手动对齐clusterID后启动。