執行 Hive 插入數據到 Elasticsearch 任務時失敗,日誌顯示:
File not found: File does not exist: /tmp/hive/.../reduce.xml
No plan file found: hdfs://.../reduce.xml
直接原因:Ubuntu 宿主機磁盤空間耗盡。
連鎖反應:
/tmp 目錄生成中間文件(包括 reduce.xml 計劃文件)FileNotFoundExceptionINodeFile.valueOf 錯誤,堆疊追蹤顯示 HDFS 存取異常# 檢查磁盤使用
df -h
# 清理臨時文件
sudo rm -rf /tmp/hive/*
sudo rm -rf /tmp/hadoop/*
# 清理 HDFS 垃圾桶
hdfs dfs -expunge
# 重啟相關服務
systemctl restart hive-metastore hive-server2
hive-site.xml 配置 hive.exec.scratchdir 指向大容量分區hive.exec.compress.intermediate=true 減少磁盤佔用mapreduce.job.reduces 避免同時產生過多中間文件/tmp 文件釋放空間後重新執行插入語句:
INSERT OVERWRITE TABLE doc SELECT s.id, s.name FROM user_f s;
任務應能正常完成,數據成功寫入 Elasticsearch。