在Windows8中使用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)
看链接特别是下面的内容。我要把jsvc\U放在家里。怎么设置?在哪里可以得到jsvc包。我需要解决这个问题的办法。
安全数据节点
由于datanode的数据传输协议没有使用hadoop的rpc框架,因此datanode必须使用由dfs.datanode.address和dfs.datanode.http.address指定的特权端口进行身份验证。此身份验证基于攻击者无法获得根权限的假设。
当您以root用户身份执行hdfs datanode命令时,服务器进程首先绑定特权端口,然后放弃特权并以hadoop\u secure\u dn\u user指定的用户帐户运行。这个启动过程使用jsvc安装到jsvc\u home。必须在启动时指定hadoop\u secure\u dn\u user和jsvc\u home作为环境变量(在hadoop env.sh中)。
1条答案
按热度按时间2nbm6dog1#
jsvc包似乎不适用于windows。花了很长时间,我想出了解决这个问题的办法。我们可以使用sasl来代替jsvc。
hadoop-2.6.0支持sasl来验证数据传输协议。请参阅文档:安全数据节点。
引用该链接:
从版本2.6.0开始,sasl可以用来验证数据传输协议。在此配置中,安全集群不再需要使用jsvc以root身份启动datanode并绑定到特权端口。要在数据传输协议上启用sasl,请设置
dfs.data.transfer.protection
在hdfs-site.xml
,为设置非特权端口dfs.datanode.address
,套dfs.http.policy
至HTTPS_ONLY
确保HADOOP_SECURE_DN_USER
未定义环境变量。请注意,在以下情况下不可能在数据传输协议上使用sasldfs.datanode.address
设置为特权端口。出于向后兼容性的原因,这是必需的。