概要说明
Java程序连接开启安全的hdfs需要额外配置安全方面的配置文件krb5.conf与有效的keytab,关于获取keytab与查看keytab对应principal,详见KB:Guardian新建用户、修改用户密码、下载keytab及赋权与Guardian租户相关操作
详细步骤
首先建议您统一开启集群所有服务的安全,开启安全后,重新下载解压TDH-Client,source /root/TDH-Client/init.sh。将集群中的一些hdfs相关的jar包下载到本地,放到项目的External Libraries中。将集群中hdfs.keytab,krb5.conf,core-site.xml,hdfs-site.xm放到项目resources下。
需要下载的hadoop相关jar包:
常见问题:
(1)Could not read password file: /etc/hdfs1/conf/ldap-conn-pass.txt
Caused by: java.io.FileNotFoundException: \etc\hdfs1\conf\ldap-conn-pass.txt (系统找不到指定的路径。)
注释core-site.xml中hadoop.security.group.mapping.ldap.bind.password.file即可
(2)Login failure for hdfs@TDH from keytab, Caused by: javax.security.auth.login.LoginException: Unable to obtain password from user
这种情况一般是keytab与principal不对应导致。
(3)
Permission denied: user=zyq_public, access=WRITE, inode="/inceptor1":hive:hive:drwx–x–x in the default POSIX ACLs
这是因为hdfs的/tmp目录对于其他用户是没有作任何限制的,但其他路径,比如/incetor1,会有相应限制。
可以赋予相应权限来处理,具体可参考KB:Guardian新建用户、修改用户密码、下载keytab及赋权。