Ustaw użytkownika systemu hadoop na klienta osadzonego w aplikacji WWW Java

Chciałbym przesłać zadania MapReduce z aplikacji WWW java do zdalnego klastra Hadoop, ale nie mogę określić, do którego użytkownika zadanie ma zostać przesłane. Chciałbym skonfigurować i używać użytkownika systemu, który powinien być używany do wszystkich zadań MapReduce.

Obecnie nie mogę określić żadnego użytkownika i bez względu na to, co zadanie hadoop działa pod nazwą użytkownika aktualnie zalogowanego użytkownika systemu klienta. Powoduje to błąd komunikatu

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

... gdzie "alice" to lokalny, zalogowany użytkownik na komputerze klienckim.

próbowałem

różne kombinacje tworzeniaUserGroupInformation instancje (zarówno proxy, jak i zwykły użytkownik) iustawienie właściwości Java System za pomocą-Duser.name=hduser, zmienianieUSER envar i jako zakodowany na stałeSystem.setProperty("user.name", "hduser") połączenie.

... bezskutecznie. Odnośnie 1) Przyznaję, że nie mam pojęcia, jak te klasy mają być używane. Należy również pamiętać, że zmiana właściwości Java System nie jest oczywiście prawdziwym rozwiązaniem do zastosowania w aplikacji internetowej.

Czy jakikolwiek organizm wie, jak określić, którego użytkownika Hadoop używa do łączenia się ze zdalnym systemem?

PS / Hadoop używa domyślnej konfiguracji, co oznacza, że ​​podczas łączenia się z klastrem nie jest używane uwierzytelnianie i że Kerberos nie jest używany do komunikacji ze zdalnymi komputerami.

questionAnswers(3)

yourAnswerToTheQuestion