hadoop MR 任務 報錯 "Error: java.io.IOException: Premature EOF from inputStream at org.apache.hadoop.io"


錯誤原文分析

文件操作超租期,實際上就是data stream操作過程中文件被刪掉了。通常是因為Mapred多個task操作同一個文件,一個task完成后刪掉文件導致。這個錯誤跟dfs.datanode.max.transfer.threads參數到達上限有關。這個是datanode同時處理請求的任務上限,總默認值是 4096,該參數取值范圍[1 to 8192]

hadoop docs hdfs-site.xml

dfs.datanode.max.transfer.threads   4096    
Specifies the maximum number of threads to use for transferring data in and out of the DN.

解決方案

  1. 修改$HADOOP_HOME/etc/hadoop/hdfs-site.xml, 增加如下內容:
    <property>
    <name>dfs.datanode.max.transfer.threads</name>
    <value>8192</value>
    </property>

    重啟hadoop 集群datanode
  2. 重新運行MR任務,跟同事討論過此問題,我們認為可能是這個MR前置任務各種網絡問題&異常導致數據丟失,最終導致 輸入數據不完整

參考鏈接

http://blog.csdn.net/zhoujj303030/article/details/44422415
https://issues.apache.org/jira/browse/HDFS-4723
http://permalink.gmane.org/gmane.comp.jakarta.lucene.hadoop.user/53521

版權聲明:本文為博主原創文章,未經博主允許不得轉載。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM