sistema que orden entre encontrado diferencias descargar commands comandos archivos and hadoop username hdfs

orden - hdfs hadoop que es



Cómo especificar el nombre de usuario al colocar archivos en HDFS desde una máquina remota (4)

Tengo una configuración de clúster de Hadoop y trabajo bajo un nombre de usuario predeterminado común "usuario1". Quiero poner archivos en hadoop desde una máquina remota que no es parte del clúster hadoop. Configuré archivos hadoop en la máquina remota de forma que cuando

hadoop dfs -put file1 ...

se llama desde la máquina remota, coloca el archivo1 en el clúster de Hadoop.

el único problema es que estoy conectado como "usuario2" en la máquina remota y eso no me da el resultado que espero. De hecho, el código anterior solo se puede ejecutar en la máquina remota como:

hadoop dfs -put file1 /user/user2/testFolder

Sin embargo, lo que realmente quiero es poder almacenar el archivo como:

hadoop dfs -put file1 /user/user1/testFolder

Si trato de ejecutar el último código, hadoop arroja un error debido a los permisos de acceso. ¿Hay alguna forma de que pueda especificar el nombre de usuario dentro del comando hadoop dfs?

Estoy buscando algo como:

hadoop dfs -username user1 file1 /user/user1/testFolder

Gracias


Esto puede no importarle a nadie, pero estoy usando un pequeño truco para esto.

Estoy exportando HADOOP_USER_NAME en .bash_profile, de modo que cada vez que inicie sesión, el usuario está configurado.

Simplemente agregue la siguiente línea de código a .bash_profile:

export HADOOP_USER_NAME=<your hdfs user>


Hay otra publicación con algo similar a esto que podría proporcionarle una solución para usted mediante la transmisión a través de ssh:

cat file.txt | ssh user1@clusternode "hadoop fs -put - /path/in/hdfs/file.txt"

Vea poner un archivo remoto en hadoop sin copiarlo en el disco local para obtener más información


Por defecto, la autenticación y la autorización están desactivadas en Hadoop. De acuerdo con Hadoop - The Definitive Guide (por cierto, buen libro - recomendaría comprarlo)

La identidad de usuario que Hadoop usa para los permisos en HDFS se determina ejecutando el comando whoami en el sistema cliente. Del mismo modo, los nombres de los grupos se derivan de la salida de los grupos en ejecución.

Entonces, puedes crear un nuevo comando whoami que devuelva el nombre de usuario requerido y ponerlo en el PATH de manera apropiada, de modo que el whoami creado se encuentre antes de que se encuentre el whoami real que viene con Linux. Del mismo modo, también puedes jugar con el comando de groups .

Este es un truco y no funcionará una vez que se haya activado la autenticación y autorización.


Si usa la variable de entorno HADOOP_USER_NAME, puede indicar a HDFS con qué nombre de usuario desea operar. Tenga en cuenta que esto solo funciona si su clúster no está utilizando funciones de seguridad (por ejemplo, Kerberos). Por ejemplo:

HADOOP_USER_NAME=hdfs hadoop dfs -put ...