Bitte überprüfen NameNode HA-Architektur mit den wichtigsten Einrichtungen in HDFS Client-Anforderungen behandeln.
Wo diese Anforderung zuerst gehen? Ich meine, wie würde Klient wissen, welche Namenkode aktiv ist?
Für den Client/Treiber ist es egal, welcher namenode aktiv ist. weil wir HDFS mit der Nameservice-ID und nicht mit dem Hostnamen von Nomenode abfragen. Nameservice überträgt Clientanforderungen automatisch an den aktiven Namen.
Beispiel: hdfs://nameservice_id/rest/of/the/hdfs/path
Erläuterung:
Wie das hdfs://nameservice_id/
funktioniert und was sind die confs daran beteiligt?
In hdfs-site.xml
Datei
ein Name-Service erstellen, indem sie ein id ihm hinzufügen (hier nameservice_id
ist mycluster
)
<property>
<name>dfs.nameservices</name>
<value>mycluster</value>
<description>Logical name for this new nameservice</description>
</property>
Jetzt namenodes in Cluster bestimmen
dfs.ha.namenodes.[$nameservice ID]
NameNode IDs angeben:
<property>
<name>dfs.ha.namenodes.mycluster</name>
<value>nn1,nn2</value>
<description>Unique identifiers for each NameNode in the nameservice</description>
</property>
verknüpfen Dann NameNode ids mit NameNode Gastgeber
dfs.namenode.rpc-address.[$nameservice ID].[$name node ID]
<property>
<name>dfs.namenode.rpc-address.mycluster.nn1</name>
<value>machine1.example.com:8020</value>
</property>
<property>
<name>dfs.namenode.rpc-address.mycluster.nn2</name>
<value>machine2.example.com:8020</value>
</property>
Danach geben Sie die Java-Klasse, die Clients verwenden, um Kontakt mit den Active NameNode HDFS so dass DFS-Client diese Klasse verwendet , um zu bestimmen, welche NameNode bedient derzeit Kundenanfragen.
Schließlich wird HDFS URL nach diesen Konfigurationsänderungen wie folgt aussehen.
hdfs://mycluster/<file_lication_in_hdfs>
Um Ihre Frage zu beantworten, ich wenige Konfiguration nur genommen haben. Überprüfen Sie bitte die detailed documentation für, wie Nameoden, Journalnodes und Zookeeper-Maschinen NameNode HA in HDFS bilden.
Ich denke, du hast meine Frage nicht richtig verstanden. Ich benutze Java-Anwendung, um Anfrage zu stellen .. Meine Frage ist, auf welcher nomenode ich meine Anfragen. Dazu muss ich wissen, welcher namenode aktiv ist – user2846382
@ user2846382: Sie müssen die Konfiguration in der Treiberklasse festlegen. Bitte beachten Sie die aktualisierte Antwort. –
, Vielen Dank für Ihre wertvolle Antwort .. Es funktioniert für mich .. – user2846382