我正在尝试连接到在 Cloudera 上运行的 HDFS 实例。我的第一步是启用 Kerberos 并创建 Keytabs(如此处所示)。
在下一步中,我想使用 keytab 进行身份验证。
Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://cloudera:8020");
conf.set("hadoop.security.authentication", "kerberos");
UserGroupInformation.setConfiguration(conf);
UserGroupInformation.loginUserFromKeytab("hdfs@CLOUDERA", "/etc/hadoop/conf/hdfs.keytab");
FileSystem fs = FileSystem.get(conf);
FileStatus[] fsStatus = fs.listStatus(new Path("/"));
for (int i = 0; i < fsStatus.length; i++) {
System.out.println(fsStatus[i].getPath().toString());
}
它失败并出现以下错误
java.io.IOException:从 keytab /etc/hadoop/conf/hdfs.keytab 登录 hdfs@CLOUDERA 失败:javax.security.auth.login.LoginException:无法从用户获取密码
问题是:如何正确处理密钥表?我必须将它复制到我的本地机器吗?