华为云centos7.9按装ambari 2.7.5 hostname 踩坑记录

news2024/9/22 10:28:55

华为云centos7.9按装ambari 2.7.5踩坑记录

      • 前言
      • 升华
      • 总结

前言

一般都是废话,本人专业写bug业余运维。起初找了三台不废弃的台式机,开始重装centos系统,开始了HDP3.1.5+Ambari2.7.5安装。
推荐一波好文,一路长绿。跑了一段时间没啥问题,项目开始推线上,兴起冲冲申请费用,开了几台ECS机器8C 16G 嘻嘻嘻 。有了前面的经验,这路子熟

  • 配置好免密
  • 修改hostname
  • 装好mysql
    噼里啪啦一顿傻瓜式的操作。初始化机器以及按装agent这一步报错如下:
  bash: /var/lib/ambari-agent/bin/ambari-agent: Is a directory
  ("INFO 2024-09-19 17:31:34,198 DataCleaner.py:120 - Data cleanup started
  INFO 2024-09-19 17:31:34,199 DataCleaner.py:122 - Data cleanup finished
  INFO 2024-09-19 17:31:34,199 hostname.py:67 - agent:hostname_script configuration not defined thus read hostname 'localhost.localdomain' using socket.getfqdn().
  ERROR 2024-09-19 17:31:34,199 main.py:269 - Ambari agent machine hostname (localhost.localdomain) does not match expected ambari server hostname (hdp02). Aborting registration. Please check hostname, hostname -f and /etc/hosts file to confirm your hostname is setup correctly
  INFO 2024-09-19 17:31:34,199 ExitHelper.py:57 - Performing cleanup before exiting...
  INFO 2024-09-19 17:31:34,200 AlertSchedulerHandler.py:159 - [AlertScheduler] Stopped the alert scheduler.
  INFO 2024-09-19 17:31:34,200 AlertSchedulerHandler.py:159 - [AlertScheduler] Stopped the alert scheduler.
  INFO 2024-09-19 17:32:44,751 main.py:155 - loglevel=logging.INFO
  INFO 2024-09-19 17:32:44,754 Hardware.py:68 - Initializing host system information.
  INFO 2024-09-19 17:32:44,759 Hardware.py:188 - Some mount points were ignored: /dev, /dev/shm, /run, /sys/fs/cgroup, /run/user/0  

Amabri agent 获取hostname为localhost.localdomain 看了一下 cat /etc/hosts,获取的是本地回环地址。
hostname -f cat /etc/hostname 都没啥问题,可能是没看日历,或者少拜一步,在这里插入图片描述重启 ambari-server …

报错依旧,可能操作姿势不太对,下定决心重做系统。在这里插入图片描述这次应该没事了…

报错照旧,本着专业写bug的态度,就找了一下hostname.py 这个文件find / -name 'hostname.py' 获取hostname 方式。调用Ambari 开发者确实厉害,提供了很多便利的地方,获取hostname 可以允许自行配置hostname_script。当然本地的三台机器我也是这么傻瓜式的按装的呢,没配置最后走 socket.getfqdn() 获取全局限定域名,源码如下 :

def hostname(config):
 global cached_hostname
 if cached_hostname is not None:
   return cached_hostname

 try:
   scriptname = config.get('agent', 'hostname_script')
   try:
     osStat = subprocess32.Popen([scriptname], stdout=subprocess32.PIPE, stderr=subprocess32.PIPE)
     out, err = osStat.communicate()
     if (0 == osStat.returncode and 0 != len(out.strip())):
       cached_hostname = out.strip()
       logger.info("Read hostname '{0}' using agent:hostname_script '{1}'".format(cached_hostname, scriptname))
     else:
       logger.warn("Execution of '{0}' failed with exit code {1}. err='{2}'\nout='{3}'".format(scriptname, osStat.returncode, err.strip(), out.strip()))
       cached_hostname = socket.getfqdn()
       logger.info("Read hostname '{0}' using socket.getfqdn() as '{1}' failed".format(cached_hostname, scriptname))
   except:
     cached_hostname = socket.getfqdn()
     logger.warn("Unexpected error while retrieving hostname: '{0}', defaulting to socket.getfqdn()".format(sys.exc_info()))
     logger.info("Read hostname '{0}' using socket.getfqdn().".format(cached_hostname))
 except:
   cached_hostname = socket.getfqdn()
   logger.info("agent:hostname_script configuration not defined thus read hostname '{0}' using socket.getfqdn().".format(cached_hostname))

 cached_hostname = cached_hostname.lower()
 return cached_hostname

执行 python 输入 import socket 继续输入print(socket.gethostname())
嗯,是配置过的名字。再次输出print(socket.getfqdn()) 哦豁返回的是 location.localdomain, 果然报错日志没骗我,对比一下本地机器的输入输出 本地机器正常。心里有一万个***在奔腾,然后提了个工单,截图如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

最后说我调用的函数有问题,ambari 确实不是遥遥领先写得坚决不能承认问题 在这里插入图片描述 在这里插入图片描述 。当然也有决绝方式,不能正常返回就退一步,退一步不行再退一步,修改vim /etc/ambari-agent/conf/ambari-agent.ini 指定一下hostname_script 配置,配置如下:

#!/bin/bash  
hostname=$(hostname -f)  # 获取完全限定域名  
echo $hostname

修改 vim /etc/ambari-agent/conf/ambari-agent.ini

[agent]  
hostname_script=/path/to/hostname.sh

继续按装,其他节点有问题,就同步一份。后来仔细想了想,不行肯定还有其他地方用到hostname.py 索性直接把 hostname.py改了算了,简单暴力 直接全局替换 socket.getfqdn() -> socket.gethostname()。ambari agent 检查过了 在这里插入图片描述 ,装好了(还有其他乱七八问题) 后到了下班点,下班牛马周末继续。

第二天早起看到华为云的工单,然后继续说我的用的函数有问题在这里插入图片描述在这里插入图片描述

, 我专业写bug的是我想用啥就用啥的吗?这解决问题的态度跟我朋友一样,能解决的问题看心情解决一下,解决不了的就先把提问题的解决掉。这两天刷抖音看到的毒鸡汤也有点多,退步换来的只有得寸进尺。最后小哥也给我打电话解释了,他专业业有限,也问过os那边的同事 确定hostname配置没错。他说那总结了一下是调用函数的问题,继续离谱,然后说客户也有很多其他问题,阿里云没问题切换华为云就这问题那问题的。本人只是为了解决问题,既然他们靠不住,自己再试试,业余运维真心不敢乱改源码,尤其这种组件的,后期爆个雷,真的从程序和人一个能跑选后者了。担心的还主要是万一hadoop中间件内部也有用这种方式获取hostname的。bug写多了有点后怕。

查了一下 配置fqdn的文章。直接不让配置的hostname走回环地址,利用

nmcli general hostname hadoop-0002.com
nmcli networking off 
nmcli networking on

注意 最好在华为云控制台远程登录,因为涉及到网络重启,有可能执行nmcli networking off 链接有会断。

重新试了一下 惊奇的发现socket.getfqdn()正确返回了 在这里插入图片描述 继续重做系统,每台机器都执行一下,最后完美搭建~。

升华

问题是让socket.getfqdn()返回正确的hostname,那么为何不从hosts文件入手或者看一下getfqdn()是如何返回的。推荐一波 看到前面我懵了 在这里插入图片描述 直接把hosts文件里的hostname对应的回环地址那一行删掉不就行了

[root@tms-0002 ~]# cat /etc/hosts
::1	localhost	localhost.localdomain	localhost6	localhost6.localdomain6
127.0.0.1	localhost	localhost.localdomain	localhost4	localhost4.localdomain4
127.0.0.1	tms-0002	tms-0002
192.168.11.90 tms01
192.168.11.138 tms02
192.168.11.190 tms03
[root@tms-0002 ~]# vim /etc/hosts
[root@tms-0002 ~]# python
Python 2.7.5 (default, Nov 14 2023, 16:14:06)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-44)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import socket
>>> socket.getfqdn()
'tms-0002'
>>>

