1. 权限问题
现象:执行HDFS操作(如上传文件、格式化NameNode)时,出现“Permission denied”错误,无法访问Hadoop目录或文件。
原因:Hadoop目录(如/path/to/hadoop)或文件的属主/权限设置不当,导致当前用户无操作权限。
解决方法:使用chown命令将Hadoop目录的所有权赋予Hadoop用户(如hadoop),并设置合理权限:
sudo chown -R hadoop:hadoop /path/to/hadoop  # 修改属主属组
sudo chmod -R 755 /path/to/hadoop           # 设置目录权限(所有者可读写执行,其他用户可读执行)
若需调整特定文件/目录权限(如dfs.data.dir),可使用hdfs dfs -chmod或hdfs dfs -chown命令。
2. 环境变量配置错误
现象:执行hdfs或hadoop命令时,提示“command not found”;或启动HDFS时出现“JAVA_HOME not set”错误。
原因:HADOOP_HOME环境变量未正确配置,或JAVA_HOME未在hadoop-env.sh中设置。
解决方法:
/etc/profile文件,添加以下内容(替换为实际路径):export HADOOP_HOME=/path/to/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
执行source /etc/profile使配置生效。$HADOOP_HOME/etc/hadoop/hadoop-env.sh,添加JAVA_HOME:export JAVA_HOME=/path/to/java  # 如/usr/lib/jvm/java-1.8.0-openjdk
```。
3. 配置文件参数错误
现象:启动HDFS时出现“Configuration error”“Invalid URI”或“Property not found”错误;或DataNode无法连接NameNode。
原因:core-site.xml/hdfs-site.xml中参数设置错误(如fs.defaultFS的URI格式错误、dfs.namenode.name.dir路径不存在)。
解决方法:
core-site.xml中的fs.defaultFS,确保格式为hdfs://<namenode_hostname>:<port>(如hdfs://namenode:9000),使用Linux风格的路径分隔符(/)。hdfs-site.xml中的dfs.namenode.name.dir和dfs.datanode.data.dir,确保路径存在且有写入权限(如file:/tmp/hadoop/dfs/name需改为绝对路径/data/dfs/name)。4. NameNode格式化问题
现象:首次启动HDFS时,出现“Storage directory version mismatch”“Incompatible namespaceID”或“NameNode not formatted”错误。
原因:NameNode未格式化,或DataNode的VERSION文件与NameNode不一致(如版本升级后未同步)。
解决方法:
hdfs namenode -format
dfs.data.dir目录下的数据(如/data/dfs/data/current),然后重新启动NameNode和DataNode。5. SSH免密登录配置失败
现象:启动HDFS时,出现“Permission denied (publickey)”错误;或NameNode无法向DataNode发送指令。
原因:SSH密钥对未生成、公钥未复制到目标节点,或authorized_keys文件权限不当。
解决方法:
ssh-keygen -t rsa  # 按回车键默认保存路径
ssh-copy-id hadoop@datanode1  # 替换为DataNode的实际用户名和主机名
ssh hadoop@datanode1  # 应无需输入密码
~/.ssh/authorized_keys文件权限为600。6. DataNode无法连接NameNode
现象:启动DataNode时,出现“Connection refused to namenode:9000”或“Could not connect to namenode”错误;或HDFS Web UI无法显示DataNode信息。
原因:/etc/hosts文件配置错误(主机名与IP不匹配)、防火墙阻止了HDFS端口(如9000、50070)、NameNode未启动。
解决方法:
/etc/hosts文件,确保主机名与IP对应(如192.168.1.100 namenode)。sudo firewall-cmd --permanent --add-port=9000/tcp
sudo firewall-cmd --permanent --add-port=50070/tcp
sudo firewall-cmd --reload
jps命令查看NameNode进程),若未启动则执行start-dfs.sh。7. NameNode处于安全模式
现象:执行文件操作(如上传、删除)时,出现“Name node is in safe mode”错误;或无法修改元数据。
原因:NameNode启动时,若数据块未达到最小副本数(dfs.replication),会进入安全模式以防止数据丢失。
解决方法:
hdfs dfsadmin -safemode leave
hdfs dfsadmin -safemode forceExit
```。
8. 磁盘空间不足
现象:执行文件写入操作时,出现“DiskSpaceQuotaExceededException”或“No space left on device”错误;或DataNode进程崩溃。
原因:HDFS存储目录所在磁盘空间耗尽,或达到了配额限制。
解决方法:
/tmp目录下的临时文件、旧数据块)。/user/analytics目录的磁盘配额设置为10TB):hdfs dfsadmin -setSpaceQuota 10T /user/analytics