我使用 Hadoop 的
FileSystem
类来删除一些 HDFS 文件。现在的问题是,客户端在太长的持续时间后得到连接超时,我需要缩短等待超时的时间,以便用户在网络之外获得更快的响应!
这是我的代码片段:
try {
System.setProperty("HADOOP_USER_NAME", "test");
Configuration conf = new Configuration();
File csvFile = new File(pathCsvFile);
FileSystem hdfs = FileSystem.get(new URI(csvFile.getPath(), conf);
if(hdfs.exists(new Path(filterValuesPath))) {
hdfs.delete(new Path(filterValuesPath), true);
setInfo("File deleted!");
} else {
setInfo("No file to delete!");
}
} catch (Exception ex) { // the timeout is too high!!!
ex.printStackTrace();
setInfo("No connection or no files to delete!");
}
在哪里以及如何设置应用程序的超时?我不想在任何 Hadoop 配置文件中更改此设置,只想在本地为我的 Java 应用程序更改此设置。谢谢!
有一个配置键“ipc.client.connect.timeout”,它“表示客户端等待连接的毫秒数” 建立服务器连接的“socket”。您可以直接设置或通过
org.apache.hadoop.ipc.Client#setConnectTimeout(Configuration conf, int timeout)