Установить пользователя системы Hadoop для клиента, встроенного в веб-приложение Java

Я хотел бы отправить задания MapReduce из веб-приложения Java в удаленный кластер Hadoop, но не могу указать, для какого пользователя должно быть отправлено задание. Я хотел бы настроить и использовать системного пользователя, который должен использоваться для всех заданий MapReduce.

В настоящее время я не могу указать какого-либо пользователя, независимо от того, какое задание Hadoop выполняется под именем пользователя, вошедшего в систему в данный момент в клиентской системе. Это вызывает ошибку с сообщением

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

...где «алиса» — это локальный пользователь, вошедший в систему на клиентской машине.

Я пробовал

  1. различные комбинации создания экземпляров UserGroupInformation(как прокси, так и обычного пользователя) и
  2. установки свойства Java System с помощью -Duser.name=hduser, изменив envar USERи жестко запрограммированный вызов System.setProperty("user.name", "hduser").

... безрезультатно. Что касается 1) я признаю, что понятия не имею, как эти классы должны использоваться. Также обратите внимание, что изменение свойства Java System, очевидно, не является реальным решением для использования в веб-приложении.

Кто-нибудь знает, как указать, какой пользователь Hadoop использует для подключения к удаленной системе?

PS/ Hadoop использует конфигурацию по умолчанию, что означает, что при подключении к кластеру не используется аутентификация и что Kerberos не используется для связи с удаленными машинами.

29
задан Christoffer Soop 16 June 2012 в 10:12
поделиться