在这里插入图片描述 没错就是127.0.0.1 tms-0002 tms-0002 这一行。HDP装好了,算求不重新搞了~
在这里插入图片描述

总结

回顾一下,其实问题也不是啥大问题,就是因为 华为云初始化机器的时候,hosts文件中多了一行hostname 走回环的配置。前面废话有点多,只是记录一下问题解决的过程。有问题留言第一时间解决~ 在这里插入图片描述 吐槽一下幸亏华为云没喊遥遥领先,也不确定是否真联系了,授权也给他们开了,自由登录服务,最后这答复 问题没解决差点给我解决了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2154854.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024年最新版TypeScript学习笔记——泛型、接口、枚举、自定义类型等知识点

今天带来的是来自尚硅谷禹神2024年8月最新的TS课程的学习笔记,不得不说禹神讲的是真的超级棒! 文章目录 TS入门JS中的困扰静态类型检查编译TS命令行编译自动化编译 类型检查变量和函数类型检查字面量类型检查 类型推断类型声明声明对象类型声明函数类型…

深度学习02-pytorch-08-自动微分模块

​​​​​​​ 其实自动微分模块,就是求相当于机器学习中的线性回归损失函数的导数。就是求梯度。 反向传播的目的: 更新参数, 所以会使用到自动微分模块。 神经网络传输的数据都是 float32 类型。 案例1: 代码功能概述: 该…

