2015-12-10 4 views
26

Ich bin Funken läuft auf Windows 7. Wenn ich Hive verwenden, ich sehe den folgenden FehlerDas root scratch dir:/tmp/hive in HDFS sollte beschreibbar sein. Aktuelle Berechtigungen sind: rw-rw-rw- (unter Windows)

The root scratch dir: /tmp/hive on HDFS should be writable. Current permissions are: rw-rw-rw- 

Die Berechtigungen wie die folgende

gesetzt
C:\tmp>ls -la 
total 20 
drwxr-xr-x 1 ADMIN Administ  0 Dec 10 13:06 . 
drwxr-xr-x 1 ADMIN Administ 28672 Dec 10 09:53 .. 
drwxr-xr-x 2 ADMIN Administ  0 Dec 10 12:22 hive 

Ich habe "alle Kontrolle" für alle Benutzer von Windows-> Eigenschaften-> Sicherheit-> Erweitert.

Aber ich sehe immer noch den gleichen Fehler. Irgendwelche Hilfe bitte? Ich habe eine Reihe von Links überprüft, einige sagen, dass dies ein Fehler auf Spark 1.5 ist. Ist das wahr?

Dank Aarthi

Antwort

0

Kann versuchen Sie es 777 Berechtigung für den Ordner/tmp/hive geben weil das, was ich denke, dass Funken läuft als anonymer Benutzer ist (die in anderen Benutzerkategorie kommen wird) und diese Erlaubnis sollte rekursiv. hatte ich das gleiche Problem mit 1.5.1-Version von Funken für Bienenstock, und es funktionierte von 777 Berechtigung für Linux unter Befehl geben

chmod -r 777 /tmp/hive 
+2

Dank. Ich habe das versucht. Hat nicht funktioniert .. Hast du das unter Windows? – user1384205

+0

Nein, ich hatte dieses Problem auf Ubuntu, und es hat funktioniert. –

+1

Die Frage ist über dieses Problem in Windows-Umgebung nicht unix. Und selbst dann wird das chmod nicht alleine unter einer Root-Ebene/tmp funktionieren. Das ist der richtige Befehl für Unix, Sudo Chmod -R 777/tmp/Bienenstock – nitinr708

5

Sie benötigen dieses Verzeichnisses der Berechtigungen auf HDFS setzen, nicht die lokale Dateisystem. /tmp bedeutet nicht C:\tmp, es sei denn, Sie setzen fs.defaultFs in core-site.xml auf file://c:/, was wahrscheinlich eine schlechte Idee ist.

Check it es

hdfs dfs -ls /tmp 

Set mit

hdfs dfs -chmod 777 /tmp/hive 
49

Stellen Sie zunächst sicher, dass Sie die richtigen Winutils für Ihr Betriebssystem verwenden. Der nächste Schritt sind Berechtigungen.
Auf Windows müssen Sie folgenden Befehl auf cmd auszuführen:

D:\winutils\bin\winutils.exe chmod 777 D:\tmp\hive 

Hoffnung, die Sie winutils bereits n gesetzt die HADOOP_HOME heruntergeladen haben.

+4

@ user1384205: Wenn Sie denken, es hat Ihnen geholfen, können Sie die Antwort akzeptieren, so dass es anderen helfen wird zu verwenden –

+0

Es spielt eine Rolle, wenn Sie es sind Verwenden der 64-Bit- oder 32-Bit-Version von Winutils. Ich habe das wiederholt ausgeführt und es sah so aus, als wären Berechtigungen korrekt gesetzt worden (über 'winutils ls'), aber nur wenn ich winutils.exe ersetzte, hat es funktioniert. – wrschneider

+1

