NameNode HA bei Verwendung von hdfs: // URI

Mit HDFS- oder HFTP-URI-Schema (z. B.hdfs://namenode/path/to/file) Ich kann auf HDFS-Cluster zugreifen, ohne deren XML-Konfigurationsdateien zu benötigen. Es ist sehr praktisch, wenn Shell-Befehle wie @ ausgeführt werdehdfs dfs -get, hadoop distcp oder Lesen von Dateien aus Spark wiesc.hadoopFile(), da ich keine XML-Dateien für alle relevanten HDFS-Cluster kopieren und auf alle Knoten verwalten muss, auf denen diese Codes möglicherweise ausgeführt werden.

Ein Nachteil dieses Ansatzes ist, dass ich den Hostnamen des aktiven NameNode verwenden muss, da Hadoop andernfalls eine Ausnahme auslöst, in der beschwert wird, dass sich der NN im Standby-Modus befindet.

ine übliche Problemumgehung besteht darin, eine Ausnahme zu versuchen und dann eine andere zu versuchen, wenn eine Ausnahme festgestellt wird, oder eine direkte Verbindung zu ZooKeeper herzustellen und die Binärdaten mit protobuf zu analysiere

Beide dieser Methoden sind im Vergleich zu (zum Beispiel) @ umständli MySQL Loadbalance URI oder ZooKeepers Verbindungszeichenfolge wobei ich einfach alle Hosts in der URI durch Kommas trennen kann und der Treiber automatisch einen Knoten findet, mit dem er sprechen kann.

Say Ich habe aktive und Standby-Hosts mit Namensknotennn1 undnn2. Was ist der einfachste Weg, um auf einen bestimmten Pfad des HDFS zu verweisen, der:

kann in Befehlszeilentools wie @ verwendet werdhdfs, hadoopkann mit minimaler Konfiguration in der Hadoop Java API verwendet werden (und damit abhängig davon Tools wie Spark)works unabhängig davon, welcher namenode gerade aktiv ist.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage