Definir usuário do sistema hadoop para o cliente incorporado no aplicativo da Web Java

Gostaria de enviar trabalhos do MapReduce de um aplicativo da Web java para um cluster do Hadoop remoto, mas não posso especificar para qual usuário o trabalho deve ser enviado. Eu gostaria de configurar e usar um usuário do sistema que deve ser usado para todos os trabalhos do MapReduce.

Atualmente, não consigo especificar nenhum usuário e não importa o que o trabalho de hadoop executa com o nome de usuário do usuário conectado no momento do sistema do cliente. Isso causa um erro com a mensagem

Permission denied: user=alice, access=WRITE, inode="staging":hduser:supergroup:rwxr-xr-x

... onde "alice" é o usuário local logado na máquina cliente.

eu tentei

várias combinações de criaçãoUserGroupInformation instâncias (ambos proxies e usuário normal) edefinindo a propriedade do sistema Java com-Duser.name=hduser, alterando aUSER envar e como um codificadoSystem.setProperty("user.name", "hduser") ligar.

... sem sucesso. Quanto 1) eu admito não ter idéia de como essas classes devem ser usadas. Observe também que alterar a propriedade do Sistema Java obviamente não é uma solução real para uso no aplicativo da web.

Alguma entidade sabe como você especifica qual usuário o Hadoop usa para se conectar a um sistema remoto?

O PS / Hadoop está usando a configuração padrão, o que significa que nenhuma autenticação é usada durante a conexão com o cluster e que o Kerberos não é usado na comunicação com as máquinas remotas.

questionAnswers(3)

yourAnswerToTheQuestion