在Ambari中,通过自定义UI控件(Widget),你可以灵活调整配置项的展现形式,使其更符合实际需求。这篇文章将详细介绍各种控件的使用,并提供代码示例和实际应用场景,帮助你成为UI配置的行家!💻✨
1. 配置说明
1.1 Ambari 配置中的 Widget 和 Metadata 结构
Widget | Metadata Used (元数据使用) | 解释 (Explanation) |
---|---|---|
Slider(滑块) | <value-attributes> <type>int</type> <minimum>1073741824</minimum> <maximum>17179869184</maximum> <unit>B</unit> <increment-step>1073741824</increment-step> </value-attributes> | 滑块控件用于调整数值范围,适合设置内存或磁盘大小等配置项。用户可以通过滑动条来选择一个范围,比如1GB到16GB。🎚️ |
Combo(下拉菜单) | <value-attributes> <type>value-list</type> <entries> <entry><value>2</value></entry> <entry><value>4</value></entry> <entry><value>8</value></entry> </entries> <selection-cardinality>1</selection-cardinality> </value-attributes> | 下拉菜单适合选择固定选项的配置,比如从多个调度器中选择一个。⬇️ |
List(列表) | <value-attributes> <type>value-list</type> <entries> <entry><value>2</value></entry> <entry><value>4</value></entry> <entry><value>8</value></entry> </entries> <selection-cardinality>2+</selection-cardinality> </value-attributes> | 列表控件允许用户选择多个值,适合配置多个路径或选项的场景,比如磁盘路径的选择。📋 |
Time Interval Spinner(时间间隔选择器) | <value-attributes> <type>int</type> <minimum>0</minimum> <maximum>2592000000</maximum> <unit>milliseconds</unit> </value-attributes> | 时间选择器用于设置时间间隔,支持从毫秒到天的配置。⏳ |
Toggle, Checkbox(切换按钮、复选框) | <value-attributes> <type>value-list</type> <entries> <entry> <value>true</value> <label>Enabled</label> </entry> <entry> <value>false</value> <label>Disabled</label> </entry> </entries> <selection-cardinality>1</selection-cardinality> </value-attributes> | 适合启用或禁用某项功能的场景,例如开关某个服务。🔘 |
Directory, Directories, Password, Text Field, Text Area | 无需特定的 <value-attributes> 元素。用户直接输入路径、密码或其他文本内容。 | 这些控件适用于需要手动输入的场景,例如目录路径、密码或大段文本。📂🔑 |
Radio-Buttons(单选按钮) | <value-attributes> <type>value-list</type> <entries> <entry><value>1</value><label>Option 1</label></entry> <entry><value>2</value><label>Option 2</label></entry> </entries> <selection-cardinality>1</selection-cardinality> </value-attributes> | 单选按钮用于让用户在多个选项中选择一个,适合互斥选项的配置场景。🔘 |
2. HBase为例,配置的UI控件详细解析
2.1 Slider(滑块):
适用于数值范围的配置
应用场景:
滑块(Slider)控件非常适合那些需要调整数值的配置,用户可以通过滑动来选择值,例如内存大小、文件大小或超时时间等。滑动条让数值调节变得简单直观。
-
配置项:HBase Master Maximum Memory
- 配置文件:
hbase-env.xml
- 描述: 该配置用于设置 HBase Master 进程的最大堆内存,默认值为 4096MB。Master 进程是 HBase 中的管理节点,负责管理 RegionServer 及集群的健康状态。适合用滑块来方便地调整内存大小。
<property> <name>hbase_master_heapsize</name> <value>4096</value> <description>Maximum amount of memory each HBase Master can use.</description> <display-name>HBase Master Maximum Memory</display-name> <value-attributes> <type>int</type> <minimum>0</minimum> <maximum>16384</maximum> <unit>MB</unit> <increment-step>256</increment-step> </value-attributes> <on-ambari-upgrade add="false"/> </property>
- UI展现: 🎚️ 滑块可让用户在 0 到 16GB 范围内调整 HBase Master 的最大内存大小,用户可以通过拖动滑块来分配更多或更少的内存资源,适用于集群扩展时。
- 配置文件:
⬇️⬇️⬇️查看全部内容⬇️⬇️⬇️
更多详细内容请关注我们的微信公众号:发送"文章"关键字获取
或加入QQ1群,了解版本动向,解答大数据问题。
⬆️⬆️⬆️查看全部内容⬆️⬆️⬆️
2.7 Radio-Buttons(单选按钮):
适用于互斥的配置选项
应用场景:
Radio-Buttons(单选按钮) 控件适用于那些互斥的配置选项,用户只能从多个选项中选择一个。这种控件用于模式选择、日志级别等,确保用户只能选择一个值,且每个选项都有对应的说明标签。
注意首先根据官方文档配置,entry 个数 > 3 , 有label ,单选才会触发 radiobox 。但是目前页面上没看到,不知道是不是卡bug了
注意首先根据官方文档配置,entry 个数 > 3 , 有label ,单选才会触发 radiobox 。但是目前页面上没看到,不知道是不是卡bug了
注意首先根据官方文档配置,entry 个数 > 3 , 有label ,单选才会触发 radiobox 。但是目前页面上没看到,不知道是不是卡bug了
-
配置项:Hive Log Level
- 配置文件:
hive-env.xml
- 描述: 用户可以通过此单选按钮选择 Hive 的日志级别(
INFO
、DEBUG
、WARN
、ERROR
)。该配置控制 Hive 的日志输出级别,用户可以根据需求选择合适的级别。
<property> <name>hive.log.level</name> <description>Hive Log level to control log4j - Options are INFO, DEBUG, WARN, ERROR</description> <value>INFO</value> <display-name>Hive Log Level</display-name> <value-attributes> <type>value-list</type> <entries> <entry> <value>INFO</value> <label>INFO (Recommended)</label> </entry> <entry> <value>DEBUG</value> <label>DEBUG (Most Verbose)</label> </entry> <entry> <value>WARN</value> <label>WARN</label> </entry> <entry> <value>ERROR</value> <label>ERROR (Least Verbose)</label> </entry> </entries> <selection-cardinality>1</selection-cardinality> </value-attributes> <on-ambari-upgrade add="false"/> </property>
- UI展现: 🔘 用户可以通过单选按钮选择日志输出级别,
INFO
为推荐选项,DEBUG
输出最详细的日志,WARN
和ERROR
适合过滤不必要的信息,保证系统运行日志的简洁性。
- 配置文件:
3. 控件样式的区别(基于 value-attributes
关键字段)
条件 | 页面样式 | 解释 | 示例配置 |
---|---|---|---|
entries 个数 <= 2 且 无 label | Toggle 切换开关 | 当 entries 少于等于 2 且没有 label 时,页面会显示为切换开关,用于简单启用/禁用功能。 | hbase.security.authorization |
entries 个数 <= 2 且 带有 label | Toggle 切换开关 | 尽管带有 label ,但因为选项少于等于 2,依旧会显示为切换开关。 | hbase.security.authentication |
entries 个数 > 2 且 带有 label | Radio-Buttons(单选按钮) | 当 entries 大于 2 且每个选项带有 label 时,显示为单选按钮,用户只能选择一个选项。 | hive.log.level |
entries 个数 > 2 且 无 label | Combo(下拉菜单) | 如果选项超过 2 且没有 label ,页面会显示为下拉菜单,用户可以从中选择一个选项。 | hbase.security.authentication |
selection-cardinality > 1 且 无 label | List(列表) | 当 selection-cardinality 大于 1 且没有 label 时,页面会显示为列表,用户可以选择多个选项。 | hbase.coprocessor.region.classes |
type=directory | Directory(目录选择器) | 当 type 为 directory 时,页面展示为单个目录路径输入框。 | hbase.tmp.dir |
type=directories | Directories(多目录选择器) | 当 type 为 directories 时,页面展示为多个目录路径输入框,用户可以输入多个路径。 | yarn.nodemanager.log-dirs |
type=password | Password(密码输入框) | 当 type 为 password 时,输入的内容会被隐藏,适用于输入密码。 | javax.jdo.option.ConnectionPassword |
type=text | Text Field(单行文本框) | 当 type 为 text 时,页面展示为单行文本输入框,适用于输入简短的字符串内容。 | hbase.master.info.bindAddress |
type=content | Text Area(多行文本区域) | 当 type 为 content 时,页面展示为多行文本输入框,通常用于输入长文本或脚本内容。 | hbase-env.sh |
关键字段解释
-
entries
的个数:- 如果
entries
的个数少于等于 2,并且没有label
,页面会显示为 Toggle 切换开关。 - 如果
entries
的个数大于 2 并且带有label
,页面会显示为 Radio-Buttons(单选按钮)。
- 如果
-
是否有
label
标签:- 如果
entries
包含label
,表示每个选项有说明文字。对于 Radio-Buttons 控件来说,label
是必需的。 - 如果没有
label
,则视为没有选项说明。通常在下拉菜单或列表中不需要label
。
- 如果
-
selection-cardinality
的值:- 当
selection-cardinality
的值大于 1 时,表示用户可以选择多个选项,页面通常会显示为 List(列表) 控件。 - 如果
selection-cardinality
的值为 1,页面会显示为单选控件(Combo 或 Radio-Buttons)。
- 当
-
type
的值:- 当
type
为directory
时,页面显示为 Directory(目录选择器)。 - 当
type
为directories
时,页面显示为 Directories(多目录选择器)。 - 当
type
为password
时,输入的字符会被隐藏,页面显示为 Password(密码输入框)。 - 当
type
为text
时,页面显示为 Text Field(单行文本框)。 - 当
type
为content
时,页面显示为 Text Area(多行文本区域)。
- 当