簡體   English   中英

設備異常,亞馬遜EMR媒體實例和S3沒有剩余空間

[英]No space left on device exception, amazon EMR medium instances and S3

我在Amazon EMR上運行MapReduce作業,創建了40個輸出文件,每個文件大約130MB。 最后9個減少任務失敗,“設備上沒有剩余空間”異常。 這是集群的錯誤配置問題嗎? 作業運行沒有問題,輸入文件更少,輸出文件更少,減少器更少。 任何幫助都感激不盡。 謝謝! 下面的完整堆棧跟蹤:

Error: java.io.IOException: No space left on device
at java.io.FileOutputStream.writeBytes(Native Method)
at java.io.FileOutputStream.write(FileOutputStream.java:345)
at java.io.BufferedOutputStream.write(BufferedOutputStream.java:122)
at java.security.DigestOutputStream.write(DigestOutputStream.java:148)
at com.amazon.ws.emr.hadoop.fs.s3n.MultipartUploadOutputStream.write(MultipartUploadOutputStream.java:135)
at org.apache.hadoop.fs.FSDataOutputStream$PositionCache.write(FSDataOutputStream.java:60)
at java.io.DataOutputStream.write(DataOutputStream.java:107)
at org.apache.hadoop.io.compress.CompressorStream.compress(CompressorStream.java:83)
at org.apache.hadoop.io.compress.CompressorStream.finish(CompressorStream.java:92)
at org.apache.hadoop.io.compress.CompressorStream.close(CompressorStream.java:105)
at java.io.FilterOutputStream.close(FilterOutputStream.java:160)
at org.apache.hadoop.mapreduce.lib.output.TextOutputFormat$LineRecordWriter.close(TextOutputFormat.java:111)
at org.apache.hadoop.mapred.ReduceTask$NewTrackingRecordWriter.close(ReduceTask.java:558)
at org.apache.hadoop.mapred.ReduceTask.runNewReducer(ReduceTask.java:637)
at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:390)
at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:167)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:415)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1548)
at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:162)

編輯

我做了一些進一步的嘗試但不幸的是我仍然遇到錯誤。 我認為由於下面評論中提到的復制因素,我的實例可能沒有足夠的內存,所以我嘗試使用大型而不是中型實例,直到現在我才進行實驗。 但這次我又得到了另一個例外:

Error: java.io.IOException: Error closing multipart upload
at com.amazon.ws.emr.hadoop.fs.s3n.MultipartUploadOutputStream.uploadMultiParts(MultipartUploadOutputStream.java:207)
at com.amazon.ws.emr.hadoop.fs.s3n.MultipartUploadOutputStream.close(MultipartUploadOutputStream.java:222)
at org.apache.hadoop.fs.FSDataOutputStream$PositionCache.close(FSDataOutputStream.java:72)
at org.apache.hadoop.fs.FSDataOutputStream.close(FSDataOutputStream.java:105)
at org.apache.hadoop.io.compress.CompressorStream.close(CompressorStream.java:106)
at java.io.FilterOutputStream.close(FilterOutputStream.java:160)
at org.apache.hadoop.mapreduce.lib.output.TextOutputFormat$LineRecordWriter.close(TextOutputFormat.java:111)
at org.apache.hadoop.mapred.ReduceTask$NewTrackingRecordWriter.close(ReduceTask.java:558)
at org.apache.hadoop.mapred.ReduceTask.runNewReducer(ReduceTask.java:637)
at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:390)
at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:167)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:415)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1548)
at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:162)
Caused by: java.util.concurrent.ExecutionException:       com.amazonaws.services.s3.model.AmazonS3Exception: The Content-MD5 you specified did not match what we received. (Service: Amazon S3; Status Code: 400; Error Code: BadDigest; 
at java.util.concurrent.FutureTask.report(FutureTask.java:122)
at java.util.concurrent.FutureTask.get(FutureTask.java:188) 

結果是只生成了大約70%的預期輸出文件,剩余的reduce任務失敗。 然后我嘗試將一個大文件上傳到我的S3存儲桶,以防沒有足夠的內存,但這似乎不是問題。

我正在使用aws Elastic MapReduce服務。 有任何想法嗎?

問題意味着沒有空間來存儲MapReduce作業的輸出(或臨時輸出)。

有些事情需要檢查:

  • 您是否從HDFS中刪除了不必要的文件? 運行hadoop dfs -ls /命令檢查存儲在HDFS上的文件。 (如果您使用垃圾箱,請確保將其清空。)
  • 您是否使用壓縮來存儲作業的輸出(或臨時輸出)? 您可以通過將SequenceFileOutputFormat設置為輸出格式,或者通過設置setCompressMapOutput(true);
  • 什么是復制因子? 默認情況下,它設置為3,但如果存在空間問題,您可能會冒險將其設置為2或1,以使程序運行。

可能會出現一些問題,即某些減速器輸出的數據量遠遠超過其他減速器,因此請檢查您的代碼。

我在AMI 3.2.x上沒有出現空間錯誤,我沒有在AMI 3.1.x上。 切換AMI,看看會發生什么。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM