web-dev-qa-db-fra.com

Le répertoire de travail racine:/tmp/Hive sur HDFS doit être accessible en écriture. Les autorisations actuelles sont les suivantes: rw-rw-rw- (sous Windows)

J'exécute Spark sur Windows 7. Lorsque j'utilise Hive, l'erreur suivante apparaît.

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

Les autorisations sont définies comme suit 

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

J'ai défini le "contrôle total" sur tous les utilisateurs de Windows-> Propriétés-> Sécurité-> Avancé.

Mais je vois toujours la même erreur. Toute aide s'il vous plaît? J'ai vérifié un tas de liens, certains disent que c'est un bogue sur Spark 1.5. Est-ce vrai?

Merci Aarthi

33
user1384205

Tout d’abord, assurez-vous d’utiliser Winutils pour votre système d’exploitation. Ensuite, l'étape suivante est les autorisations.
Sous Windows, vous devez exécuter la commande suivante sur cmd:

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

J'espère que vous avez déjà téléchargé winutils et que vous avez défini HADOOP_HOME.

68
Nishu Tayal

Tout d’abord, vérifiez d’abord votre domaine informatique. Essayer 

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

Si cette commande indique accès refusé ou FindFileOwnerAndPermission erreur (1789): la relation de confiance entre ce poste de travail et le domaine principal a échoué .

Cela signifie que le contrôleur de domaine de votre ordinateur n’est pas accessible. La raison peut-être que vous n’êtes pas sur le même réseau VPN que votre contrôleur de domaine système. Connectez-vous à un réseau privé virtuel et réessayez.

Maintenant, essayez la solution fournie par Viktor ou Nishu.

22
Aaditya Raj

La solution suivante a fonctionné sous Windows pour moi:

  • Tout d'abord, j'ai défini HADOOP_HOME. Il décrit en détail ici
  • Ensuite, j'ai bien aimé Nishu Tayal, mais avec une différence: C:\temp\hadoop\bin\winutils.exe chmod 777 \tmp\Hive

\tmp\Hive n'est pas un répertoire local

10
L. Viktor

Vous devez définir les autorisations de ce répertoire sur HDFS, et non sur votre système de fichiers local. /tmp ne signifie pas C:\tmp sauf si vous définissez fs.defaultFs dans core-site.xml sur file://c:/, ce qui est probablement une mauvaise idée. 

Vérifiez-le en utilisant 

hdfs dfs -ls /tmp 

Réglez-le avec 

hdfs dfs -chmod 777 /tmp/Hive
9
cricket_007

Erreur lors du démarrage de spark-Shell sur VM sous Windows: Erreur msg: le répertoire de travail racine:/tmp/Hive sur HDFS doit être accessible en écriture. Permission refusée

Solution: /Tmp/Hive est un répertoire temporaire. Seuls les fichiers temporaires sont conservés à cet emplacement Aucun problème, même si nous supprimons ce répertoire, sera créé lorsque Requis avec les autorisations appropriées.

Étape 1) Sous hdfs, supprimez le répertoire/tmp/Hive ==> "hdfs dfs -rm -r/tmp/Hive"

2) Au niveau du système d'exploitation également, supprimez le répertoire/tmp/Hive ==> rm -rf/tmp/Hive

Après cela, l’étincelle Shell a démarré et tout a bien fonctionné.

8
SNK

Problème résolu dans la version spark 2.0.2 (14 novembre 2016). Utilisez cette version . Version 2.1.0 La version du 28 décembre 2016 présente les mêmes problèmes.

1
user7735815

J'ai aussi fait face à ce problème. Ce problème est lié au réseau. J'ai installé spark sur Windows 7 avec un domaine particulier. 

Le nom de domaine peut être vérifié 

Démarrer -> ordinateur -> clic droit -> Propriétés -> nom de l'ordinateur, paramètres de domaine et de groupe de travail -> cliquez sur modifier -> Nom de l'ordinateur (Onglet) -> Cliquez sur Modifier -> Nom de domaine.

Lorsque j'exécute la commande spark-Shell, cela fonctionne correctement, sans erreur.

