HDFS datanode不是以kerberos开头的

时间:2014-12-10 12:29:10

标签: security hadoop kerberos

在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 kumar@KUMAR.COM 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的数据传输协议不使用Hadoop的RPC框架,因此DataNode必须使用由dfs.datanode.address和dfs.datanode.http.address指定的特权端口对自身进行身份验证。此身份验证基于以下假设:攻击者无法获得root权限。

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

1 个答案:

答案 0 :(得分:4)

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

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

引用该链接:

  

从2.6.0版开始,SASL可用于验证数据   传输协议。在此配置中,不再需要它   安全集群使用jsvc以root身份以root身份启动DataNode并绑定到   特权港口。要在数据传输协议上启用SASL,请设置   dfs.data.transfer.protection中的hdfs-site.xml设置了非特权   dfs.datanode.address的端口,将dfs.http.policy设置为HTTPS_ONLY和   确保HADOOP_SECURE_DN_USER环境变量不是   定义。请注意,无法在数据传输中使用SASL   如果dfs.datanode.address设置为特权端口,则为protocol。这是   出于向后兼容的原因需要。