在 Windows 8 中使用 kerberos 配置 HDFS。

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的数据传输协议(protocol)没有使用Hadoop的RPC框架,所以DataNode必须使用dfs.datanode.address和dfs.datanode.http.address指定的特权端口进行身份验证。此身份验证基于攻击者将无法获得 root 权限的假设。

当您以root身份执行hdfs datanode命令时,服务器进程首先绑定(bind)特权端口,然后删除特权并以HADOOP_SECURE_DN_USER指定的用户帐户运行。此启动过程使用安装到 JSVC_HOME 的 jsvc。您必须在启动时指定 HADOOP_SECURE_DN_USER 和 JSVC_HOME 作为环境变量(在 hadoop-env.sh 中)。

最佳答案

JSVC 包似乎不适用于 Windows。花了很长时间,我找到了解决这个问题的方法。我们可以使用 SASL,而不是使用 JSVC。

Hadoop-2.6.0 支持 SASL 来验证数据传输协议(protocol)。请参阅文档: Secure Datanode

引用该链接:

关于security - HDFS 数据节点不以 kerberos 开头,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27401033/

10-13 06:01