Dies löste das Problem. Ursprünglich hatte ich allerdings die falschen Winutils. Ich benutze Windows 10, 64 bit und die winutils.exe an diesem Ort [https://osdn.net/projects/win-hadoop/downloads/62852/hadoop-winutils-2.6.0.zip/] funktioniert für mich –

8

Nächste Lösung arbeitete unter Windows für mich:

  • Zuerst habe ich HADOOP_HOME definiert. Er beschrieb im Detail here
  • Als nächstes habe ich wie Nishu Tayal, aber mit einem Unterschied: C:\temp\hadoop\bin\winutils.exe chmod 777 \tmp\hive

\tmp\hive ist nicht lokales Verzeichnis

+0

Danke Viktor. Aber ich bekomme den folgenden Fehler, wenn ich Ihre Lösung versuche. C: \ Programme \ winutil \ bin> winutils.exe chmod 777 \ tmp \ Vektor ChangeFileModeByMask Fehler (5): Zugriff verweigert. – user1384205

+0

Sie müssen die Eingabeaufforderung oder cygwin als Administrator ausführen, damit der Befehl funktioniert –

18

Der erste, was zuerst Ihren Computer Domäne überprüfen.Versuchen

c:\work\hadoop-2.2\bin\winutils.exe ls c:/tmp/hive 

Wenn dieser Befehl sagt Zugriff verweigert oder FindFileOwnerAndPermission Fehler (1789): Die Vertrauensstellung zwischen dieser Arbeitsstation und der primären Domäne fehlgeschlagen.

Es bedeutet, dass Ihr Computer Domänencontroller nicht erreichbar ist, möglicher Grund könnte sein, dass Sie nicht auf demselben VPN wie Ihr System Domain Controller sind. Verbinden Sie sich mit VPN und versuchen Sie es erneut.

Jetzt versuchen Sie die von Viktor oder Nishu zur Verfügung gestellte Lösung.

+1

Dies funktionierte für mich, ich musste eine Verbindung zu einem VPN herstellen, um auf mein Domänencontroller-Netzwerk zuzugreifen. warte irgendwann und führte dann den Befehl chmod 777 aus. – Mahesh

+0

Das hat bei mir funktioniert. – sveerap

+0

Ich habe die% HADOOP_HOME% \ bin \ winutils.exe chmod 777 c: \ tmp \ hive immer und immer wieder gemacht, und wurde verwirrt, warum die Berechtigungen nicht richtig eingestellt wurden, das war ein absoluter Lebensretter. –

3

Fehler beim Starten der Spark-Shell auf VM unter Windows: Fehler msg: Der Root-Scratch dir:/tmp/Hive auf HDFS sollte beschreibbar sein. Berechtigung verweigert

Lösung: /tmp/hive ist temporäres Verzeichnis. Nur temporäre Dateien werden in diesem Speicherort gespeichert. Kein Problem, auch wenn wir dieses Verzeichnis löschen, wird erstellt, wenn mit den entsprechenden Berechtigungen erforderlich ist. In hdfs

Schritt 1) ​​Entfernen Sie die/tmp/hive Verzeichnis ==> "hdfs dfs -rm -r/tmp/hive"

2) Auf OS-Ebene löschen das Verzeichnis/tmp/hive ==> rm -rf/tmp/hive

Danach begann die Funke-Shell und es funktioniert gut ..

+1

Diese Antwort kann 4 Monate zu spät sein, aber das hat mir geholfen. – Sidhartha

1

Ausgabe in Funken Version behoben 2.0.2 (14. November 2016). Verwenden Sie diese Version. Version 2.1.0 28. Dezember 2016 Release hat die gleichen Probleme.

+0

Für mich auf einer Windows-Maschine war dies die Antwort, die mich in die richtige Richtung drückte. Ich habe auch einen anderen Fehler, aber konnte diesen Fehler mit Hilfe der zweiten Antwort des folgenden [Post] lösen (http://stackoverflow.com/questions/38863003/sparkr-from-rstudio-gives-error-in-invokejavaisstatic- true-classname-meth) – Tobias

0

Der Hauptgrund ist, dass Sie den Funken bei falschem Verzeichnis gestartet haben. Sie erstellen Ordner in D: // tmp/hive (volle Berechtigungen geben) und Ihre Funken in D starten: Antrieb D:> Funken Schale

jetzt funktioniert es .. :)

0

ich auch konfrontiert dieses Problem. Dieses Problem bezieht sich auf das Netzwerk. Ich habe Spark unter Windows 7 mit einer bestimmten Domäne installiert.

Domainname kann geprüft werden Start -> Computer -> Rechtsklick -> Eigenschaften -> Computername, Domäne und Arbeitsgruppe -> klicken Sie auf ändern -> Computername (Tab) -> Klicken Sie auf Ändern -> Domainname .

Wenn ich Spark-Shell-Befehl ausführen, funktioniert es einwandfrei, ohne Fehler.

In anderen Netzwerken habe ich Schreibberechtigungsfehler erhalten. Um diesen Fehler zu vermeiden, führen Sie den Befehl spark für die im obigen Pfad angegebene Domäne aus.

+0

Sie sagten es selbst, es funktionierte für einen anderen Benutzer/Domäne. Was bedeutet, dass es ein Berechtigungsproblem ist, kein Netzwerk. Danke für einen ehrlichen Versuch – nitinr708

0

Die korrekte Version von winutils.exe hat den Trick für mich getan. Die Winutils sollten von der Version von Hadoop stammen, für die Spark entwickelt wurde.

Setzen Sie die Umgebungsvariable HADOOP_HOME auf den Ablageort winutils.exe. Ich habe Winutils.exe zusammen mit C: \ Spark \ bin-Dateien gespeichert. Jetzt zeigen mein SPARK_HOME und HADOOP_HOME auf den gleichen Ort C:\Spark.

Nun, da winultils auf Pfad hinzugefügt wurde, gibt die Berechtigungen für hive Ordner mit winutils.exe chmod 777 C:\tmp\hive

Verwandte Themen