真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

HDFS客戶端讀寫超時(shí)時(shí)間的示例分析

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

創(chuàng)新互聯(lián)是一家專業(yè)提供城北企業(yè)網(wǎng)站建設(shè),專注與成都做網(wǎng)站、成都網(wǎng)站建設(shè)、H5場(chǎng)景定制、小程序制作等業(yè)務(wù)。10年已為城北眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站制作公司優(yōu)惠進(jìn)行中。

背景

前段時(shí)間我們Hadoop集群磁盤使用率比較高,部分硬盤空間使用超過了70%,這部分服務(wù)器DataNode服務(wù)讀寫負(fù)載就比較高,造成部分?jǐn)?shù)據(jù)同步任務(wù)因?yàn)樽x寫超時(shí)而失敗。具體場(chǎng)景和異常跟這篇博客里描述的很像。

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

客戶端與NameNode超時(shí)時(shí)間

客戶端與NameNode的操作超時(shí)時(shí)間由以下兩個(gè)配置控制:

  • ipc.client.ping:默認(rèn)值是true。當(dāng)配置為true時(shí),客戶端會(huì)盡力等待服務(wù)端響應(yīng),定期發(fā)送ping消息,使得連接不會(huì)因?yàn)?code>tcp timeout而斷開。當(dāng)配置為false時(shí),客戶端會(huì)使用配置項(xiàng)ipc.ping.interval對(duì)應(yīng)的值,作為timeout時(shí)間,在該時(shí)間內(nèi)沒有得到響應(yīng),即會(huì)超時(shí)。

  • ipc.ping.interval:以毫秒為單位,默認(rèn)值是1分鐘。當(dāng)ipc.client.ping配置為true時(shí),表示發(fā)送ping消息的周期。當(dāng)ipc.client.ping設(shè)置為false時(shí),表示連接的超時(shí)時(shí)間。

當(dāng)NameNode節(jié)點(diǎn)處于滿負(fù)載、NameNode所在節(jié)點(diǎn)的CPU 100%耗盡時(shí),導(dǎo)致NameNode無(wú)法響應(yīng),對(duì)于新連接到該NameNodeHDFS客戶端,能夠主備切換連接到另一個(gè)NameNode,進(jìn)行正常的操作,而對(duì)于已經(jīng)連接到該NameNode節(jié)點(diǎn)的HDFS客戶端可能會(huì)卡住,無(wú)法進(jìn)行下一步操作。

HDFS客戶端到NameNodeRPC連接存在keep alive機(jī)制,保持連接不會(huì)超時(shí),盡力等待服務(wù)器的響應(yīng),因此導(dǎo)致已經(jīng)連接的HDFS客戶端的操作會(huì)卡住。

對(duì)于已經(jīng)卡住的HDFS客戶端,可以進(jìn)行如下操作:

  • 等待NameNode響應(yīng),一旦NameNode所在節(jié)點(diǎn)的CPU利用率回落,NameNode可以重新獲得CPU資源時(shí),HDFS客戶端即可得到響應(yīng)。

  • 如果無(wú)法等待更長(zhǎng)時(shí)間,需要重啟HDFS客戶端所在的應(yīng)用程序進(jìn)程,使得HDFS客戶端重新連接空閑的NameNode。

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

  • ipc.client.ping配置為false,讓客戶端會(huì)使用配置項(xiàng)ipc.ping.interval對(duì)應(yīng)的值,作為timeout時(shí)間,在該時(shí)間內(nèi)沒有得到響應(yīng),即會(huì)超時(shí)

  • ipc.ping.interval配置一個(gè)較大的超時(shí)時(shí)間,避免服務(wù)繁忙時(shí)的超時(shí),建議配置為900000,單位為ms

客戶端與DataNode讀寫超時(shí)時(shí)間

DataNode的讀寫超時(shí)時(shí)間由以下兩個(gè)配置控制:

  • 讀超時(shí)時(shí)間:dfs.client.socket-timeout。默認(rèn)值1分鐘。

  • 寫超時(shí)時(shí)間:dfs.datanode.socket.write.timeout。默認(rèn)8分鐘。

以上配置是在HDFS客戶端進(jìn)行設(shè)置,它們的默認(rèn)值在org.apache.hadoop.hdfs.server.common.HdfsServerConstants類里:

// Timeouts for communicating with DataNode for streaming writes/reads
  // DataNode讀寫超時(shí)時(shí)間
  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讀寫超時(shí)的時(shí)間是跟DataNode的數(shù)量有關(guān)的,最終是根據(jù)DataNode的數(shù)量確定讀寫超時(shí)時(shí)間,計(jì)算方式是以讀寫超時(shí)時(shí)間的值乘以節(jié)點(diǎn)的數(shù)量,邏輯在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. 管道中節(jié)點(diǎn)的數(shù)量
 */
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客戶端讀寫超時(shí)時(shí)間的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


當(dāng)前標(biāo)題:HDFS客戶端讀寫超時(shí)時(shí)間的示例分析
網(wǎng)頁(yè)地址:http://weahome.cn/article/jshied.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部