分享

hadoop及hbase的超时设置

阿飞 2014-4-30 18:23:12 发表于 小知识点 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 0 23216
本帖最后由 阿飞 于 2014-4-30 18:26 编辑
问题导读:
1.hadoop超时,该如何设置超时时间?
2.hbase超时时间限制,该如何设置?






最近在测试mysql往HDFS备份的性能问题,发现对mysql执行xtrabackup进行限速之后经常出现HDFS写入不正常的情况。

1. 错误如下:

11/10/12 10:50:44 WARN hdfs.DFSClient: DFSOutputStream ResponseProcessor exception for block blk_8540857362443890085_4343699470java.net.SocketTimeoutException: 66000 millis timeout while waiting for channel to be ready for read. ch : java.nio.channels.SocketChannel[connected local=/172.*.*.*:14707 remote=/*.*.*.24:80010]


2. 修改超时设置

后来发现HDFS写入过程中有两个超时设置: dfs.socket.timeout和 dfs.datanode.socket.write.timeout;有些地方以为只是需要修改后面 的dfs.datanode.socket.write.timeout项就可以,其实看报错是READ_TIMEOUT。对应在hbase中的默认值如下:

  1. // Timeouts for communicating with DataNode for streaming writes/reads
  2. public static int READ_TIMEOUT = 60 * 1000; //其实是超过了这个值
  3. public static int READ_TIMEOUT_EXTENSION = 3 * 1000;
  4. public static int WRITE_TIMEOUT = 8 * 60 * 1000;
  5. public static int WRITE_TIMEOUT_EXTENSION = 5 * 1000; //for write pipeline
复制代码



3. 修改配置文件

所以找出来是超时导致的,所以在hadoop-site.xml配置文件中添加如下配置:

  1. <property>
  2. <name>dfs.datanode.socket.write.timeout</name>
  3. <value>3000000</value>
  4. </property>
复制代码
  1. <property>
  2. <name>dfs.socket.timeout</name>
  3. <value>3000000</value>
  4. </property>
  5. </configuration>
复制代码

本帖被以下淘专辑推荐:

没找到任何评论,期待你打破沉寂

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条