HDFS客户端读写超时时间的示例分析

发布时间:2021-12-09 11:13:50 作者:小新
来源:亿速云 阅读:297

小编给大家分享一下HDFS客户端读写超时时间的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

背景

前段时间我们Hadoop集群磁盘使用率比较高,部分硬盘空间使用超过了70%,这部分服务器DataNode服务读写负载就比较高,造成部分数据同步任务因为读写超时而失败。具体场景和异常跟这篇博客里描述的很像。

DFSClient客户端与HDFS交互进行数据读写,需要从NameNode拿到元数据信息,再和DataNode交互,因此,超时时间也同时涉及这两个服务。以下分别是客户端与这两个服务交互的超时时间的解析。

客户端与NameNode超时时间

客户端与NameNode的操作超时时间由以下两个配置控制:

NameNode节点处于满负载、NameNode所在节点的CPU 100%耗尽时,导致NameNode无法响应,对于新连接到该NameNodeHDFS客户端,能够主备切换连接到另一个NameNode,进行正常的操作,而对于已经连接到该NameNode节点的HDFS客户端可能会卡住,无法进行下一步操作。

HDFS客户端到NameNodeRPC连接存在keep alive机制,保持连接不会超时,尽力等待服务器的响应,因此导致已经连接的HDFS客户端的操作会卡住。

对于已经卡住的HDFS客户端,可以进行如下操作:

为了避免该问题出现,在上述问题场景下,可以在客户端的配置文件core-site.xml中做如下配置:

客户端与DataNode读写超时时间

DataNode的读写超时时间由以下两个配置控制:

以上配置是在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客户端读写超时时间的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

推荐阅读:
  1. HDFS读写流程简介
  2. hadoop/hdfs的示例分析

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

hdfs

上一篇:Docker Consul集群环境搭建的方法是什么

下一篇:如何进行Pulsar Connector机制的剖析

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》