sqoop无法将数据导入hadoop,错误为随机表上的“设备上没有剩余空间”。我们在hdfs和本地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条答案
按热度按时间rks48beu1#
这意味着您在集群的一个(或多个)节点中没有足够的存储空间。检查hdfs的webui以查看每个datanode和作业执行时的剩余空间。
此空间可能在您运行作业后被释放,因此您可能需要在作业运行时检查它。如果没有足够的时间来执行此操作(即作业很快),那么您还可以检查每个datanode上的datanode日志,以确定哪个节点无法存储数据。
我不熟悉sqoop,但解决这个问题的标准方法是使用压缩,另一种方法是将复制因子从3减少到2,甚至1(但这会影响容错性和数据局部性)。然而,首先要确定发生这种情况的时间和原因。