Hadoop依赖Java环境,需确保已安装JDK 1.8及以上版本,并正确配置JAVA_HOME。
java -version确认Java安装;/etc/profile或~/.bashrc中添加:export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk # 根据实际路径调整
export PATH=$JAVA_HOME/bin:$PATH
source /etc/profile使配置生效。确保Hadoop路径已加入环境变量,在/etc/profile或~/.bashrc中添加:
export HADOOP_HOME=/path/to/hadoop # 替换为Hadoop安装目录
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
执行source /etc/profile生效。
重点检查core-site.xml、hdfs-site.xml的以下关键配置:
core-site.xml:<property>
<name>fs.defaultFS</name>
<value>hdfs://namenode_hostname:9000</value> # 替换为NameNode主机名
</property>
hdfs-site.xml:<property>
<name>dfs.namenode.name.dir</name>
<value>/path/to/namenode/dir</value> # NameNode元数据存储路径
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/path/to/datanode/dir</value> # DataNode数据存储路径
</property>
<property>
<name>dfs.replication</name>
<value>3</value> # 副本数(集群节点数≥3时建议设为3)
</property>
确保路径存在且具备读写权限。
在Hadoop目录下执行:
hdfs namenode -format
注意:此操作会清除HDFS所有数据,请提前备份重要文件。
使用以下命令启动HDFS:
sbin/start-dfs.sh
或通过systemctl启动(若已配置systemd):
systemctl start hadoop-namenode
systemctl start hadoop-datanode
通过以下命令确认服务是否运行:
systemctl status hadoop-namenode # 检查NameNode
systemctl status hadoop-datanode # 检查DataNode
若未启动,可使用systemctl start手动启动,并查看启动日志(journalctl -xe)。
HDFS日志默认位于/var/log/hadoop-hdfs/目录,NameNode日志示例:
tail -f /var/log/hadoop-hdfs/hadoop-username-namenode-hostname.log
根据日志中的错误信息针对性解决。
Permission Denied(权限不足):
确保Hadoop目录及文件归属正确,执行:
chown -R hadoop:hadoop /path/to/hadoop # 替换为实际用户和目录
chmod -R 755 /path/to/hadoop
Input/Output Error(输入输出错误):
可能是NFS服务未启动或配置错误,检查NFS服务状态:
systemctl status nfs-server
若未启动,执行systemctl start nfs-server。
Safe Mode(安全模式):
NameNode启动后会进入安全模式,禁止写操作。若需退出,执行:
hdfs dfsadmin -safemode leave
Connection Refused(连接被拒绝):
/etc/hosts文件,确保主机名与IP映射正确:192.168.1.100 namenode # 替换为实际IP和主机名
192.168.1.101 datanode1
systemctl stop firewalld
若问题解决,添加永久规则:firewall-cmd --add-port=9000/tcp --permanent
firewall-cmd --add-port=50010/tcp --permanent
firewall-cmd --reload
Port Already in Use(端口被占用):
使用netstat -tuln | grep <port>检查端口占用情况,修改hdfs-site.xml中的端口号(如dfs.namenode.rpc-address)。
ping命令测试各节点间的网络连接,确保无丢包或延迟过高。df -h检查磁盘空间,确保dfs.datanode.data.dir和dfs.namenode.name.dir所在分区有足够空间(建议剩余≥20%)。top或htop检查CPU、内存使用率,避免资源耗尽导致服务无法启动。