java.io.IOException: File /tmp/hive-root/.../emptyFile could only be replicated to 0 nodes, instead of 1
後續拋出 IllegalArgumentException: Can not create a Path from an empty string,實為連鎖反應。
HDFS 副本數設置與 DataNode 實際數量不匹配。
dfs.replication = 3(或其他 >1 值)。hdfs dfsadmin -report 確認 Live Nodes 數。hdfs-site.xml 設定 dfs.replication ≤ Live DataNode 數。
<property>
<name>dfs.replication</name>
<value>1</value> <!-- 單節點環境設為 1 -->
</property>
stop-dfs.sh && start-dfs.sh。hdfs dfs -rm -r /tmp/hive-root 避免髒數據干擾。| 現象 | 可能原因 | 對策 |
|---|---|---|
| DataNode 啟動後隨即關閉 | 磁盤空間不足 / 目錄權限 / 端口衝突 | 查看 logs/hadoop-*-datanode-*.log |
| NameNode 安全模式無法退出 | 副本數不足導致區塊缺失 | hdfs dfsadmin -safemode leave 後修復副本 |
| 多網卡環境 | DataNode 綁定錯誤 IP | 配置 dfs.datanode.hostname / dfs.namenode.rpc-address |
dfs.replication=1,單節點也能跑通。SET hive.exec.dynamic.partition.mode=nonstrict; 等參數優化。「replicated to 0 nodes」90% 是副本數配置與集群規模不符。按上述步驟調整 dfs.replication 並重啟 HDFS 即可秒解。