中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

HDFS客戶端讀寫超時時間的示例分析

發布時間:2021-12-09 11:13:50 來源:億速云 閱讀:293 作者:小新 欄目:大數據

小編給大家分享一下HDFS客戶端讀寫超時時間的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

背景

前段時間我們Hadoop集群磁盤使用率比較高,部分硬盤空間使用超過了70%,這部分服務器DataNode服務讀寫負載就比較高,造成部分數據同步任務因為讀寫超時而失敗。具體場景和異常跟這篇博客里描述的很像。

DFSClient客戶端與HDFS交互進行數據讀寫,需要從NameNode拿到元數據信息,再和DataNode交互,因此,超時時間也同時涉及這兩個服務。以下分別是客戶端與這兩個服務交互的超時時間的解析。

客戶端與NameNode超時時間

客戶端與NameNode的操作超時時間由以下兩個配置控制:

  • ipc.client.ping:默認值是true。當配置為true時,客戶端會盡力等待服務端響應,定期發送ping消息,使得連接不會因為tcp timeout而斷開。當配置為false時,客戶端會使用配置項ipc.ping.interval對應的值,作為timeout時間,在該時間內沒有得到響應,即會超時。

  • ipc.ping.interval:以毫秒為單位,默認值是1分鐘。當ipc.client.ping配置為true時,表示發送ping消息的周期。當ipc.client.ping設置為false時,表示連接的超時時間。

NameNode節點處于滿負載、NameNode所在節點的CPU 100%耗盡時,導致NameNode無法響應,對于新連接到該NameNodeHDFS客戶端,能夠主備切換連接到另一個NameNode,進行正常的操作,而對于已經連接到該NameNode節點的HDFS客戶端可能會卡住,無法進行下一步操作。

HDFS客戶端到NameNodeRPC連接存在keep alive機制,保持連接不會超時,盡力等待服務器的響應,因此導致已經連接的HDFS客戶端的操作會卡住。

對于已經卡住的HDFS客戶端,可以進行如下操作:

  • 等待NameNode響應,一旦NameNode所在節點的CPU利用率回落,NameNode可以重新獲得CPU資源時,HDFS客戶端即可得到響應。

  • 如果無法等待更長時間,需要重啟HDFS客戶端所在的應用程序進程,使得HDFS客戶端重新連接空閑的NameNode

為了避免該問題出現,在上述問題場景下,可以在客戶端的配置文件core-site.xml中做如下配置:

  • ipc.client.ping配置為false,讓客戶端會使用配置項ipc.ping.interval對應的值,作為timeout時間,在該時間內沒有得到響應,即會超時

  • ipc.ping.interval配置一個較大的超時時間,避免服務繁忙時的超時,建議配置為900000,單位為ms

客戶端與DataNode讀寫超時時間

DataNode的讀寫超時時間由以下兩個配置控制:

  • 讀超時時間:dfs.client.socket-timeout。默認值1分鐘。

  • 寫超時時間:dfs.datanode.socket.write.timeout。默認8分鐘。

以上配置是在HDFS客戶端進行設置,它們的默認值在org.apache.hadoop.hdfs.server.common.HdfsServerConstants類里:

// Timeouts for communicating with DataNode for streaming writes/reads
  // DataNode讀寫超時時間
  public static final int READ_TIMEOUT = 60 * 1000;
  public static final int READ_TIMEOUT_EXTENSION = 5 * 1000;
  public static final int WRITE_TIMEOUT = 8 * 60 * 1000;
  public static final int WRITE_TIMEOUT_EXTENSION = 5 * 1000; //for write pipeline

DataNode讀寫超時的時間是跟DataNode的數量有關的,最終是根據DataNode的數量確定讀寫超時時間,計算方式是以讀寫超時時間的值乘以節點的數量,邏輯在org.apache.hadoop.hdfs.DFSClient類里:

/**
 * Return the timeout that clients should use when writing to datanodes.
 * @param numNodes the number of nodes in the pipeline. 管道中節點的數量
 */
int getDatanodeWriteTimeout(int numNodes) {
  return (dfsClientConf.confTime > 0) ?
    (dfsClientConf.confTime + HdfsServerConstants.WRITE_TIMEOUT_EXTENSION * numNodes) : 0;
}

int getDatanodeReadTimeout(int numNodes) {
  return dfsClientConf.socketTimeout > 0 ?
      (HdfsServerConstants.READ_TIMEOUT_EXTENSION * numNodes +
          dfsClientConf.socketTimeout) : 0;
}

以上是“HDFS客戶端讀寫超時時間的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

额敏县| 察雅县| 汽车| 响水县| 天等县| 会东县| 天门市| 永新县| 吉林省| 万荣县| 平安县| 溧阳市| 扶绥县| 巴林左旗| 宜宾县| 浙江省| 永兴县| 旬阳县| 大同县| 台前县| 张家界市| 德令哈市| 同仁县| 临夏市| 大化| 阿坝| 南江县| 沂南县| 政和县| 四子王旗| 馆陶县| 永昌县| 教育| 汉源县| 济源市| 佛学| 常宁市| 沿河| 七台河市| 乌苏市| 林口县|