2017-03-29 63 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

相关问题