问题:使用java连接hdfs当输入错误时,都需要等待很长时候或者停止程序,有没有什么办法设置我们的等待时间,客户端的超时连接有那些参数决定
参考:https://blog.csdn.net/zhanglong_4444/article/details/99471338
解决hdfs的超时连接有两个参数决定:ipc.client.connect.max.retries.on.timeouts 和ipc.client.connect.timeout两个参数决定第一个是尝试次数,第二个是超时的时间,也就是说我们尝试一个错误的服务需要等待的时间为两个参数的时间的乘积。
NetUtils.connect(this.socket, server, connectionTimeout);
if (rpcTimeout > 0) {
pingInterval = rpcTimeout; // rpcTimeout overwrites pingInterval
}
this.socket.setSoTimeout(pingInterval);
return;
} catch (ConnectTimeoutException toe) {
/* Check for an address change and update the local reference.
* Reset the failure counter if the address was changed
*/
if (updateAddress()) {
timeoutFailures = ioFailures = 0;
}
handleConnectionTimeout(timeoutFailures++,
maxRetriesOnSocketTimeouts, toe);
} catch (IOException ie) {
if (updateAddress()) {
timeoutFailures = ioFailures = 0;
}
handleConnectionFailure(ioFailures++, ie);
}
}
源码解析