当前位置: 首页 > news >正文

华为云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 走回环的配置。前面废话有点多,只是记录一下问题解决的过程。有问题留言第一时间解决~ 在这里插入图片描述 吐槽一下幸亏华为云没喊遥遥领先,也不确定是否真联系了,授权也给他们开了,自由登录服务,最后这答复 问题没解决差点给我解决了。

相关文章:

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

华为云centos7.9按装ambari 2.7.5踩坑记录 前言升华总结 前言 一般都是废话,本人专业写bug业余运维。起初找了三台不废弃的台式机,开始重装centos系统,开始了HDP3.1.5Ambari2.7.5安装。 推荐一波好文,一路长绿。跑了一段时间没啥…...

重生之我们在ES顶端相遇第15 章 - ES 的心脏-倒排索引

文章目录 前言为什么叫倒排索引数据结构如何生成如何查询TF、IDF参考文档 前言 上一章,简单介绍了 ES 的节点类型。 本章,我们要介绍 ES 中非常重要的一个概念:倒排索引。 ES 的全文索引就是基于倒排索引实现的。 本章内容建议重点学习&…...

金刚石切削工具学习笔记分享

CVD钻石-合成单晶钻石之一 金刚石具有极高的硬度和耐磨性、较低的摩擦系数、较高的弹性模量、较高的热导率、较低的热膨胀系数、与有色金属的亲和力较小等优点,是目前最硬的工具材料,主要分为单晶金刚石和聚晶金刚石两大类。单晶金刚石又分为天然单晶金…...

【文献阅读】基于原型的自适应方法增强未见到的构音障碍者的语音识别

基于原型的自适应方法增强未见到的构音障碍者的语音识别 文献原文链接 https://www.isca-archive.org/interspeech_2024/wang24x_interspeech.pdf 引言 构音障碍是一种由神经系统疾病或肌肉异常引起的言语障碍,影响了个体清晰发音的能力。这种情况常伴随脑瘫、帕金森病和头部…...

Kafka-Go学习

文章目录 1. **安装 kafka-go**2. **基本概念**3. **kafka-go 基本用法**3.1 创建 Producer(生产者)3.2 创建 Consumer(消费者)3.3 生产者和消费者配置详解生产者配置 (kafka.WriterConfig)消费者配置 (kafka.ReaderConfig) 4. **…...

Nginx反向代理出现502 Bad Gateway问题的解决方案

🎉 前言 前一阵子写了一篇“关于解决调用百度翻译API问题”的博客,近日在调用其他API时又遇到一些棘手的问题,于是写下这篇博客作为记录。 🎉 问题描述 在代理的遇到过很多错误码,其中出现频率最高的就是502&#x…...

通信工程学习:什么是VLAN虚拟局域网

VLAN:虚拟局域网 VLAN(Virtual Local Area Network,虚拟局域网)是一种将物理局域网在逻辑上划分成多个广播域的通信技术。以下是关于VLAN的详细解释: 一、VLAN虚拟局域网的定义与概述 VLAN通过逻辑方式将网络中的设备…...

python qt5 常用

QT5中如何设置让窗口根据屏幕比例显示设置? desktop QDesktopWidget().screenGeometry() self.resize(int(desktop.width() * 0.3), int(desktop.height()*0.5)) QT5中关于背景穿透问题的处理方式? 场景如下:我们在开发的时候&#xff0c…...

漏洞复现_永恒之蓝

1.概述 永恒之蓝(EternalBlue)是一个影响Windows操作系统的远程代码执行漏洞,编号为CVE-2017-0144,最初由美国国家安全局(NSA)开发并利用,后来被黑客组织Shadow Brokers泄露。该漏洞存在于SMBv…...

PyCharm的使用

