文档首页 > > 开发指南> MapReduce应用开发> 环境准备> 准备kerberos认证

准备kerberos认证

分享
更新时间: 2020/04/14 GMT+08:00

场景说明

在kerberos认证集群环境下,各个组件之间的相互通信不能够简单的互通,而需要在通信之前进行相互认证,以确保通信的安全性。

用户在提交MapReduce应用程序时,需要与Yarn、HDFS等之间进行通信。那么提交MapReduce的应用程序中需要写入安全认证代码,确保MapReduce程序能够正常运行。

安全认证有两种方式。

  • 命令行认证

    提交MapReduce应用程序运行前,在MapReduce客户端执行如下命令获得认证。

    kinit 组件业务用户

  • 代码认证

    通过获取客户端的principal和keytab文件在应用程序中进行认证。

安全认证代码

目前是统一调用LoginUtil类进行安全认证。

在MapReduce样例工程代码中,test@HADOOP.COM、user.keytab和krb5.conf为示例,实际操作时请联系管理员获取相应帐号对应权限的keytab文件和krb5.conf文件,并将keytab文件和krb5.conf文件放入到样例代码中的conf目录,安全登录方法如下代码所示。

认证信息需要根据实际环境修改。

public static final String PRINCIPAL= "test@HADOOP.COM";
public static final String KEYTAB = FemaleInfoCollector.class.getClassLoader().getResource("user.keytab").getPath();
public static final String KRB = FemaleInfoCollector.class.getClassLoader().getResource("krb5.conf").getPath();
// 判断是否为安全模式
    if("kerberos".equalsIgnoreCase(conf.get("hadoop.security.authentication"))){
       //安全登录
       System.setProperty("java.security.krb5.conf", KRB);
       LoginUtil.login(PRINCIPAL, KEYTAB, KRB, conf);
    }
分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

智能客服提问云社区提问