Использование Консула для переключения при отказе hadoop hdfs
Я пытаюсь работать с Hadoop Java Client и использую Consul для маршрутизации на текущий активный узел имени в моем кластере. Мой кластер клоудера и использую HA. Когда активный наменод изменяется с помощью hadoop Consul, он также немедленно меняет разрешение на новый активный наменоде. Я хочу подключиться к HDFS снаружи кластера hadoop.
Я пытаюсь очень простой код в цикле, без какой-либо конкретной конфигурации.
try {
Configuration conf = new Configuration();
conf.set("fs.defaultFS", activeHdfsNameNodeBehindConsul);
FileSystem fs = FileSystem.get(conf);
Path pathToDirectory = new Path("/user/");
if (!fs.exists(pathToDirectory)) {
System.out.println("HDFS PATH EXIST");
} else{
System.out.println("HDFS PATH NOT EXIST");
}
} catch (IOException e) {
e.printStackTrace()
}
Когда я начинаю работать, я вижу в журналах, что имя узла разрешено правильно, но когда я выполняю аварийное переключение вручную, я получаю следующую ошибку:
Operation category READ is not supported in state standby. Visit https://s.apache.org/sbnn-error
at org.apache.hadoop.hdfs.server.namenode.ha.StandbyState.checkOperation(StandbyState.java:88)
at org.apache.hadoop.hdfs.server.namenode.NameNode$NameNodeHAContext.checkOperation(NameNode.java:1836)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.checkOperation(FSNamesystem.java:1433)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getFileInfo(FSNamesystem.java:4245)
at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.getFileInfo(NameNodeRpcServer.java:897)
at org.apache.hadoop.hdfs.server.namenode.AuthorizationProviderProxyClientProtocol.getFileInfo(AuthorizationProviderProxyClientProtocol.java:528)
Похоже, клиент Hadoop все еще пытается подключиться к предыдущему сохраненному IP-адресу, а не к уже измененному IP-адресу нового активного наменода.
Я видел много похожих вопросов о проблеме одного URI для НА-наменод, но без какого-либо решения. Теперь у меня есть решение, но мне нужно знать, как очистить IP-кеш клиента hadoop.
Кто-нибудь знает, как отключить разрешение IP внутреннего кэша для клиента HDFS, чтобы он выполнял поиск IP активного наменода при каждом вызове?