04.Ambari自定义服务开发-自定义服务配置文件在Ambari中的设置方法
文章目录
官网说明: https://cwiki.apache.org/confluence/display/AMBARI/Configuration+support+in+Ambari
设置方法
服务需要配置的参数统一都是由.xml格式文件进行配置,默认会读取configuration/目录下的.xml文件。可以通过配置metainfo.xml中的<configuration-dir></configuration-dir>参数修改读取的目录。
在configuration/目录下的.xml文件,都会在WebUI显示,如下图所示:


配置文件设置Custom xxx
默认配置文件在WebUI可以配置两种,一种是我们在.xml文件中指定的配置对应Advanced xxx,另外一种是自定义配置对应上面页面中Custom xxx,自定义配置主要应对我们没有提前设置的参数,可以自定义补充。可以通过在.xml文件中参数supports_adding_forbidden="true"来控制是否需要Custom xxx,设置为false或者不添加该参数是需要Custom xxx。
配置方法
<configuration supports_adding_forbidden="true">...
</configuration>
详细配置Custom xxx的方法见05.Ambari自定义服务开发-自定义服务配置文件生成
配置文件详细的配置方法
.xml文件的整体格式
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
....
</configuration>
在<configuration>下可以设置我们需要配置的具体配置参数了
基础参数格式
<property><name>doris_pid_dir</name><display-name>Doris pid directory</display-name><value>/var/run/doris</value><description>Doris pid directory</description>
</property>
说明:
- name:属性名称
- display-name:WebUI中显示的属性名称,如未设置display-name,前端页面显示name值
- value:属性具体值,在WebUI中显示的值,可修改
- description:描述信息,在WebUI中显示。
在页面中如下图所示

value-attributes配置介绍
参考:https://blog.csdn.net/qq_44226094/article/details/130210270
用于设置参数的类型、是否为空等等
样例
<!-- 这里规定了属性值的类型为int,最小值为0,最大值为48000 -->
<value-attributes><!-- 值类型boolean/ int/ float/ directory/ directories/ content/value-list/ user/ password --><type>int</type><!--是否可复写 true/ false --><overridable>true</overridable><!-- 空值是否有效 true/ false --><empty-value-valid>true</empty-value-valid><!-- property是否 ui true/ false --><ui-only-property>true</ui-only-property><!-- 不可编辑 true / false --><read-only>true</read-only><!--值是否在安装时可编辑 true/ false --><editable-only-at-install></editable-only-at-install><!-- property 显示值 true/ false --><show-property-name></show-property-name><!-- 步长 --><increment-step>100</increment-step><!-- 可选值 --><selection-cardinality>2+</selection-cardinality><!-- property 文件名 --><property-file-name></property-file-name><!-- property文件类型 --><property-file-type></property-file-type><!-- 条目 --><entries><entry><value>2</value></entry><!-- ... --></entries><!-- 隐藏 --><hidden></hidden><!--条目是否可编辑 true/ false --><entries-editable></entries-editable><!-- 用户组 --><user-groups></user-groups><!-- 密钥库是否启用 true/ false --><keystore></keystore><!-- 最小值 --><minimum>0</minimum><!-- 最大值 --><maximum>48000</maximum><!-- 值单位 B/ MB/ ms/ Bytes/ milliseconds --><unit></unit><!--可见 --><visible></visible><!-- 复制 --><copy></copy>
</value-attributes>
设置属性在服务安装后不可修改
在<property>标签内添加:
<value-attributes><editable-only-at-install>true</editable-only-at-install>
</value-attributes>
使用样例
<property><name>test_editable-only-at-install</name><display-name>测试服务安装后不可编辑</display-name><value>123456</value><description>测试服务安装后不可编辑描述</description><value-attributes><editable-only-at-install>true</editable-only-at-install></value-attributes>
</property>
效果

设置允许字段为空
在<property>标签内添加:
<value-attributes><empty-value-valid>true</empty-value-valid>
</value-attributes>
使用样例
<property><name>test_empty-value-valid</name><display-name>测试字段允许为空</display-name><value>123456</value><description>测试字段允许为空描述</description><value-attributes><empty-value-valid>true</empty-value-valid></value-attributes></property>
tip:
empty-value-valid参数为true代表可以为空,不设置或者为false是不能为空如果不设置
<empty-value-valid>true</empty-value-valid>参数,不填写内容,会提示需要填写
效果

