做个记录,方便自己以后查看
Hadoop的Python api貌似有好几个,我一开始使用的是 hdfscli api (hdfs api地址),在查看Hadoop目录文件没什么问题,不过上传文件、删除文件怎么都不成功,应该是身份认证的问题。在查阅了资料后,改了Hadoop的 core-site.xml 和 hadoop-policy.xml 两个配置文件。结果还是不行,没办法,我就换成了 pyhdfs 。不过查看Hadoop文件的api我依然使用的是 hdfscli ,一开始没啥问题。但是,当我重启电脑在此连接Hadoop后,就发生了报错。代码肯定是没啥问题的,因为我也没有改动过。所以就是找不同喽。没错,就是因为之前改了core-site.xml 和 hadoop-policy.xml 两个配置文件开启了 Service Level Authorization ,所以没有通过身份认证就无法使用api查看Hadoop文件了。
core-site.xml 中添加了如下配置,我把这个配置删了
<property>
<name>hadoop.security.authorization</name>
<value>true</value>
<description>Is service-level authorization enabled?</description>
</property>
hadoop-policy.xml 中改变了如下配置
<property>
<name>security.zkfc.protocol.acl</name>
<value>myname</value>
<description>ACL for access to the ZK Failover Controller
</description>
</property>
hadoop-policy.xml 原来配置为,设置成所有人可以访问
<property>
<name>security.zkfc.protocol.acl</name>
<value>*</value>
<description>ACL for access to the ZK Failover Controller
</description>
</property>
最后重启namenode以及刷新ACL配置
#重启namenode
hadoop-daemon.sh stop namenode
hadoop-daemon.sh start namenode
#刷新acl
hdfs dfsadmin -refreshServiceAcl
最后最后,最好重启一下电脑,再尝试用api连接Hadoop。