【Python篇】深入机器学习核心:XGBoost 从入门到实战

文章目录 XGBoost 完整学习指南:从零开始掌握梯度提升1. 前言2. 什么是XGBoost?2.1 梯度提升简介 3. 安装 XGBoost4. 数据准备4.1 加载数据4.2 数据集划分 5. XGBoost 基础操作5.1 转换为 DMatrix 格式5.2 设置参数5.3 模型训练5.4 预测 6. 模型评估7. 超…

重生之我们在ES顶端相遇第14 章 - ES 节点类型

文章目录 前言Coordinating nodeMaster-eligible nodeData nodeCoordinating only nodeRemote-eligible nodeMachine learning node 前言 通过前面的学习,我们已经初步的掌握了 ES 的大部分用法。 后面的篇章会介绍 ES 集群相关的内容。 本文着重介绍 ES 节点类型&…

华为HarmonyOS地图服务 3 - 如何开启和展示“我的位置”?

一. 场景介绍 本章节将向您介绍如何开启和展示“我的位置”功能,“我的位置”指的是进入地图后点击“我的位置”显示当前位置点的功能。效果如下: 二. 接口说明 “我的位置”功能主要由MapComponentController的方法实现,更多接口及使用方法…

软考高级:逻辑地址和物理地址转换 AI解读