是否显示配置名称
在<property>标签内添加:
<value-attributes><!-- 默认为input输入框,当type为content时,即为文本框 --><type>content</type><!-- 是否显示配置名称 --><show-property-name>false</show-property-name>
</value-attributes>
使用样例
<property><name>test_show-property-name</name><display-name>测试是否显示配置名称</display-name><value>123456</value><description>测试是否显示配置名称描述</description><value-attributes><!-- 默认为input输入框,当type为content时,即为文本框 --><type>content</type><!-- 是否显示配置名称 --><show-property-name>false</show-property-name></value-attributes></property>
效果

参数类型设置
字符串类型
<property><name>fe_passwd</name><display-name>Frontend密码</display-name><value> </value><description>默认无密码,用来添加节点、检查节点连接客户端使用</description></property>
Password
<property><name>fe_passwd</name><display-name>Frontend密码</display-name><value> </value><value-attributes><type>password</type></value-attributes><description>默认无密码,用来添加节点、检查节点连接客户端使用</description></property>
样例

Boolean
<property><name>test_type_boolean</name><display-name>测试类型-boolean</display-name><value></value><value-attributes><type>boolean</type></value-attributes></property>
样例

Int
<property><name>test_type_int</name><display-name>测试类型-int</display-name><value></value><value-attributes><type>int</type></value-attributes></property>
样例

Float
<property><name>test_type_float</name><display-name>测试类型-float</display-name><value></value><value-attributes><type>float</type></value-attributes></property>
样例

Directory
填写目录格式数据,非目录格式无法填写
<property><name>test_type_directory</name><display-name>测试类型-directory</display-name><value></value><value-attributes><type>directory</type></value-attributes></property>
样例

Directories
填写多个目录格式数据,多个目录采用逗号分隔,或者换行分隔,换行分隔保存后会自动转换成逗号分隔
<property><name>test_type_directories</name><display-name>测试类型-directories</display-name><value></value><value-attributes><type>directories</type></value-attributes></property>
样例

Content-多行文本
<property><name>test_type_content</name><display-name>测试类型-content</display-name><value></value><value-attributes><type>content</type></value-attributes></property>
样例

