在Java应用程序中设置HDFS连接超时

问题描述 投票:0回答:1

我使用 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 应用程序更改此设置。谢谢!

hadoop timeout hdfs timeoutexception socket-timeout-exception
1个回答
0
投票

有一个配置键“ipc.client.connect.timeout”,它“表示客户端等待连接的毫秒数” 建立服务器连接的“socket”。您可以直接设置或通过

org.apache.hadoop.ipc.Client#setConnectTimeout(Configuration conf, int timeout)

© www.soinside.com 2019 - 2024. All rights reserved.