一、题目 设某进程的段表如下所示,逻辑地址( )可以转换为对应的物理地址。 A. (0,1597)、(1,30)和(3,1390) B. (0&…

Vue3 中组件传递 + css 变量的组合

文章目录 需求效果如下图所示代码逻辑代码参考 需求 开发一个箭头组件&#xff0c;根据父组件传递的 props 来修改 css 的颜色 效果如下图所示 代码逻辑 代码 父组件&#xff1a; <Arrow color"red" />子组件&#xff1a; <template><div class&…

3DMAX乐高积木插件LegoBlocks使用方法

3DMAX乐高积木插件LegoBlocks&#xff0c;用户可以通过控件调整和自定义每个乐高积木的外观和大小。 【适用版本】 3dMax2009或更高版本&#xff08;不仅限于此范围&#xff09; 【安装方法】 3DMAX乐高积木插件无需安装&#xff0c;使用时直接拖动插件脚本文件到3dMax视口中…

TS 运行环境

1、TS Playground&#xff08;在线&#xff09; TS Playground 是一个在线 TypeScript 编辑器&#xff0c;它允许你编写、共享和学习 TypeScript 代码。 2、Stackblitz&#xff08;在线&#xff09; StackBlitz 是面向web开发人员的基于浏览器的协作IDE。StackBlitz消除了耗时…

握手传输 状态机序列检测(记忆科技笔试题)_2024年9月2日

发送模块循环发送0-7&#xff0c;在每个数据传输完成后&#xff0c;间隔5个clk&#xff0c;发送下一个 插入寄存器打拍处理&#xff0c;可以在不同的时钟周期内对信号进行同步&#xff0c;从而减少亚稳态的风险。 记忆科技笔试题&#xff1a;检测出11011在下一个时钟周期输出…

Python | 读取.dat 文件

写在前面 使用matlab可以输出为 .dat 或者 .mat 形式的文件&#xff0c;之前介绍过读取 .mat 后缀文件&#xff0c;今天正好把 .dat 的读取也记录一下。 读取方法 这里可以使用pandas库将其作为一个dataframe的形式读取进python&#xff0c;数据内容格式如下&#xff0c;根据…

VulnHub-Narak靶机笔记

Narak靶机笔记 概述 Narak是一台Vulnhub的靶机&#xff0c;其中有简单的tftp和webdav的利用&#xff0c;以及motd文件的一些知识 靶机地址&#xff1a; https://pan.baidu.com/s/1PbPrGJQHxsvGYrAN1k1New?pwda7kv 提取码: a7kv 当然你也可以去Vulnhub官网下载 一、nmap扫…

zabbix7.0容器化部署测试--(1)准备容器镜像

本文为zabbix7.0容器化部署测试系统文档之一&#xff0c;准备容器镜像。拟测试数据库后台为PostgreSQL16并启用timescaledb插件。 一、准备数据库容器镜像 因为不确定zabbix7.0对数据库timescaledb插件的版本要求&#xff0c;准备了现个镜像版本 1、准备timescaledb-2.14.2插…

linux 基础(一)mkdir、ls、vi、ifconfig

1、linux简介 linux是一个操作系统&#xff08;os: operating system&#xff09; 中国有没有自己的操作系统&#xff08;华为鸿蒙HarmonyOS&#xff0c;阿里龙蜥(Anolis) OS 8、百度DuerOS都有&#xff09; 计算机组的组成&#xff1a;硬件软件 硬件&#xff1a;运算器&am…

【速成Redis】03 Redis 五大高级数据结构介绍及其常用命令 | 消息队列、地理空间、HyperLogLog、BitMap、BitField

前言&#xff1a; 上篇博客我们讲到redis五大基本数据类型&#xff08;也是就下图的第一列&#xff09;。 【速成Redis】02 Redis 五大基本数据类型常用命令-CSDN博客文章浏览阅读1k次&#xff0c;点赞24次&#xff0c;收藏10次。该篇适用于速成redis。本篇我们将讲解&#…

MySQL | 知识 | NULL值是怎么存储的

NULL值有哪些语法影响 我们使用mysql时&#xff0c;使用 xx !aa 这种条件为什么无法筛选出值为NULL的字段呢。 是的&#xff0c;MySQL 中null 值确实无法通过这种条件筛选出来&#xff0c;因为 null 值的定义就跟普通值不一样。 拿官网的例子来说&#xff1a; mysql> INSE…

在Java中基于GeoTools的Shapefile读取乱码的问题解决办法

目录 前言 1、Shapefile属性字段编码的情况&#xff1a; 一、Shp文件常见的字符集编码 1、System编码 2、ISO-8859-1编码 3、UTF-8编码 二、GeoTools解析实战 1、未进行字符处理 2、乱码问题的解决 3、转码支持 4、属性字段编码结果 三、总结 前言 文件编码&#x…

RabbitMQ:交换机详解(Fanout交换机、Direct交换机、Topic交换机)

♥️作者&#xff1a;小宋1021 &#x1f935;‍♂️个人主页&#xff1a;小宋1021主页 ♥️坚持分析平时学习到的项目以及学习到的软件开发知识&#xff0c;和大家一起努力呀&#xff01;&#xff01;&#xff01; &#x1f388;&#x1f388;加油&#xff01; 加油&#xff01…

【笔记】第二节 轧制、热处理和焊接工艺

2.2 钢轨的轧制工艺 坯料进厂按标准验收, 然后装加热炉加热, 加热好的钢坯经高压水除鳞后进行轧制。轧出的钢轨经锯切、打印到中央冷床冷却, 然后装缓冷坑进行缓冷。缓冷后的钢轨进行矫直、轨端加工和端头淬火。钢轨入库前逐根进行探伤和外观检查。 钢轨的轧制 #mermaid-svg-…

【Delphi】使用 TPrototypeBindSource 和 LiveBindings 设计器示例

本教程展示了如何使用 LiveBindings Designer 和 TPrototypeBindSource 可视化地创建控件之间的 LiveBindings&#xff0c;以便快速开发只需很少或无需源代码的应用程序。 注意&#xff1a; TPrototypeBindSource 可用于为项目中的 LiveBindings 生成样本数据。在应用程序原型化…