2017-02-13 10 views
0

Я совершенно новый в Hadoop. У одного из пользователей SAS возникла проблема с сохранением файла из SAS Enterprise Guide до Hadoop, и меня попросили проверить разрешения в HDFS, если они были предоставлены должным образом. Как-то убедиться, что пользователям разрешено перемещаться с одной стороны и добавлять их на другую сторону. Где я могу проверить его на серверах SAS? Если это файл или как его проверить?Проверить разрешение в HDFS

Ваш ответ с подробной информацией будет более оценен.

Спасибо.

+1

Вы ищете решение с использованием командной строки или используя Hue, графический веб-интерфейс пользователя Hadoop? Являются ли серверы SAS такими же, как Hadoop, или они подключаются к Hadoop, который размещен на разных узлах? – spijs

ответ

1

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

Распределение, версия, используемые сервисы Hadoop (например, продукты безопасности Knox, Sentry или Ranger должны быть настроены), а аутентификация (kerberos) - все это имеет значение. Я предполагаю, что у вас нет проблем с кеберосом, а также не выполняются функции Knox, Sentry, Ranger и вы используете core hadoop без Kerberos. Если вам нужна помощь с теми, вы должны быть более конкретными.

1. Для этого вам необходимо проверить разрешения на стороне hadoop. Вы должны знать, где они помещают данные в hadoop. Это пути в HDFS, а не в файловую систему серверов.

Если вы подключаетесь к улью и не указываете какие-либо параметры, это вероятно/user/hive/store или/user/username.

2 - Hadoop Stickybit включен по умолчанию, запрещает пользователям писать в/tmp в HDFS. Некоторые программы SAS пишут в папку/tmp в hdfs для сохранения метаданных вместе с другой информацией.

Запустите следующую команду на узле Hadoop, чтобы проверить основные разрешения в HDFS.

hadoop fs -ls/

Вы должны увидеть папку/TMP вместе с правами доступа, если папка/TMP имеет «т» в конце липкий бит установлен, например, как drwxrwxrwt. Если разрешения - drwxrwxrwx, то липкий бит не установлен, что хорошо для устранения проблем с разрешениями.

Если у вас есть липкий бит, установленный в/tmp, который обычно по умолчанию, то вы должны либо удалять его, либо установить каталог HDEM TEMP в списке программ SAS для кластера Hadoop.

Пожалуйста, обратитесь к следующей SAS/Доступ к Руководству Hadoop о параметрах Имя_библиотеки на SAS/ACCESS® 9.4 for Relational Databases: Reference, Ninth Edition | LIBNAME Statement Specifics for Hadoop

Чтобы удалить/изменить липкий бит Hadoop в следующей статье, или от поставщика Hadoop. Configuring Hadoop Security in CDH 5 Step 14: Set the Sticky Bit on HDFS Directories. Вы хотите сделать противоположное этой статье, чтобы удалить stickybit.

2 - SAS + Authentication + Пользователи -

Если кластер Hadoop крепится с помощью Kerberos, то каждый пользователь SAS много иметь действительный керберос билет, чтобы поговорить с какой-либо услуги Hadoop. На странице поддержки SAS Hadoop имеется ряд руководств о Kerberos наряду с другими ресурсами. С kerberos им нужен билет kerberos, а не имя пользователя или пароль.

SAS 9.4 Support For Hadoop Reference

Если вы не используете Kerberos, то вы можете иметь либо Hadoop значение по умолчанию без аутентификации, или, возможно, некоторые услуги, такие как улей может быть включен LDAP.

Если у вас нет LDAP, вы можете использовать любое имя пользователя Hadoop в операторе libname для подключения, например, hive, hdfs или пряжа. Вам не нужно вводить пароль, и этот пользователь не должен быть учетной записью пользователя SAS. Это связано с тем, что по умолчанию для конфигурации Hadoop не требуется аутентификация. Вы можете использовать другую учетную запись, такую ​​как та, которую вы можете создать для пользователя SAS в вашем кластере Hadoop. Если вы это сделаете, вы должны создать папку/user/username в HDFS, выполнив что-то вроде следующего как суперпользователь HDFS или один с разрешениями в Hadoop, затем установите право собственности на пользователя. Hadoop фс -mkdir/пользователь/sasdemo Hadoop фс -chown sasdemo: sasusers/пользователь/sasdemo Затем вы можете проверить, чтобы убедиться, что она существует с Hadoop фс -ls/пользователь/ основном в зависимости от того пользователя, они имеют в своем заявлении Имя_библиотеки в их программе SAS должна быть домашняя папка пользователей в hadoop. У пользователей Hadoop будет установлен один по умолчанию при установке, но вам нужно будет создать их для любых дополнительных пользователей.

Если вы используете LDAP с Hadoop (не к тому, что я видел), вам нужно будет указать имя пользователя LDAP вместе с паролем для учетной записи пользователя в заявлении libname. Я считаю, что вы можете закодировать пароль, если хотите.

Тестирование соединений с Hadoop от программы SAS Вы можете изменить следующий код SAS, чтобы выполнить базовый тест, чтобы поместить один из наборов данных sashelp в Hadoop, используя последовательное соединение с HiveServer2 с использованием SAS Enterprise Guide. Это всего лишь очень простой тест, но должен доказать, что вы можете написать Hadoop.

libname myhive hadoop server=hiveserver.example.com port=10000 schema=default user=hive; 
data myhive.cars;set sashelp.cars;run; 

Тогда, если вы хотите, вы можете использовать клиент Hadoop по вашему выбору, чтобы найти данные в Hadoop в том месте, хранящегося его, вероятно,/пользователя/ульях/складе. hadoop fs -ls/пользователь/куст/склад

И/Или вы должны иметь возможность запускать содержимое proc в SAS Enterprise Guide для отображения содержимого таблицы Hadoop Hive, которую вы только что положили в Hadoop. PROC CONTENTS DATA = myhive.cars; run;

Надеюсь, это поможет, удачи!

0

Чтобы найти подходящие группы, которые могут обращаться к файлам в HDFS, нам нужно проверить Sentry.

Файл ACL описан в Sentry, поэтому, если вы хотите предоставить/отменить доступ ко всем, это можно сделать через него.

С левой стороны расположено расположение файла, а правая сторона - это ACL групп.

+0

Что делать, если пользователь не использует Sentry? – franklinsijo

+0

Если Sentry не включен для кластера, требуется ручное вмешательство. Мы можем попробовать «hdfs dfs -getfacl », чтобы найти набор людей, имеющих доступ к местоположению. Мы можем установить разрешение, используя «hdfs dfs -setfacl <--set>». Проверьте https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/HdfsPermissionsGuide.html#ACLs_File_System_API для получения дополнительной информации. –