2013-11-25 4 views
1

Я ценю вашу помощь заранее.Hadoop: Pseudo Распределенный режим для нескольких пользователей

У меня есть настройка Hadoop в Pseudo Distributed mode с использованием учетных данных пользователя root. Я хочу предоставить доступ нескольким пользователям (скажем hadoop1, hadoop2 и т. Д.), Чтобы иметь возможность отправлять и запускать задания MapReduce в этом кластере. Как мы это сделаем?

Что я сделал до сих пор?

> - Setup Hadoop to run in Pseudo-distributed mode 
> - Used "root" user credentials to set this up. 
> - Added users hadoop1 and hadoop2 to a group called "hadoop". 
> - Added root also to be part of the group "hadoop". 
> - Created a folder called hdfstmp and set this as the path for hadoop.tmp.dir. 
> - Started the cluster using bin/start-all.sh 
> - Ran MapReduce jobs using hadoop1 and hadoop2 users. 

я получил ошибку ниже:

Exception in thread "main" java.io.IOException: Permission denied 
     at java.io.UnixFileSystem.createFileExclusively(Native Method) 
     at java.io.File.createNewFile(File.java:1006) 
     at java.io.File.createTempFile(File.java:1989) 
     at org.apache.hadoop.util.RunJar.main(RunJar.java:119) 
  • Чтобы преодолеть эту ошибку, я дал группа "Hadoop" разрешения RWX в папку hdfstmp. Разрешения для этой папки выглядят как drwxrwxr-x.
  • Представлена ​​MapReduce заданий с использованием пользователей hadoop1 и hadoop2. Работа прошла нормально, без ошибок.

Однако, если я делаю stop-all.sh, а затем создаю start -all.sh, DataNode (и иногда даже NameNode) не запускается. Когда я проверяю журналы, я вижу ошибку, как показано ниже:

2013-09-21 16: 43: 54,518 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: недопустимый каталог в dfs.data.dir : Неправильное разрешение для/data/hdfstmp/dfs/data, ожидается: rwxr-xr-x, тогда как фактическое: rwxrwxr-x

Теперь, без изменения группового права владения файлом hdfstmp, мои задания MR, представленные разными пользователи не запускаются. Но когда NameNode перезапускается, я получаю проблему, как указано выше.

Как решить эту проблему? Какова лучшая практика для того же?

Кроме того, есть ли способ контролировать работу, предоставляемую разными пользователями? Я предполагаю, что веб-интерфейс должен позволять мне это делать. Пожалуйста подтвердите.

Я ценю любую помощь, которую вы можете предоставить мне по этой проблеме. Благодарю.

С уважением

+0

При изменении прав доступа к папке tmp - вы вносили изменения в папку на HDFS или на локальный диск? –

+0

Chris - Я внес изменения в разрешения на локальном диске. – user3031097

ответ

0

Добавление выделенного системного пользователя Hadoop

Мы будем использовать специальную учетную запись пользователя Hadoop для работы Hadoop. Хотя это не требуется, рекомендуется, потому что это помогает отделить установку Hadoop от других программных приложений и учетных записей пользователей, работающих на одном компьютере (подумайте: безопасность, разрешения, резервные копии и т. Д.).

#addgroup hadoop 
#adduser --ingroup hadoop hadoop1 
#adduser --ingroup hadoop hadoop2 

Это добавит пользовательский hduser и группу hadoop на ваш локальный компьютер.

Изменить разрешение вашего Hadoop установлен каталог

chown -R hduser:hadoop hadoop 

И, наконец, изменение Hadoop разрешение временного directoy

Если временный каталог является/приложение/Hadoop/TMP

#mkdir -p /app/hadoop/tmp 
#chown hduser:hadoop /app/hadoop/tmp 

, и если вы хотите усилить безопасность, chmod из 755 до 750 ...

#chmod 750 /app/hadoop/tmp 
+0

Спасибо за ответ. Вопрос: Если каталог my/app/hadoop/tmp имеет права 755, это означает, что только владелец «hduser» может создавать файлы внутри этого каталога, а члены группы «hadoop» (hasoop1 и hadoop2 в этом случае) не могут создавать файлов внутри этого каталога. Правильно ли я понимаю? Если да, то когда пользователь hadoop1 выполняет задание MapReduce, промежуточные данные должны быть записаны внутри каталога '/ app/hadoop/tmp', но hasoop1 не имеет разрешений WRITE. Таким образом, вы получите ошибку «отклонено разрешение». Правильно ли я понимаю? – user3031097

+0

Если оба ** hadoop1 ** и ** hadoop2 ** являются членами группы ** hadoop **, тогда у них есть разрешение на чтение и запись файлов в **/app/hadoop/tmp **. И если вы получаете отказ в разрешении на отказ, это означает, что они не являются членами группы ** hadoop **. – user2486495

+0

Уверен, что у меня настроены группы, и пользователь hadoop является частью каталога hadoop. Я попробовал с 755 правами как для каталога hadoop, так и для каталога hadoop.tmp.dir, но он все еще получает ошибку «Разрешить отказ». Я новичок в Linux, поэтому, пожалуйста, исправьте меня, если я ошибаюсь: R-X не дает пользователю/группе доступ к записи файла в этом каталоге, не так ли? – user3031097

Смежные вопросы