Почему h2o требует доступа для записи в каталог hdfs root? - PullRequest
0 голосов
/ 11 января 2020

Просмотр сообщения об ошибке

Не удалось настроить задание: org. apache .had oop .security.AccessControlException: В доступе отказано: пользователь = воздушный поток, доступ = WRITE, inode = "/" : hdfs: hdfs: drwxr-xr-x в орг. apache .had oop .hdfs.server.namenode.FSPermissionChecker.check (FSPermissionChecker. java: 399) в ...

при попытке подключения для запуска кластера h2o (h2o-3.28.0.1-hdp3.1). Ie Похоже, что ему не нравится, что root hdfs dir hdfs:/// не имеет разрешений на запись для моего пользователя (и предоставление доступа на запись моему пользователю через ranger действительно , по-видимому, решает проблему ), но это кажется неправильным.

Из прошлого опыта я видел это для случая, когда запускающий пользователь не имеет разрешения на запись в свою собственную папку hdfs:///user/<username>, но мне кажется странным, что h2o хочет, чтобы пользователь иметь доступ на запись ко всему верхнему уровню hdfs dir. Это нормально? Могу ли я изменить это?


Возможно, связано: обнаружение, что после запуска кластера невозможно вручную убить в пользовательском интерфейсе YARN ResourceManager или убить PID, скорее нужно go к URL-адресу кластера h2o и используйте вкладку администратора для выключения кластера. Есть идеи, почему это произойдет?

1 Ответ

0 голосов
/ 11 января 2020

Обнаружил проблему, не могу найти документы / другие-пост-детализацию-это прямо сейчас, но в основном, при выполнении команды hadoop jar h2odriver.jar ..., есть необязательный параметр , называемый -output, где вы могли бы обычно помещают hdfs location , что h2o будет записывать вещи (насколько я помню, это некий старый каталог, который не так уж важен) в .

Я забыл, что это местоположение в HDFS, и поместил абсолютный путь к некоторой локальной папке. Ошибка была в том, что h2o пытался создать эту папку, создавая полный путь в hdfs, который ведет к ней, поэтому требовалось иметь возможность записи из каталога hdfs root. Правильное значение будет примерно таким: /user/<username>.

...