Sqoop导入失败“设备上没有剩余空间”

时间:2017-03-29 07:16:25

标签: hadoop hdfs sqoop

Sqoop无法将数据导入hadoop thorwing错误,因为随机表上的“设备上没有剩余空间”。我们在HDFS和Local FS上都有足够的空间。不知道为什么,请让我知道如何解决它。

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)

1 个答案:

答案 0 :(得分:2)

这意味着您的群集节点中的一个(或多个)节点没有足够的存储空间。检查HDFS的Web UI,以便在执行作业时查看每个datanode和剩余空间。

运行作业后可能会释放此空间,因此您可能需要在作业运行时进行检查。如果没有足够的时间来执行此操作(即作业很快),那么您还可以检查每个数据节点上的datanode日志,以确定哪个数据节点无法存储数据。

我不熟悉sqoop,但解决此问题的标准方法是使用压缩,另一种方法是将复制因子从3减少到2,甚至1(但这会对容错和数据产生影响局部性)。但是,首先要确定何时为什么发生这种情况。