Ubuntu環境下HDFS配置的常見錯誤及解決方向
HDFS的核心配置文件(如core-site.xml
、hdfs-site.xml
)需嚴格遵循XML格式,標簽必須正確閉合,且無多余空格。常見錯誤包括屬性值未用引號包裹、標簽未閉合(如<property>
缺少</property>
),或配置文件路徑未包含在Hadoop的配置搜索路徑中。例如,core-site.xml
中fs.defaultFS
屬性若未用引號標注,會導致NameNode啟動時解析失敗。
未正確配置JAVA_HOME
或HADOOP_HOME
環境變量,會導致Hadoop無法找到Java運行環境或自身安裝目錄。需在~/.bashrc
或/etc/profile
中添加:
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 # 根據實際Java路徑調整
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
修改后需運行source ~/.bashrc
使配置生效。此外,Hadoop 2.x及以上版本還需設置HADOOP_SECURE_DN_USER
等安全相關變量。
NameNode與DataNode、客戶端與集群節點之間需通過SSH無密碼登錄實現通信。若未正確配置,會報錯“Permission denied (publickey)”。解決步驟:
ssh-keygen -t rsa -P ''
;~/.ssh/authorized_keys
文件中:cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
;authorized_keys
權限為600:chmod 600 ~/.ssh/authorized_keys
。NameNode啟動失敗的常見原因包括:
fsimage
或edits
文件丟失,需從SecondaryNameNode備份恢復,或重新格式化集群(hdfs namenode -format
);dfs.namenode.name.dir
(NameNode元數據目錄)或dfs.datanode.data.dir
(DataNode數據目錄)的權限需屬于Hadoop運行用戶(如hadoop
),可通過chown -R hadoop:hadoop /path/to/dir
修復;hadoop.tmp.dir
(默認/tmp
)被Ubuntu自動清理,需修改為永久目錄(如/hdfs/tmp
)并重新格式化。DataNode啟動失敗的常見原因包括:
dfs.datanode.data.dir
配置的目錄需存在且有寫入權限,若磁盤損壞需更換并更新配置;netstat -tuln | grep <port>
檢查并修改配置文件中的端口號;dfs.datanode.data.dir
下的所有文件并重啟DataNode。集群節點間無法通信會導致NameNode無法識別DataNode。常見原因包括:
/etc/hosts
中(如192.168.1.100 master
、192.168.1.101 slave1
),并注釋掉自動生成的127.0.0.1 master
行(避免主機名解析到本地回環地址);sudo ufw allow 50010/tcp
)。Hadoop對權限敏感,常見錯誤包括:
mjiang
,服務端用hadoop
),需在服務端創建相同用戶并設置密碼;/user/hadoop
)需允許用戶寫入,可通過hdfs dfs -chmod 777 /user/hadoop
臨時開放權限(生產環境建議設置為773
);hdfs-site.xml
中的dfs.permissions
為false
(默認true
),關閉權限檢查。-Xmx4g
),若內存不足會導致進程崩潰,可通過hadoop-env.sh
中的HADOOP_HEAPSIZE
設置。