IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 在启用了Kerberos的ambari集群上添加组件 -> 正文阅读

[大数据]在启用了Kerberos的ambari集群上添加组件

背景

有一个项目的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

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-10-13 11:30:47  更:2021-10-13 11:32:27 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 1:31:42-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码