PyCharm的入门使用教程 下载和安装PyCharm: 首先,访问JetBrains官方网站(https://www.jetbrains.com/pycharm/)下载PyCharm的最新版本。根据您的操作系统选择合适的版本进行下载。 安装完成后,打开PyCharm。 创建新…...

浅谈C#之AutoResetEvent和ManualResetEvent

一、基本介绍 AutoResetEvent和ManualResetEvent都是同步原语,它们用于线程之间的协调和通信。它们都是从EventWaitHandle类派生的,但它们在重置事件状态的行为上有所不同。 二、简单示例 AutoResetEvent AutoResetEvent是一个自动重置的事件。当一个线…...

【网络安全 | 靶机搭建】修改镜像源、更新软件源、安装git、更改python版本等

文章目录 0x00、必要准备0x01、修改镜像源0x02、更新软件源并清除缓存0x03、安装git0x04、更改默认Python版本为python30x05、安装增强功能0x06、vmware虚拟机导出iso0x00、必要准备 安装虚拟机时必须保存用户名、密码,用于后续操作,可以截图保存: 以下内容按个人需要进行配…...

VuePress搭建文档网站/个人博客(详细配置)主题配置

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…...

Go语言笔记

目录 一、变量声明 二、流程控制 if(条件判断) for(循环结构) Switch(简化if) goto(跳出循环) 三、运算符 1、算数运算符 2、关系运算符 3、逻辑运算符 4、位运算符 5、…...

java缓存介绍

在Java编程中,缓存技术是一种非常有效的优化手段,用于减少数据访问的延迟和提高应用性能。缓存技术通过存储数据的副本在内存中,使得后续对相同数据的请求能够直接从内存中快速获取,而不需要再次进行耗时的磁盘访问或网络请求。 缓…...

react中diff的选择性子树渲染

在React中,组件的渲染是高效的,这得益于React的虚拟DOM(Virtual DOM)和diff算法。React的diff算法主要用于比较旧虚拟DOM树和新虚拟DOM树之间的差异,并仅更新实际DOM中需要变化的部分,从而提高性能。 关于…...

Git clone远程仓库没有其他分支的问题

在使用Git克隆(Git clone)时,可能遇到分支不全的问题。有以下几种可能的原因和解决方法: 未将所有分支克隆下来:默认情况下,Git只会克隆远程仓库的主分支。如果您想要克隆其他分支,可以使用以下…...

山东潍坊戴尔存储服务器维修 md3800f raid恢复

山东戴尔存储故障维修 存储型号:DELL PowerVault md3800f 故障问题:存储除尘后通电开机,发现有物理硬盘没有插到位,用户带电拔插了多块物理盘,导致关连的磁盘阵列掉线,卷失败; 处理方式&#xf…...

Hive企业级调优[6]——HQL语法优化之任务并行度

目录 HQL语法优化之任务并行度 优化说明 Map端并行度 Reduce端并行度 优化案例 HQL语法优化之任务并行度 优化说明 对于分布式计算任务来说,设置一个合理的并行度至关重要。Hive的计算任务依赖于MapReduce框架来完成,因此并行度的调整需要从Map端和…...

Excel 冻结多行多列

背景 版本:office 2021 专业版 无法像下图内某些版本一样,识别选中框选的多行多列。 如下选中后毫无反应,点击【视图】->【冻结窗口】->【冻结窗格】后自动设置为冻结第一列。 操作 如下,要把前两排冻结起来。 选择 C1&a…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度​

一、引言:多云环境的技术复杂性本质​​ 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,​​基础设施的技术债呈现指数级积累​​。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...

web vue 项目 Docker化部署

Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage)&#xff1a…...

vscode里如何用git

打开vs终端执行如下: 1 初始化 Git 仓库(如果尚未初始化) git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

设计模式和设计原则回顾

设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)

要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况,可以通过以下几种方式模拟或触发: 1. 增加CPU负载 运行大量计算密集型任务,例如: 使用多线程循环执行复杂计算(如数学运算、加密解密等)。运行图…...

Linux --进程控制

本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...

Python 包管理器 uv 介绍

Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...

python报错No module named ‘tensorflow.keras‘

是由于不同版本的tensorflow下的keras所在的路径不同,结合所安装的tensorflow的目录结构修改from语句即可。 原语句: from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后: from tensorflow.python.keras.lay…...

Spring是如何解决Bean的循环依赖:三级缓存机制

1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间‌互相持有对方引用‌,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...

STM32HAL库USART源代码解析及应用

STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...