HDFS von Java - Angabe des Benutzer -
Ich bin glücklich den Anschluss zu HDFS und Auflistung meiner home-Verzeichnis:
Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://hadoop:8020");
conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");
FileSystem fs = FileSystem.get(conf);
RemoteIterator<LocatedFileStatus> ri = fs.listFiles(fs.getHomeDirectory(), false);
while (ri.hasNext()) {
LocatedFileStatus lfs = ri.next();
log.debug(lfs.getPath().toString());
}
fs.close();
Was ich bin zu wollen tun, jetzt aber ist die Verbindung als ein bestimmter Benutzer (nicht die whois-Benutzer). Weiß jemand, wie Sie festlegen, welcher Benutzer Sie sich verbinden, wie?
hi ich habe versucht, diesen code, um eine Verbindung zu einem remote-hdfs-Instanz, aber bekomme ich Exception in thread "main" java.lang.UnsupportedOperationException: Nicht implementiert durch die DistributedFileSystem Dateisystem Implementierung
wissen Sie, wie Sie dieses Problem lösen?
Ich habe diese Frage vor mehr als 2 Jahren. Hadoop hat einen langen Weg seit damals. Soweit genauen Implementierungen gehen, Dinge, die womöglich auf eine andere Weise getan jetzt.
oh, ok, macht Sinn. allerdings, wenn Sie noch in der Entwicklung, in-hadoop und etwas ähnliches, lasst es mich bitte wissen. ich habe zu kämpfen mit diesem für eine Weile. ich habe auch gebeten, ein paar Fragen, stackoverflow.com/questions/33610916/... und stackoverflow.com/questions/33681940/...
wenn Sie einige Zeit, bitte versuchen Sie es zu post eine Antwort. ich wäre ewig dankbar. Dank
wissen Sie, wie Sie dieses Problem lösen?
Ich habe diese Frage vor mehr als 2 Jahren. Hadoop hat einen langen Weg seit damals. Soweit genauen Implementierungen gehen, Dinge, die womöglich auf eine andere Weise getan jetzt.
oh, ok, macht Sinn. allerdings, wenn Sie noch in der Entwicklung, in-hadoop und etwas ähnliches, lasst es mich bitte wissen. ich habe zu kämpfen mit diesem für eine Weile. ich habe auch gebeten, ein paar Fragen, stackoverflow.com/questions/33610916/... und stackoverflow.com/questions/33681940/...
wenn Sie einige Zeit, bitte versuchen Sie es zu post eine Antwort. ich wäre ewig dankbar. Dank
InformationsquelleAutor Kong | 2013-05-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sobald ich sehe dies geschieht durch
UserGroupInformation
Klasse undPrivilegedAction
oderPrivilegedExceptionAction
. Hier ist Beispielcode, um eine Verbindung zum remote-HDFS 'wie' verschiedene Benutzer ('hbase" in diesem Fall). Hoffe das wird die Lösung für Ihre Aufgabe. In Fall müssen Sie einen vollständigen System mit Authentifizierung müssen Sie die Benutzer zu verbessern handling. Aber für SIMPLE authentication scheme (eigentlich keine Authentifizierung) funktioniert es Prima.org.apache.hadoop.security.UserGroupInformation
ist der key-Klasse hier und es kann angegeben werden, 'remote-user' durchcreateRemoteUser()
. So Hadoop-Clusters sieht Sie als Benutzer, die Sie angegeben haben nidependent Ihrer lokalen Benutzer an. Natürlich funktioniert dies nur, wenn Ihre Hadoop-Clusters vertraut Ihnen (EINFACHE Authentifizierung, die eigentlich keiner). Mit Kerberous Sie zusätzlich brauchen, um die Beweise.ich habe versucht, aber ich bekomme java.lang.UnsupportedOperationException: Nicht implementiert durch die DistributedFileSystem Dateisystem Implementierung
Wie Sie sehen können die Menschen aktiv zu nutzen und ich habe nur 2 Vermutungen für Sie: 1) Check exception stacktraace, um Grundursachen zu bestimmen. 2) Überprüfen Sie Ihre Adressen / ports / Pfade. Vielleicht haben Sie nur die Verwendung falscher Benutzername.
wie kann ich eine Liste mit korrekten Benutzernamen? bitte verzeihen Sie mir, wenn dies ist eine grundlegende Frage, aber ich bin ganz neu mit hadoop und unix
InformationsquelleAutor Roman Nikitchenko
Wenn ich dich richtig ist, alles, was Sie wollen, ist zu bekommen home-Verzeichnis des Benutzers, wenn angegeben und nicht die whois-Benutzer.
In der Sie die Konfigurationsdatei, setzt Ihr homedir-Eigenschaft user/${user.name}. Stellen Sie sicher, Sie haben eine system-Eigenschaft mit dem Namen Benutzer.name
Dies funktionierte in meinem Fall.
Ich hoffe das ist, was Sie tun möchten, Wenn nicht einen Kommentar hinzufügen.
InformationsquelleAutor sadhu