2014-12-10 2 views
2

настроенного HDFS с Kerberos в Windows 8.HDFS DataNode не начиная с Керберосом

NameNode успешного входа и начал. Datanode не запускается, но логин успешно завершен.

Исключение

14/12/10 17:51:55 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 
14/12/10 17:52:00 INFO security.UserGroupInformation: Login successful for user [email protected] using keytab file C:\kumar.keytab 
14/12/10 17:52:00 INFO impl.MetricsConfig: loaded properties from hadoop-metrics2.properties 
14/12/10 17:52:00 INFO impl.MetricsSystemImpl: Scheduled snapshot period at 10 second(s). 
14/12/10 17:52:00 INFO impl.MetricsSystemImpl: DataNode metrics system started 
14/12/10 17:52:05 INFO datanode.DataNode: Configured hostname is hostname.WORKGROUP 
14/12/10 17:52:05 FATAL datanode.DataNode: Exception in secureMainjava.lang.RuntimeException: Cannot start secure cluster without privileged resources.  at org.apache.hadoop.hdfs.server.datanode.DataNode.startDataNode(DataNode.java:737) 

Глядя на особенности ниже содержания link. Мне нужно установить JSVC_HOME. Как это установить? Где я могу получить пакет JSVC. Мне нужно решение для решения этой проблемы.

Безопасный DataNode

Поскольку протокол передачи данных DataNode не использует рамки RPC из Hadoop, DataNode должен аутентифицировать себя, используя привилегированные порты, которые указаны dfs.datanode.address и dfs.datanode. http.address. Эта аутентификация основана на предположении, что злоумышленник не сможет получить привилегии root.

Когда вы выполняете команду hdfs datanode в качестве пользователя root, серверный процесс сначала связывает привилегированный порт, затем сбрасывает привилегии и запускается как учетная запись пользователя, указанная HADOOP_SECURE_DN_USER. Этот процесс запуска использует jsvc, установленный для JSVC_HOME. Вы должны указать HADOOP_SECURE_DN_USER и JSVC_HOME как переменные среды при запуске (в hadoop-env.sh).

ответ

4

Кажется, пакет JSVC недоступен для Windows. После долгого времени я решил решить эту проблему. Вместо использования JSVC мы можем использовать SASL.

Hadoop-2.6.0 поддерживает SASL для аутентификации протокола передачи данных. См. Документацию: Secure Datanode.

Процитирует эту ссылку:

В версии 2.6.0, SASL может быть использовано для проверки подлинности данных протокола передачи. В этой конфигурации больше не требуется для защищенных кластеров для запуска DataNode с правами пользователя jsvc и привязки к привилегированным портам . Чтобы включить SASL по протоколу передачи данных, установите dfs.data.transfer.protection в hdfs-site.xml, установите непривилегированные порта для dfs.datanode.address установите dfs.http.policy в HTTPS_ONLY и убедитесь, что переменная HADOOP_SECURE_DN_USER среды не определенно. Обратите внимание, что невозможно использовать протокол SASL для передачи данных , если dfs.datanode.address установлен в привилегированный порт. Это , требуемое для соображений обратной совместимости.

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