Dans d'autres réseaux, j'ai reçu une erreur d'autorisation d'écriture . Pour éviter cette erreur, exécutez la commande spark sur le domaine spécifié dans le chemin ci-dessus.

1
Mayank Gupta

Il y a un bug dans Spark Jira pour la même chose. Cela a été résolu il y a quelques jours. Voici le lien.

https://issues.Apache.org/jira/browse/SPARK-10528

Les commentaires ont toutes les options, mais aucune solution garantie.

1
sunil

C'est un processus simple en 4 étapes:

Pour Spark 2.0+:

  1. Télécharger Hadoop pour Windows/Winutils
  2. Ajoutez ceci à votre code ( avant initialisation SparkSession):

     if (getOS () == "windows") {
     System.setProperty ("hadoop.home.dir", "C: /Users//winutils-master/hadoop-2.7.1"); 
    } 
    
  3. Ajoutez ceci à votre spark-session (vous pouvez le changer en C:/Temp au lieu de Bureau).

    . config ("Hive.exec.scratchdir", "C:/Utilisateurs // Bureau/tmphive") 
    
  4. Ouvrez cmd.exe et exécutez:

     "chemin\de\hadoop-2.7.1\bin\winutils.exe" chmod 777 C:\Utilisateurs \\ Bureau\tmphive 
    
1
Abhinandan Dubey

La raison principale est que vous avez démarré l'étincelle dans un mauvais répertoire. créez des dossiers dans D: // tmp/Hive (donnez toutes les autorisations) et démarrez votre étincelle dans D: drive D:> spark-Shell 

maintenant ça va marcher .. :) 

1
Satya.pydikondala

Utilisez la dernière version de "winutils.exe" et essayez. https://github.com/steveloughran/winutils/blob/master/hadoop-2.7.1/bin/winutils.exe

0
Nagaraj Vittal

La même erreur se produisait: "Le répertoire de travail racine:/tmp/Hive sur HDFS devrait être accessible en écriture. Les autorisations actuelles sont les suivantes: rw-rw-rw-" sous Windows 7. Voici ce que j'ai fait pour résoudre le problème:

  1. J'avais installé Spark sur C:\Program Files (x86) ..., il cherchait/tmp/Hive sous C: i.e., C:\tmp\Hive
  2. J'ai téléchargé WinUtils.exe à partir de https://github.com/steveloughran/winutils . J'ai choisi une version identique à celle que j'avais choisie pour le package hadoop lors de l'installation de Spark. c'est-à-dire hadoop-2.7.1 (vous pouvez le trouver dans le dossier bin, à savoir, https://github.com/steveloughran/winutils/tree/master/hadoop-2.7.1/bin )
  3. Maintenant, utilisez la commande suivante pour rendre le dossier c:\tmp\Hive accessible en écriture Winutils.exe chmod 777\tmp\Hive 

Note: avec une version antérieure de winutils également, la commande chmod définissait l'autorisation requise sans erreur, mais spark s'est toujours plaint du fait que le dossier/tmp/Hive n'était pas accessible en écriture.

0
Vid123

Utiliser la version correcte de winutils.exe a été efficace pour moi. Les winutils devraient provenir de la version de Hadoop pour laquelle Spark a été pré-construit.

Définissez la variable d’environnement HADOOP_HOME sur l’emplacement bin de winutils.exe. J'ai stocké winutils.exe avec les fichiers C:\Spark\bin. Alors maintenant, mes SPARK_HOME et HADOOP_HOME pointent vers le même emplacement C:\Spark.

Maintenant que winultils a été ajouté au chemin, donnez les autorisations pour le dossier Hive en utilisant winutils.exe chmod 777 C:\tmp\Hive

0
Harsha

Pouvez s'il vous plaît essayer de donner 777 permission au dossier/tmp/Hive parce que ce que je pense est que spark fonctionne en tant qu'utilisateur anonyme (qui viendra dans une autre catégorie d'utilisateurs) et que cette permission devrait être récursive . J'ai eu le même problème avec 1.5.1 version de spark pour Hive, et cela fonctionnait en donnant l'autorisation 777 en utilisant la commande ci-dessous sur linux

chmod -r 777 /tmp/Hive
0
Reena Upadhyay