user-自动创建用户和用户组
配置后会自动创建用户和用户组,并将用户设置到某个组下,doris-env.xml文件部分内容如下
<property><name>doris_user</name><display-name>Doris user</display-name><value>doris</value><description>Doris user</description><!--选择配置的属性为用户,设置成用户则会自动创建该用户--><property-type>USER</property-type><value-attributes><type>user</type><overridable>false</overridable><!--设置用户所属用户组--><user-groups><!--设置用户组属于,cluster-env->user_group的配置--><!--读取的配置最终会统一汇总到/var/lib/ambari-agent/data/command-xxx.json这个文件,可以在这里直接查询验证--><property><type>cluster-env</type><name>user_group</name></property><!--设置用户组属于,doris-env->doris_group的配置,这里doris-env就是当前文件的配置--><property><type>doris-env</type><name>doris_group</name></property></user-groups></value-attributes></property><property><!--创建用户组,组名为doris_group--><name>doris_group</name><display-name>doris User Group</display-name><value>doris_group</value><property-type>GROUP</property-type><description>doris user group.</description></property>
上面配置实现了:创建一个名为doris的用户,并将其分配到特定的用户组(doris_group和hadoop)
tip:cluster-env->user_group获取到的值就是hadoop
相关文章:
04.Ambari自定义服务开发-自定义服务配置文件在Ambari中的设置方法
文章目录 设置方法配置文件设置Custom xxx配置文件详细的配置方法.xml文件的整体格式基础参数格式value-attributes配置介绍设置属性在服务安装后不可修改设置允许字段为空是否显示配置名称参数类型设置字符串类型PasswordBooleanIntFloatDirectoryDirectoriesContent-多行文本…...
LSTM时间序列基础学习
时间序列 时间序列可以是一维,二维,三维甚至更高维度的数据,在深度学习的世界中常见的是三维时间序列,这三个维度分别是(batch_size,time_step,input_dimensions)。 其中time_step是时间步,它…...
『Z-Workshop』 6月22日线下ALCOVE分享活动
2024 求是创新 ZJUBCA Sponsored by the ALCOVE Community TIME:2024/06/22 ADD:浙江大学紫金港校区 --- Alcove 是 Aptos 公链与 Alibaba Cloud 共同打造的亚洲首个 Move 开发者社区,致力于支持开发者使用 Move 语言构建下一代 Web3 应用&am…...
【机器学习】机器学习重要方法——迁移学习:理论、方法与实践
文章目录 迁移学习:理论、方法与实践引言第一章 迁移学习的基本概念1.1 什么是迁移学习1.2 迁移学习的类型1.3 迁移学习的优势 第二章 迁移学习的核心方法2.1 特征重用(Feature Reuse)2.2 微调(Fine-Tuning)2.3 领域适…...
uniapp, [TypeError] “Failed to fetch dynamically imported module“ 报错解决思路
文章目录 1. 背景2. 报错3. 解决思路4. 思考参考1. 背景 最近基于uniapp开发一款设备参数调试的APP软件,在使用第三方插件的过程中,出现下面的报错。 2. 报错 [plugin:vite:import-analysis] Cannot find module ‘D:/leaning/uniapp/demo/jk-uts-udp示例/uni_modules/uts-…...
四川省高等职业学校大数据技术专业建设暨专业质量监测研讨活动顺利开展
6月21日,省教育评估院在四川邮电职业技术学院组织开展全省高等职业学校大数据技术专业建设暨专业质量监测研讨活动。省教育评估院副院长赖长春,四川邮电职业技术学院党委副书记、校长冯远洪,四川邮电职业技术学院党委委员、副校长程德杰等出席…...
深入解析三大跨平台开发框架:Flutter、React Native 和 uniapp
深入解析三大跨平台开发框架:Flutter、React Native 和 uniapp 在移动开发中,跨平台开发框架已经成为开发者的首选工具。本篇将深入解析三大主流跨平台开发框架:Flutter、React Native 和 uniapp。下面将详细探讨它们的原理、优势和劣势。 …...
【吊打面试官系列-MyBatis面试题】#{}和${}的区别是什么?
大家好,我是锋哥。今天分享关于 【#{}和${}的区别是什么?】面试题,希望对大家有帮助; #{}和${}的区别是什么? #{} 是预编译处理,${}是字符串替换。 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网…...
解决HTTP 400 Bad Request错误的方法
解决HTTP 400 Bad Request错误的方法 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 在进行网络通信时,HTTP 400 Bad Request错误是相对常见的问题…...
Html的表单标签。(Java程序员需要掌握的前端)
表单标签 2.5.1 表单 2.5.1.1 介绍 那表单呢,在我们日常的上网的过程中,基本上每天都会遇到。比如,我们经常在访问网站时,出现的登录页面、注册页面、个人信息提交页面,其实都是一个一个的表单 。 当我们在这些表单中录入数据之后…...
Arduino (esp ) 下String的内存释放
在个人的开源项目 GitHub - StarCompute/tftziku: 这是一个通过单片机在各种屏幕上显示中文的解决方案 中为了方便快速检索使用了string,于是这个string在esp8266中占了40多k,原本以为当string设置为""的时候这个40k就可以回收,结果发觉不行…...
图灵虚拟机配置
导入虚拟机 点击新建,选择虚拟硬盘文件 环境机器.vmdk 配置网络...
【SQL常用日期函数(一)】
SQL 常用日期函数-基于impala 引擎 当前日期(YYYY-MM-DD) SELECT CURRENT_DATE(); -- 2024-06-30昨天 SELECT CURRENT_DATE(); -- 2024-06-30 SELECT CAST( DAYS_ADD(TO_DATE( CURRENT_DATE() ), -1 ) AS VARCHAR(10) ); -- 2024-06-29 SELECT CAST( …...
C++操作系列(二):VSCode安装和配置C++开发环境
1. VSCode下载 进入VSCode的官网网页:Download Visual Studio Code - Mac, Linux, Windows 下载相应的版本: 2. 安装VSCode 安装到指定位置: 一路下一步,直至安装完成: 3. 安装C插件 3.1. 安装C/C 点击扩展图标&…...
【java12】java12新特性之File的mismatch方法
Java12引入了一个新的方法 mismatch,它属于java.nio.file.Files类。此方法用于比较两个文件的内容,并返回第一个不匹配字节的位置。如果两个文件完全相同,则返回-1。 Files.mismatch 方法声明 public static long mismatch(Path path1, Pat…...
uni-app (通过HBuilderX 和 VS Code 开发)详细连接过程教学。
使用 HBuilderX 创建 uni-app 项目 并编译到微信开发者工具。 uni-app 支持两种方式创建项目: 通过 HBuilderX 创建 通过命令行创建 首先我们需要先下载HBuilderX 下载链接地址:DCloud - HBuilder、HBuilderX、uni-app、uniapp、5、5plus、mui、wap2…...
安宝特方案 | AR术者培养:AR眼镜如何帮助医生从“看”到“做”?
每一种新药品的上市都需要通过大量的临床试验,而每一种新的手术工具在普及使用之前也需要经过反复的实践和验证。医疗器械公司都面临着这样的挑战:如何促使保守谨慎的医生从仅仅观察新工具在手术中的应用,转变为在实际手术中实操这项工具。安…...
20240628每日前端---------解决vue项目滥用watch
主题 滥用watch。 名字解释 watch 例子 先看一个代码例子: <template>{{ dataList }} </template><script setup lang"ts"> import { ref, watch } from "vue";const dataList ref([]); const props defineProps([&q…...
【LLM 评估】GLUE benchmark:NLU 的多任务 benchmark
论文:GLUE: A Multi-Task Benchmark and Analysis Platform for Natural Language Understanding ⭐⭐⭐⭐ arXiv:1804.07461, ICLR 2019 Site: https://gluebenchmark.com/ 文章目录 一、论文速读二、GLUE 任务列表2.1 CoLA(Corpus of Linguistic Accep…...
Go线程调度器
基本结构 字段gcwaiting、stopwait和stopnoted都是串行运行时任务执行前后的辅助协调手段 gcwaiting字段的值用于表示是否需要停止调度 在停止调度前,该值会被设置为1在恢复调度之前,该值会被设置为0这样做的作用是,一些调度任务在执行时只…...
NRF52832串口DFU保姆级教程:不用nRFgo Studio,手把手教你用nrfutil命令行搞定固件合并与升级
NRF52832串口DFU全流程实战:从密钥管理到自动化升级脚本 在嵌入式开发中,固件升级能力已成为现代IoT设备的核心需求。NRF52832作为Nordic Semiconductor的明星BLE SoC,其串口DFU功能为设备维护提供了可靠的有线升级方案。与依赖nRFgo Studio等…...
【Appium 系列】第09节-数据驱动测试 — YAML 数据 + parametrize
对应代码:core/data_driver.py(206行)、testcases/data/login_users.yaml、testcases/yaml/login_test_cases.yaml说明:本节代码示例来自一个真实的移动端自动化测试项目,业务名称和API路径已做模糊化处理。登录测试少…...
Python量化交易框架moltfi:从回测到实盘的轻量级解决方案
1. 项目概述:一个为现代金融科技而生的开源量化框架如果你在金融科技或者量化交易领域摸爬滚打过一段时间,大概率会和我有同样的感受:市面上的开源量化框架,要么是“巨无霸”级别的庞然大物,功能齐全但学习曲线陡峭&am…...
破解软件安全计划人才困局:从安全左移到DevSecOps实践
1. 软件安全计划(SSI)的困境与破局:从一份调查报告说起 最近,一份由新思科技(Synopsys)在中国市场发起的调查报告,在不少技术管理者的圈子里引发了讨论。报告里一个刺眼的数字是: 6…...
零代码物联网实战:用WipperSnapper与Adafruit IO快速采集模拟与I2C传感器数据
1. 项目概述与核心价值在嵌入式开发和物联网项目的起步阶段,很多开发者,尤其是刚接触硬件的朋友,常常会卡在两个看似基础却至关重要的环节上:如何让微控制器“感知”到物理世界的连续变化,以及如何高效、可靠地读取那些…...
Android性能分析新利器:Perfetto一站式抓Trace攻略(附超大文件处理技巧)
Android性能分析新利器:Perfetto一站式抓Trace攻略(附超大文件处理技巧) 在移动应用开发领域,性能优化始终是开发者面临的核心挑战之一。随着Android系统架构的不断演进,传统的性能分析工具链已难以满足现代复杂应用场…...
TVA 在宠物混合监护场景中的创新应用(5)
重磅预告:本专栏将独家连载新书《智能体视觉技术与应用》(系列丛书)部分精华内容,该书是世界首套系统阐述“因式智能体”视觉理论与实践的专著,特邀美国 TypeOne 公司首席科学家、斯坦福大学博士 Bohan 担任技术顾问。…...
Laravel集成DeepSeek AI:官方SDK配置与实战指南
1. 项目概述与核心价值最近在折腾一个AI相关的Laravel项目,需要集成一个靠谱的文本生成模型。市面上大模型API不少,但要么贵,要么不稳定,要么就是国内访问延迟感人。直到我发现了deepseek-php/deepseek-laravel这个包,…...
3步解决Beyond Compare 5评估模式错误:密钥生成与完全激活指南
3步解决Beyond Compare 5评估模式错误:密钥生成与完全激活指南 【免费下载链接】BCompare_Keygen Keygen for BCompare 5 项目地址: https://gitcode.com/gh_mirrors/bc/BCompare_Keygen 当Beyond Compare 5的30天评估期结束后,软件会显示"评…...
自动驾驶系统商业化策略:硬件与软件协同设计解析
1. 自动驾驶系统的商业策略框架解析自动驾驶系统(Autonomous Driving System, ADS)作为智能交通领域的核心技术,其商业化落地需要硬件(SSH)与软件策略的协同设计。从技术架构来看,ADS由感知层、决策层和执行…...
