全部產品
Search
文件中心

E-MapReduce:寫入檔案提示DataXceiver Premature EOF from inputStream

更新時間:Jul 01, 2024

本文介紹寫入檔案提示DataXceiver Premature EOF from inputStream異常的解決方案。

具體報錯

DataXceiver error processing WRITE_BLOCK operation src: /10.*.*.*:35692 dst: /10.*.*.*:50010 java.io.IOException: Premature EOF from inputStream

問題原因

通常為了不斷地向HDFS寫入新的資料,作業會開啟較多的HDFS檔案寫入流(Stream)。但HDFS允許同時開啟的檔案數量是有限的,受限於DataNode參數,超過限制就會出現DataXceiver Premature EOF from inputStream異常。

解決方案

查看DataNode日誌,參見HDFS服務日誌,一般會有如下報錯。

java.io.IOException: Xceiver count 4097 exceeds the limit of concurrent xcievers: 4096
at org.apache.hadoop.hdfs.server.datanode.DataXceiverServer.run(DataXceiverServer.java:150)

如果存在報錯,可通過以下方式解決:

  1. 登入E-MapReduce控制台

  2. 在頂部功能表列處,根據實際情況選擇地區和資源群組

  3. 進入HDFS服務的配置頁面。

    1. 叢集管理頁面,單擊目的地組群操作列的叢集服務

    2. 叢集服務頁面,單擊HDFS服務地區的配置

  4. 在配置搜尋地區,搜尋參數dfs.datanode.max.transfer.threads,並適當地調大該參數值,一般建議翻倍增加,例如8192、16384。

    說明

    dfs.datanode.max.transfer.threads參數表示DataNode處理讀寫資料流的線程池大小,預設值為4096個。