Автоматически подключаться к вторичной NN HDFS из приложения Java, как только первичная NN выходит из строя.

У меня есть простой java-клиент, который сохраняет файлы в HDFS, настроенный с 1 узлом имени. Для этого я использую конфигурацию hadoop, указав файловую систему по умолчанию, например:

org.apache.hadoop.conf.Configuration conf = new org.apache.hadoop.conf.Configuration();
conf.set("fs.defaultFS", "hdfs://NNip:port");

Однако в будущем мне нужно будет подключиться к hdfs, настроенному с 1 активным namenode и 1 резервным namenode, и в случае выхода из строя активного namenode автоматически использовать резервный namenode.

Есть ли у кого-нибудь какие-либо советы о том, как это может быть достигнуто? Буду очень признателен за любую ссылку/пример, так как я все еще новичок во всем, что связано с платформой Hadoop.

Спасибо


person Asleep    schedule 18.01.2018    source источник


Ответы (1)


Переменная Configuration по умолчанию считывает файл hdfs-site.xml в вашем пути к классам.

В идеале вы должны иметь этот файл с вашим Java-приложением или иным образом определить переменную среды HADOOP_CONF_DIR в ОС. Например, так работают инструменты hdfs CLI, которые просто перенаправляют в классы Java.

Затем, если ваш кластер использует Namenode HA, он уже должен знать, какое значение установлено для fs.defaultFS, поэтому вам не нужно устанавливать его самостоятельно.

Если вы хотите сделать это программно, вам нужно настроить Zookeeper для узлов имен и "nameservice" для HDFS, свойства которых можно найти в этот XML-файл

person OneCricketeer    schedule 18.01.2018