2017-03-29 64 views
1

Sqoop無法將數據導入到hadoop擰擊錯誤,因爲隨機表上的「設備上沒有空間」。我們在HDFS和本地FS上都有足夠的空間。不知道爲什麼,請讓我知道如何解決它。Sqoop導入失敗「設備上沒有剩餘空間」

SELECT ALTR_DESC WHERE 1=1 WITH UR 2017-03-29 00:32:27 ERROR 
SqoopThread:165 - Error occurred while importing data 
HALS.CLOUD_AESC java.lang.RuntimeException:  
java.io.FileNotFoundException: /apps/data/cloud.log 170329.003227.HALSDBP3.1694.TBA_ALTR_DESC.log (No space left on device) at  
com.apache.sqoop.log.LogWriter.close(LogWriter.java:137) at  
com.apache.sqoop.log.LogWriter.flush(LogWriter.java:155) at 
com.apche.sqoop.log.LogWriter.write(LogWriter.java:41) at 
com.apache.sqoop.service.SqoopThread.run(SqoopThread.java:100) at  
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:745) Caused by: 
java.io.FileNotFoundException: /apps/data/cloud.log/170329.003227.HALSDBP3.1694.TBA_ALTR_DESC.log (No space left on device) at java.io.FileOutputStream.open(Native Method) at 
java.io.FileOutputStream.(FileOutputStream.java:221) at 
java.io.FileOutputStream.(FileOutputStream.java:142) at 
java.io.FileWriter.(FileWriter.java:78) at 
com.apache.sqoop.log.LogWriter.close(LogWriter.java:127) 
+0

'df -h/apps'的輸出 – franklinsijo

回答

2

這意味着在羣集節點的一個(或多個)節點中沒有足夠的存儲空間。檢查HDFS的Web UI以查看每個數據節點和作業執行時的剩餘空間。

此空間可能在您運行作業後釋放,因此您可能需要在作業運行時檢查它。如果沒有足夠的時間來執行此操作(即作業很快),那麼您還可以檢查每個數據節點上的datanode日誌,以確定哪個日誌不能存儲數據。

我對sqoop並不熟悉,但解決此問題的標準方法是使用壓縮,另一種方法是將複製因子從3減少到2,甚至1(但這會影響容錯性和數據局部性)。但是,首先要確定爲什麼這種情況正在發生。

+0

我們在hdfs中有足夠的空間將近50% – Mughil

+0

檢查*每個*羣集節點上可用的總可用磁盤空間。一個節點可能會耗盡磁盤,這可能意味着它會承受所有重負載。桌子有多大(一起)以及你有多少空間?什麼是複製因素? – vefthym

相關問題