NameNode HA при использовании hdfs: // URI

Со схемой URI HDFS или HFTP (например,hdfs://namenode/path/to/file) Я могу получить доступ к кластерам HDFS, не требуя их файлов конфигурации XML. Это очень удобно при запуске команд оболочки, таких какhdfs dfs -get, hadoop distcp или чтение файлов из Spark, какsc.hadoopFile()потому что мне не нужно копировать и управлять XML-файлами для всех соответствующих кластеров HDFS на все узлы, которые могут потенциально выполняться этими кодами.

Одним из недостатков этого подхода является то, что я должен использовать имя хоста активного NameNode, в противном случае Hadoop выдаст исключение с жалобой на то, что NN находится в режиме ожидания.

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

Оба этих метода громоздки по сравнению с (например)URI нагрузки MySQL или жеСтрока подключения ZooKeeper где я могу просто разделить запятыми все хосты в URI, и драйвер автоматически найдет узел для связи.

Скажем, у меня есть активные и резервные хосты namenodenn1 а такжеnn2, Какой самый простой способ указать конкретный путь HDFS, который:

может использоваться в таких инструментах командной строки, какhdfs, hadoopможет использоваться в Hadoop Java API (и, следовательно, в зависимости от него, например, от Spark) с минимальной конфигурациейработает независимо от того, какой наменоде в данный момент активен.

Ответы на вопрос(1)

Ваш ответ на вопрос