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、內存使用率,避免資源耗盡導致服務無法啟動。