Jast blog Jast blog
首页
  • 《Ambari自定义开发教程》笔记
  • 《CDH教程》笔记
  • 《ClickHouse教程》笔记
  • 《HDFS教程》笔记
  • 《DolphinScheduler教程》笔记
  • 《Hbase教程》笔记
  • 《Iceberg教程》笔记
  • 《Hive教程》笔记
  • 《Flume教程》笔记
  • 《Kafka教程》笔记
  • 《Impala教程》笔记
  • 《Hue教程》笔记
  • 《Spark教程》笔记
  • 《Flink教程》笔记
  • 《Phoenix教程》笔记
  • 《ElasticSearch教程》笔记
  • 《Kylin教程》笔记
  • 《Storm教程》笔记
  • 《Yarn教程》笔记
  • 《Presto教程》笔记
  • 《图数据库教程》笔记
  • 《Kerberos教程》笔记
  • 《Maxwell教程》笔记
  • 《MinIO教程》笔记
  • 《DataX教程》笔记
  • 《Superset教程》笔记
  • 《IOTDB教程》笔记
  • 《大数据相关》笔记
  • 《PaddleNLP教程》笔记
  • 《Nginx教程》笔记
  • 《Java技术文档》
  • 《Maven教程》笔记
  • 《IDEA使用教程》
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档

Jast-zsh

如果你知道你要去哪里,全世界都会给你让路。
首页
  • 《Ambari自定义开发教程》笔记
  • 《CDH教程》笔记
  • 《ClickHouse教程》笔记
  • 《HDFS教程》笔记
  • 《DolphinScheduler教程》笔记
  • 《Hbase教程》笔记
  • 《Iceberg教程》笔记
  • 《Hive教程》笔记
  • 《Flume教程》笔记
  • 《Kafka教程》笔记
  • 《Impala教程》笔记
  • 《Hue教程》笔记
  • 《Spark教程》笔记
  • 《Flink教程》笔记
  • 《Phoenix教程》笔记
  • 《ElasticSearch教程》笔记
  • 《Kylin教程》笔记
  • 《Storm教程》笔记
  • 《Yarn教程》笔记
  • 《Presto教程》笔记
  • 《图数据库教程》笔记
  • 《Kerberos教程》笔记
  • 《Maxwell教程》笔记
  • 《MinIO教程》笔记
  • 《DataX教程》笔记
  • 《Superset教程》笔记
  • 《IOTDB教程》笔记
  • 《大数据相关》笔记
  • 《PaddleNLP教程》笔记
  • 《Nginx教程》笔记
  • 《Java技术文档》
  • 《Maven教程》笔记
  • 《IDEA使用教程》
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
  • Ambari自定义服务开发-项目初始化
  • Ambari自定义服务开发-组件安装启动停止卸载介绍
  • Ambari自定义服务开发-自定义服务配置文件在Ambari中的设置方法
  • Ambari自定义服务开发-自定义服务配置文件生成
  • Ambari自定义服务开发-代码如何获取配置参数
  • Ambari自定义服务开发-修改配置文件提示服务重启
  • Ambari自定义服务开发-自定义告警
  • Ambari自定义服务开发-查看历史版本配置
  • Ambari自定义服务开发-调试方法
    • 日志输出调试
      • 代码中日志输出查看
      • 终极调试方法
    • 开发修改代码发布到服务器如何快速生效
      • metainfo.xml
      • configuration/xxx.xml
      • package - python代码调试
      • alerts.json
      • quicklinks/quicklinks.json
      • widgets.json 与 metrics.json
      • themes/theme.json
      • rolecommandorder.json
  • Ambari自定义服务开发-执行Shell命令
  • Ambari自定义服务开发-快捷访问链接生成
  • Ambari自定义服务开发-服务组件启动顺序设置
  • Ambari自定义服务开发-服务组件安装依赖另外一个组件设置
  • Ambari自定义服务开发-监控指标Metrics介绍
  • Ambari自定义服务开发-使用客户端下载配置文件
  • Ambari自定义服务开发-美化(增强型)配置参数设置
  • Ambari自定义服务开发-自定义开发安装包整合到Ambari-Server中
  • Ambari自定义服务开发-自定义脚本运行
  • Ambari自定义服务开发-常用函数
  • Ambari自定义服务开发问题处理-中文乱码
  • Ambari自定义服务开发问题处理-告警项UNKWN
  • Ambari自定义服务开发问题处理-Agent安装服务报错unknown
  • Ambari自定义服务开发问题处理-修改源码配置,服务重启后未生效
  • 《Ambari自定义开发教程》笔记
Jast-zsh
2024-04-08
目录

Ambari自定义服务开发-调试方法

[toc]

# 日志输出调试

# 代码中日志输出查看

在开发时代码中为了方便调试会需要加一些日志输出,如下代码:

from resource_management.core.logger import Logger

config = Script.get_config()
stack_root = Script.get_stack_root()
tmp_dir = Script.get_tmp_dir()
Logger.info("sync info : ")
1
2
3
4
5
6

在WebUI中执行时的日志:

image-20240220175756036

image-20240220175810845

image-20240220175954918

tip: 也可以在代码中直接使用print('xxxx')进行日志输出,输出结果和上面就差一个时间,上面输出的内容去掉日志前面的时间就是print方法输出

# 终极调试方法

如果我们使用日志输出招不到日志在哪个文件,我们可以使用下面这个暴力方法,直接创建一个文件,将想要打印的日志写入进去

