Ubuntu 上部署与运行 HDFS 的常见问题及对应解决方案
一 启动与权限类问题
HDFS_DATANODE_USER=root
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
# 如脚本或版本提示 HADOOP_SECURE_DN_USER 已废弃,改用:
HDFS_DATANODE_SECURE_USER=hdfs
同时在 start-yarn.sh/stop-yarn.sh 顶部加入:YARN_RESOURCEMANAGER_USER=root
YARN_NODEMANAGER_USER=root
HDFS_DATANODE_SECURE_USER=yarn
做法二:在 /etc/profile.d/hadoop-env.sh 或 /etc/profile 中导出变量(对所有节点分发并 source 使其生效)。注意不同版本对变量名有差异,若日志提示 HADOOP_SECURE_DN_USER 已被替换为 HDFS_DATANODE_SECURE_USER,请使用新变量名。export PDSH_RCMD_TYPE=ssh 并 source /etc/profile,或改用 ssh 方式启动脚本。二 访问与端口类问题
netstat -tlpn | grep 9000,应看到 0.0.0.0:9000 而非仅 127.0.0.1:9000。telnet <namenode-ip> 9000。<ip> <hostname>,且不要写 127.0.0.1 <hostname>;本机(Windows)在 C:\Windows\System32\drivers\etc\hosts 增加同样映射。fs.defaultFS 为 hdfs://<hostname>:9000,与上面 hosts 一致。三 配置与命令差异
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
hdfs dfs 子命令,而非已废弃的 hadoop dfs。例如创建目录:hdfs dfs -mkdir -p /user/hadoop/input
export HADOOP_HOME_WARN_SUPPRESS=1 抑制该告警(不推荐长期忽略,建议迁移到新变量与配置方式)。四 节点与权限异常
hdfs namenode -format,然后启动集群。dfs.permissions.enabled 为 false(仅测试环境)。hdfs dfs -chmod -R 755 /user/hadoop(或更宽松的 777,谨慎使用)。五 快速排查清单
JAVA_HOME 正确、SSH 免密互通、系统时间同步。fs.defaultFS=**hdfs://<hostname>:9000**;hdfs-site.xml 的 dfs.replication、dfs.namenode.name.dir、dfs.datanode.data.dir 路径可写且一致。jps 应看到 NameNode/DataNode/SecondaryNameNode;异常时优先查看 $HADOOP_HOME/logs/ 下对应进程的 .log 文件,定位报错行与时间点。