栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

在启用了Kerberos的ambari集群上添加组件

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在启用了Kerberos的ambari集群上添加组件

在启用了Kerberos的ambari集群上添加组件
  • 背景
  • 步骤
    • 1 .修复安装服务时卡在install pending的异常
    • 2.添加服务
    • 3.分发keytab
    • 4.重启已添加的服务
    • 5.修改yarn队列配置文件 fair-scheduler.xml

背景

有一个项目的ambari集群启用了Kerberos认证,总共有24台机器,只有5台机器部署了NodeManger,可用资源只有220G,60核,高峰期业务排队时间较长,同时其他机器资源利用率低,业主希望在所有机器上都部署上yarn,提供作业并行度。

步骤 1 .修复安装服务时卡在install pending的异常
在ambari页面点击了添加服务之后,组件状态一直卡在“install pengding”,观察ambari-server的日志,后台一直在刷
ERROR [ambari-client-thread-35] KerberosHelperImpl:1938 - The 'krb5-conf' configuration is not available

查阅相应源码
KerberosHelperImpl.java

private KerberosDetails getKerberosDetails(Cluster cluster, Boolean manageIdentities)
      throws KerberosInvalidConfigurationException, AmbariException {
    ......
    Config configKrb5Conf = cluster.getDesiredConfigByType("krb5-conf");
    if (configKrb5Conf == null) {
      String message = "The 'krb5-conf' configuration is not available";
      LOG.error(message);
      throw new AmbariException(message);
    }
	......
    Config configKerberosEnv = cluster.getDesiredConfigByType("kerberos-env");
    if (configKerberosEnv == null) {
      String message = "The 'kerberos-env' configuration is not available";
      LOG.error(message);
      throw new AmbariException(message);
    }
    ......
  }

ClusterImpl.java

public Config getDesiredConfigByType(String configType) {
    loadConfigurations();
    clusterGlobalLock.readLock().lock();
    try {
      for (ClusterConfigMappingEntity e : clusterDAO.getClusterConfigMappingEntitiesByCluster(getClusterId())) {
        if (e.isSelected() > 0 && e.getType().equals(configType)) {
          return getConfig(e.getType(), e.getTag());
        }
      }

      return null;
    } finally {
      clusterGlobalLock.readLock().unlock();
    }
  }

发现ambari不是调用的系统/etc/krb5.conf,所以怎么修改都没有用,ambari将krb5.conf也记录到元信息库中,根据代码找到元信息记录

select config_id, selected, create_timestamp from clusterconfig where type_name = 'kerberos-env';
config_id | selected | create_timestamp

-----------+----------+------------------
208 | 0 | 1589796215822
210 | 0 | 1589800820822 
(2 rows)

select config_id, selected, create_timestamp from clusterconfig where type_name =  'krb5-conf';

209 | 0 | 1589796215857
211 | 0 | 1589800820858
(2 rows)

发现所有记录的selected字段都是0,而代码里明确写了,只有selected的值大于0才有效,所以解决办法就是

update clusterconfig set selected=1 where config_id=210;
update clusterconfig set selected=1 where config_id=211;
2.添加服务

通过ambari server webUI添加需要安装的服务,可能会弹出输入管理员的kerberos帐号密码的弹框,直接填好就行

3.分发keytab

在给机器添加新组件时,ambari会创建对应服务和主机名的principal,但是不会生成keytab,此时应该有两种方案,一时通过ambari 的webUI 重新生成所有keytab,但因为有服务在运行,所以采用手动分发的方式

kadmin.local
	ktadd -norandkey -k /root/keytab/dn.service.keytab.node1 dn/node1@TEST.COM
	exit
scp /root/keytab/dn.service.keytab.node1 root@node1:/etc/security/keytabs/dn.service.keytab
ssh node1 "chown hdfs:hadoop /etc/security/keytabs/dn.service.keytab"
4.重启已添加的服务

ambari 页面操作

5.修改yarn队列配置文件 fair-scheduler.xml
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/318851.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号