File(['/var/run/test/file.txt'],
         mode=0644,
         content='日志内容'
         )
1
2
3
4

# 开发修改代码发布到服务器如何快速生效

常规调试的步骤是:

步骤1:卸载服务

步骤2:重启 ambari-server 进程,执行命令:ambari-server restart

步骤3:重装服务

下面针对修改每个不同的配置文件如何快速生效进行介绍:

# metainfo.xml

替换文件到 ambari-server 所在节点的 /var/lib/ambari-server/resources/stacks/HDP/3.1/services/DORIS 目录下,重启 ambari-server 后生效,无需重装所属服务。

# configuration/xxx.xml

  1. 先卸载该服务

  2. 重启 ambari-server 服务进程。

  3. 再安装该服务,这时的 configuration/xxx.xml 文件才会生效。

  4. 如果是修改 xml 文件中的已有属性<name>,重启 ambari-server 后,被修改的属性就消失了,因为之前的属性被修改了,

# package - python代码调试

  1. 在ambari-server重启的过程中,它会将common-services和stacks/HDP等相关的服务部署脚本分发到ambari-agent节点的/var/lib/ambari-agent/cache目录下。

不过stacks/HDP/\<version>/services/目录下的服务,只会将package目录下的文件分发下来。

  1. 然后等安装部署服务的时候,每个ambari-agent节点都分配了一些安装组件嘛,这时候执行的部署脚本就是用的各自节点/var/lib/ambari-agent/cache目录下的脚本。比如DORIS ,就是执行的/var/lib/ambari-agent/cache/stacks/HDP/3.1/services/DORIS里面的文件。

  2. 知道了这种安装部署机制以后,比如你修改了DORIS/package下面的文件,你可以直接将文件替换到/var/lib/ambari-agent/cache/stacks/HDP/3.1/services/DORIS/package目录下,它是实时生效的,不用重启ambari-server和重装服务。

tip:

需要确认 package 下面的文件是哪个服务组件触发的。如果是DORIS这个组件用到文件,那么替换到这个组件所在节点的/var/lib/ambari-agent/cache/stacks/HDP/3.1/services/DORIS目录下。然后就可以重启DORIS服务组件,来看效果了。这样更节省时间。

# alerts.json

  1. 如果是修改 alerts.json 文件内容,将其替换到ambari-server所在节点的/var/lib/ambari-server/resources/stacks/HDP/3.1/services/DORIS下。则需要重启 Ambari Server ,之后,并卸载、重新安装服务,Ambari 会将新预定义的 Alert 信息保存到数据库中。

  2. 如果是修改 SCRIPT 类型的 py 文件,则只需要将修改后的 py 文件放置到 告警组件所在机器的 /var/lib/ambari-agent/cache/stacks/HDP/3.1/services/DORIS/package/alerts 目录下即可(以 DORIS 为例)。实时更新,不需要重启 ambari-server ,大概等待一分钟后,程序刷新。

# quicklinks/quicklinks.json

将 quicklinks.json 文件替换到 ambari-server 节点的 /var/lib/ambari-server/resources/stacks/HDP/3.1/services/DORIS/quicklinks 目录下,重启ambari-server即可生效,无需重装服务。

# widgets.json 与 metrics.json

有 widget 表会记录集群中的 widget 小部件信息,而且会随着你服务重装,这里面的信息也会越来越多。进而导致 ambari 页面上的

widget browser 里面有重复的 widget 。默认新的 widget 需要自己手动点击ADD按钮添加。

首次 widgets.json 和 metrics.json 文件上传到服务器后,仅需重启 ambari-server 即可生效。后续的 widgets.json 和 metrics.json 文件如果要修改的话,均需要重启 ambari-server 和 重装服务 才可生效。

但是,生效以后,需要在 “widget Browser” 里面手动添加最新的 widget 部件。默认,ambari 会一直展示旧的数据。这些 widget 部件信息存储在 widget 这个表中。所以需要在 “widget Browser” 里面手动添加最新的 widget 部件。

# themes/theme.json

  1. 在 ambari-server 所在主机上的自定义服务目录中替换 theme json 文件(主题文件类型是 json,需要在 metainfo.xml 中指定主题文件名称。)

  2. 重启 ambari-server 服务进程。

  3. 在 ambari 页面上,即可查看更新后的自定义服务配置样式。

tip:还是需要自己多调试,多修改看效果。

如果没有出现预期的效果,建议多看一下 主题 json 文件内容,多和 已有的主题文件作对比(比如,HBase 的 theme.json 文件)。

# rolecommandorder.json

  1. 替换 rolecommandorder.json 文件

  2. 删除该服务与依赖的服务,比如本视频示例的 ELASTICSEARCH 与 ZOOKEEPER 服务。

  3. 重启 ambari-server 服务进程。

  4. 安装服务(ELASTICSEARCH 与 ZOOKEEPER ),进行验证。

上次更新: 2024/04/08, 10:55:49
Ambari自定义服务开发-查看历史版本配置
Ambari自定义服务开发-执行Shell命令

← Ambari自定义服务开发-查看历史版本配置 Ambari自定义服务开发-执行Shell命令→

最近更新
01
Linux可视化监控
02-26
02
Maven私服搭建
02-26
03
当ElasticSearch时间字段设置多个格式到底是用的哪个?
01-19
更多文章>
Theme by Vdoing | Copyright © 2016-2025 Jast-zsh | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式