Ich habe einen Hadoop-Cluster mit vier Knoten auf Softlayer. Der Master (NameNode) hat eine öffentliche IP-Adresse für den externen Zugriff und eine private IP-Adresse für den Clusterzugriff. Die Slave-Knoten (Datenknoten) haben eine private IP-Adresse, die ich versuche, eine Verbindung zum Master herzustellen, ohne jedem Slave-Knoten öffentliche IP-Adressen zuweisen zu müssen.
Ich habe festgestellt, dass das Setzen von fs.defaultFS
auf die öffentliche Adresse des NameNode externen Zugriff ermöglicht, außer dass der NameNode nur auf diese Adresse für eingehende Verbindungen hört, nicht die private Adresse. Daher erhalte ich in den Datanode-Protokollen ConnectionRefused-Ausnahmen, wenn sie versuchen, eine Verbindung mit der privaten IP-Adresse des NameNode herzustellen.
Ich dachte, die Lösung bestünde darin, sowohl die öffentliche als auch die private IP-Adresse auf den NameNode zu setzen, so dass der externe Zugriff erhalten bleibt und auch meinen Slave-Knoten eine Verbindung ermöglicht.
Gibt es also eine Möglichkeit, beide Adressen an den NameNode zu binden, so dass er beide abhört?
Bearbeiten: Hadoop-Version 2.4.1.
Der Fragesteller hat dies in seiner Frage als Antwort editiert:
Legen Sie in hdfs-site.xml den Wert von
dfs.namenode.rpc-bind-host
auf fest0.0.0.0
und Hadoop hören sowohl privat als auch öffentlich zu Netzwerkschnittstellen, die Fernzugriff und Datenzugriff ermöglichen.
Tags und Links java hadoop distributed-computing network-programming cluster-computing