1. Java环境配置问题
Hadoop依赖Java运行环境,常见问题是Java未安装或版本不兼容(如Hadoop 3.x需要Java 8或11)。解决步骤:
sudo apt update && sudo apt install openjdk-8-jdk(或openjdk-11-jdk);java -version(需显示Java版本信息);~/.bashrc,添加export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64(路径根据实际Java安装位置调整),然后运行source ~/.bashrc使配置生效。2. SSH免密登录配置失败
Hadoop集群节点间需要无密码通信,若未正确配置SSH会导致启动失败。解决步骤:
sudo apt install openssh-server;sudo systemctl start ssh、sudo systemctl enable ssh;ssh-keygen -t rsa(直接回车默认路径);cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys;chmod 600 ~/.ssh/authorized_keys;ssh localhost(无需输入密码即为成功)。3. Hadoop配置文件格式或路径错误
核心配置文件(core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml)的错误会导致集群无法启动。常见错误包括标签未闭合、路径不存在、属性值错误。解决步骤:
core-site.xml:确保fs.defaultFS属性值为hdfs://localhost:9000(伪分布式模式);hdfs-site.xml:设置dfs.replication=1(伪分布式)、dfs.namenode.name.dir(NameNode数据目录)、dfs.datanode.data.dir(DataNode数据目录),目录需提前创建(如mkdir -p /usr/local/hadoop/data/namenode);yarn-site.xml:设置yarn.nodemanager.aux-services=mapreduce_shuffle和yarn.nodemanager.aux-services.mapreduce.shuffle.class=org.apache.hadoop.mapred.ShuffleHandler;mapred-site.xml(若未自动生成,需从mapred-site.xml.template复制):设置mapreduce.framework.name=yarn;chown -R hadoop:hadoop /usr/local/hadoop/data)。4. NameNode无法启动或元数据损坏
NameNode是HDFS的核心组件,启动失败常见原因包括元数据丢失、端口被占用、配置错误。解决步骤:
$HADOOP_HOME/logs/hadoop-*-namenode-*.log定位具体错误(如端口冲突、元数据损坏);sudo lsof -i:9000找到进程并终止(kill -9 <PID>);dfs.namenode.name.dir)恢复fsimage和edits文件;hdfs namenode -format(注意:这会清除所有HDFS数据,仅用于初始配置或彻底恢复)。5. DataNode无法启动或数据块副本不足
DataNode负责存储数据,启动失败常见原因包括磁盘故障、配置路径错误、权限不足。解决步骤:
$HADOOP_HOME/logs/hadoop-*-datanode-*.log定位错误(如磁盘空间不足、路径不可写);df -h查看磁盘空间(确保dfs.datanode.data.dir所在分区有足够空间);dfs.datanode.data.dir指定的目录存在且权限正确(如chown -R hadoop:hadoop /usr/local/hadoop/data/datanode);dfs.datanode.data.dir配置(如添加新路径,用逗号分隔多个目录),并重启DataNode;dfs.replication设置的值(如dfs.replication=3但只有1个DataNode),添加更多DataNode或临时降低副本数(hdfs dfsadmin -setrep -w 1 /)。6. 权限问题
Hadoop对文件和目录权限敏感,常见问题是进程无法访问数据目录或配置文件。解决步骤:
hadoop用户(sudo useradd -m hadoop)并设置密码(sudo passwd hadoop),所有操作在该用户下进行;/usr/local/hadoop)和数据目录(如/usr/local/hadoop/data)的所有权赋予hadoop用户(sudo chown -R hadoop:hadoop /usr/local/hadoop);start-dfs.sh),否则会导致权限混乱。7. 中文乱码问题
上传到HDFS的中文文件显示乱码,通常是由于文件编码与Hadoop处理编码不一致。解决步骤:
locale命令查看,若未设置,编辑~/.bashrc添加export LANG=en_US.UTF-8并source ~/.bashrc)。8. 性能低下问题
HDFS或MapReduce处理速度慢,常见原因包括硬件资源不足、配置参数不合理。解决步骤:
hdfs-site.xml中的dfs.blocksize(如设置为256M或512M,适用于大文件场景);core-site.xml中添加dfs.client.read.shortcircuit=true,减少数据通过网络传输;mapred-site.xml中的mapreduce.map.memory.mb(如设置为2048)和mapreduce.reduce.memory.mb(如设置为4096),根据集群资源合理分配。