windows - instalar - hadoop source
El directorio de scratch raĆz:/tmp/hive en HDFS debe poder escribirse. Los permisos actuales son: rw-rw-rw-(en Windows) (15)
Estoy ejecutando Spark en Windows 7. Cuando uso Hive, veo el siguiente error
The root scratch dir: /tmp/hive on HDFS should be writable. Current permissions are: rw-rw-rw-
Los permisos se establecen de la siguiente manera
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
He configurado "control total" para todos los usuarios desde Windows-> propiedades-> seguridad-> Avanzado.
Pero aún veo el mismo error. Cualquier ayuda por favor? He comprobado un montón de enlaces, algunos dicen que es un error en Spark 1.5. ¿Es esto cierto?
Gracias aarthi
Acabo de resolver este problema en mi entorno Win7. Modifiqué la configuración de DNS con una IP incorrecta. Hace que mi escritorio no pueda conectarse al controlador de dominio. Una vez que configuro la IP de DNS correcta y reinicio la máquina. El problema se ha ido. Puedo usar winutils para ls un directorio.
Debe configurar los permisos de este directorio en HDFS, no en su sistema de archivos local.
/tmp
no significa
C:/tmp
menos que establezca
fs.defaultFs
en core-site.xml en
file://c:/
, lo que probablemente sea una mala idea.
Compruébalo usando
hdfs dfs -ls /tmp
Configúralo usando
hdfs dfs -chmod 777 /tmp/hive
En primer lugar, asegúrese de estar utilizando Winutils correctos para su sistema operativo.
Entonces el siguiente paso son los permisos.
En Windows, debe ejecutar el siguiente comando en cmd:
D:/winutils/bin/winutils.exe chmod 777 D:/tmp/hive
Espero que ya hayas descargado winutils y configures HADOOP_HOME.
Error al iniciar el shell de chispa en la VM que se ejecuta en Windows: Mensaje de error: El directorio de scratch raíz: / tmp / hive en HDFS debe poder escribirse. Permiso denegado
Solución: / tmp / hive es un directorio temporal. Solo los archivos temporales se mantienen en esta ubicación. No hay problema, incluso si eliminamos este directorio, se creará cuando sea necesario con los permisos adecuados.
Paso 1) En hdfs, elimine el directorio / tmp / hive ==> "hdfs dfs -rm -r / tmp / hive"
2) En el nivel del sistema operativo también, elimine el directorio / tmp / hive ==> rm -rf / tmp / hive
Después de esto, comenzó la chispa y funcionó bien.
Este es un proceso simple de 4 pasos:
Para Spark 2.0+:
- Descargar Hadoop para Windows / Winutils
-
Agregue esto a su código ( antes de la inicialización de SparkSession):
if(getOS()=="windows"){ System.setProperty("hadoop.home.dir", "C:/Users//winutils-master/hadoop-2.7.1"); }
-
Agregue esto a su sesión de chispa (puede cambiarlo a
C:/Temp
lugar de Escritorio) ..config("hive.exec.scratchdir","C:/Users//Desktop/tmphive")
-
Abra cmd.exe y ejecute:
"path/to/hadoop-2.7.1/bin/winutils.exe" chmod 777 C:/Users//Desktop/tmphive
Hay un error en Spark Jira por lo mismo. Esto se resolvió hace unos días. Aqui esta el link.
https://issues.apache.org/jira/browse/SPARK-10528
Los comentarios tienen todas las opciones, pero no hay una solución garantizada.
La razón principal es que inició la chispa en el directorio incorrecto. cree carpetas en D: // tmp / hive (otorgue permisos completos) e inicie su chispa en D: unidad D:> spark-shell
ahora funcionará .. :)
La siguiente solución funcionó en Windows para mí:
- Primero, definí HADOOP_HOME. Se describe en detalle here
-
A continuación, me gustó Nishu Tayal, pero con una diferencia:
C:/temp/hadoop/bin/winutils.exe chmod 777 /tmp/hive
/tmp/hive
no es un directorio local
Lo primero es verificar el dominio de su computadora. Tratar
c:/work/hadoop-2.2/bin/winutils.exe ls c:/tmp/hive
Si este comando dice acceso denegado o error FindFileOwnerAndPermission (1789): la relación de confianza entre esta estación de trabajo y el dominio primario falló .
Significa que no se puede acceder al controlador de dominio de su computadora, es posible que no esté en la misma VPN que el controlador de dominio de su sistema. Conéctese a VPN e intente nuevamente.
Ahora prueba la solución provista por Viktor o Nishu.
Problema resuelto en la versión 2.0.2 de chispa (14 de noviembre de 2016). Usa esta versión. La versión 2.1.0 del 28 de diciembre de 2016 tiene los mismos problemas.
Puede intentar dar permiso 777 a la carpeta / tmp / hive porque lo que creo es que spark se ejecuta como un usuario anónimo (que vendrá en otra categoría de usuario) y este permiso debería ser recursivo. Tuve este mismo problema con la versión 1.5.1 de spark para colmena, y funcionó al dar permiso 777 usando el siguiente comando en Linux
chmod -r 777 /tmp/hive
Recibía el mismo error "El directorio de scratch raíz: / tmp / hive en HDFS debería poder escribirse. Los permisos actuales son: rw-rw-rw-" en Windows 7. Esto es lo que hice para solucionar el problema:
- Había instalado Spark en C: / Archivos de programa (x86) ..., estaba buscando / tmp / hive en C: es decir, C: / tmp / hive
- Descargué WinUtils.exe de https://github.com/steveloughran/winutils . Elegí una versión igual a la que elegí para el paquete hadoop cuando instalé Spark. es decir, hadoop-2.7.1 (puede encontrarlo debajo de la carpeta bin, es decir, https://github.com/steveloughran/winutils/tree/master/hadoop-2.7.1/bin )
- Ahora usé el siguiente comando para hacer que la carpeta c: / tmp / hive se pueda escribir winutils.exe chmod 777 / tmp / hive
Nota : Con una versión anterior de winutils también, el comando chmod estaba configurando el permiso requerido sin error, pero spark aún se quejaba de que la carpeta / tmp / hive no se podía escribir.
También me enfrenté a este problema. Este problema está relacionado con la red. Instalé spark en Windows 7 usando un dominio particular.
El nombre de dominio puede ser verificado
Inicio -> computadora -> Haga clic derecho -> Propiedades -> Configuración de nombre de computadora, dominio y grupo de trabajo -> haga clic en cambiar -> Nombre de computadora (pestaña) -> Haga clic en Cambiar -> Nombre de dominio.
Cuando ejecuto el comando spark-shell, funciona bien, sin ningún error.
En otras redes recibí un error de permiso de escritura. Para evitar este error, ejecute el comando spark en el Dominio especificado en la ruta anterior.
Usar la versión correcta de winutils.exe hizo el truco para mí. Los winutils deben ser de la versión de Hadoop para la que Spark se ha creado previamente.
Establezca la variable de entorno HADOOP_HOME en la ubicación bin de winutils.exe.
He almacenado winutils.exe junto con archivos C: / Spark / bin.
Entonces ahora mi SPARK_HOME y HADOOP_HOME apuntan a la misma ubicación
C:/Spark
.
Ahora que winultils se ha agregado a la ruta, otorgue permisos para la carpeta de la colmena usando
winutils.exe chmod 777 C:/tmp/hive
Use la última versión de "winutils.exe" e inténtelo. https://github.com/steveloughran/winutils/blob/master/hadoop-2.7.1/bin/winutils.exe