• 第六章 Ambari二次开发之自定义Flink服务 -- metainfo.xml配置文件详解


    1、公共框架部分

    • 注意:需要在 内来描述自定义服务相关信息
    
    <metainfo>
        <schemaVersion>2.0schemaVersion>
        <services>
    		自定义服务相关信息<-->
        services>
    metainfo>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    2、service - 描述服务

    Ⅰ、name: 服务名,必须唯一,建议大写<-->
    <name>FLINKname>
    
    Ⅱ、displayName: 服务在 web UI 上的显示名<-->
    <displayName>FlinkdisplayName>
    
    Ⅲ、comment: 服务的描述信息<-->
    <comment>Apache Flink is a streaming dataflow engine that provides data distribution, communication, and fault tolerance for distributed computations over data streams.comment>
    
    Ⅳ、version: 服务版本, 用 name 和 version 唯一标记一个服务<-->
    <version>1.14.5version>
    
    Ⅴ、components: 服务中包含的组件<-->
    <components>
        <component>
            <name>FLINK_MASTERname>
            <displayName>FlinkdisplayName>
            <category>MASTERcategory>
            <cardinality>1cardinality>
            <commandScript>
                <script>scripts/flink.pyscript>
                <scriptType>PYTHONscriptType>
                <timeout>10000timeout>
            commandScript>
        component>
    components>
    
    Ⅵ、osSpecifics: 服务会根据操作系统的差异来选择不同的 rpm 包<-->
    <osSpecifics>
        <osSpecific>
            <osFamily>redhat7,redhat6osFamily>
            <packages>
                <package><name>gitname>package>
                <package><name>java-1.7.0-openjdk-develname>package>
                <package><name>apache-maven-3.2*name>package>
            packages>
        osSpecific>
    osSpecifics>
    
    Ⅶ、configuration-dependencie: 服务依赖的 xml 文件<-->
    <configuration-dependencies>
        <config-type>flink-ambari-configconfig-type>
    configuration-dependencies>
    
    Ⅷ、restartRequiredAfterChange: 服务更改后是否强制重启<-->
    <restartRequiredAfterChange>falserestartRequiredAfterChange>
    
    Ⅸ、requiredServices: 集群上强制依赖的其他服务<-->
    <requiredServices>
        <service>YARNservice>
    requiredServices>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 参数说明如下
    属性描述
    name服务名,必须唯一,建议大写
    displayName服务在 web UI 上的显示名
    comment服务的描述信息
    version服务版本,用 name 和 version 唯一标记一个服务
    components服务中包含的组件
    commandScript(可选)自定义命令 python 脚本入口,如果一个 Service 的 metainfo.xml 有该字段,那么在 Service 的 Action 列表中就会出现 自定义 命令。
    requiredServices:(可选)集群上强制依赖的其他服务。换句话说,安装当前服务之前,必须安装 requiredServices 内指定的服务。
    configuration-dependencies(可选)服务依赖的 xml 文件,当在前端页面上修改 xml 文件内容后并保存配置,服务会提示重启,服务下的所有组件都将被重启。
    quickLinksConfigurations(可选)自定义快速链接,通常在这里设置 服务 web UI 链接。
    osSpecifics(可选)服务会根据操作系统的差异来选择不同的 rpm 包
    themes(可选)指定主题配置,通常和 json 文件相关联。
    • 文件结果展示

    在这里插入图片描述

    3、service/components - 一个服务中服务包含的组件

    components: 服务中包含的组件<-->
    <components>
        <component>
            Ⅰ、name: 组件名称<-->
            <name>FLINK_MASTERname>
            
            Ⅱ、displayName: 组件显示名称<-->
            <displayName>FlinkdisplayName>
            
            Ⅲ、category: 组件角色<-->
            <category>MASTERcategory>
            
            Ⅳ、cardinality: 安装机器数<-->
            <cardinality>1cardinality>
            
            Ⅴ、commandScript: 调用python脚本执行命令<-->
            <commandScript>
                <script>scripts/flink.pyscript>
                <scriptType>PYTHONscriptType>
                <timeout>10000timeout>
            commandScript>
        component>
    components>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 参数说明如下
    属性说明
    name组件名
    displayName组件的显示名
    category指定了该组件角色,可以是 MASTER、SLAVE、CLIENT。
    commandScript标准命令,调用python脚本,用来执行该组件的某些操作
    cardinality指的是所要安装的机器数,可以是固定数字 1,可以是一个范围比如 1-2,也可以是 1+、0+、ALL或者是一个范围,进行服务安装向导的时候会限制选择的机器数。
    versionAdvertised(可选)是否宣称版本,用于回滚和升级
    timelineAppid(可选)存储 metric 数据的默认类型
    configuration-dependencies(可选)组件依赖的 xml 文件,当在前端页面上修改 xml 文件内容后并保存配置,服务会提示重启,只有该组件将被重启。
    customCommands(可选)标准命令之外自定义的命令
    configFiles(可选)客户端配置可以下载的配置文件
    • 前端页面展示:每个标签对应一个Started

    在这里插入图片描述

    4、service/osSpecifics - 操作系统特定包名 rpm 包

    osSpecifics: 服务会根据操作系统的差异来选择不同的 rpm 包<-->
    <osSpecifics>
        <osSpecific>
            Ⅰ、osFamily: rpm 包适用的操作系统<-->
            <osFamily>redhat7,redhat6osFamily>
            Ⅱ、/package/name: 部署服务需要的包名<-->
            <packages>
                <package><name>gitname>package>
                <package><name>java-1.7.0-openjdk-develname>package>
                <package><name>apache-maven-3.2*name>package>
            packages>
        osSpecific>
    osSpecifics>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 参数说明如下
    属性描述
    osSpecific/osFamilyrpm 包适用的操作系统
    osSpecific/packages/package/name部署服务需要的包名,将执行 yum install xxx 命令

    5、service/configuration-dependencies指向configuration中的xml文件配置

    • 注意事项:配置文件可以有多个
    Ⅶ、configuration-dependencie: 服务依赖的 xml 文件<-->
    <configuration-dependencies>
        <config-type>flink-ambari-configconfig-type>
    configuration-dependencies>
    
    • 1
    • 2
    • 3
    • 4
    • 具体参数如下
    属性描述
    service/configuration-dir可选字段。用于告诉 Ambari Server 在哪里加载 xxx.xml 文件。如果我们希望服务使用默认的 configuration 目录,则可以跳过它。
    service/configuration-dependencies/config-type服务依赖的配置文件名称。如果在前端页面上修改了该 xml 文件内容后并保存配置,服务会提示重启,整个服务都将被重启。
    • 前端展示

    在这里插入图片描述

    • 注意事项:放置位置
      • ①放在component下:重启单个Componet组件
      • ②放在整个文件下:重启整个服务

    6、service/component/commandScript - 标准化命令,用来指定服务的主程序

    实现自定义命令的脚本<-->
    <commandScript>
        Ⅰ、script: 脚本路径<-->
        <script>scripts/flink.pyscript>
        
        Ⅱ、scriptType: 脚本类型<-->
        <scriptType>PYTHONscriptType>
        
        Ⅲ、timeout: 自定义命令超时时间<-->
        <timeout>10000timeout>
    commandScript>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 具体参数如下
    属性描述
    name自定义命令名称
    commandScript实现自定义命令的脚本
    commandScript/script脚本路径
    commandScript/scriptType(可选)脚本类型,目前只支持python
    commandScript/timeout(可选)自定义命令超时时间
    • 服务后台主程序

    在这里插入图片描述

    7、扩展一:service/component/customCommands - 自定义组件服务命令

    • 效果:可配置相关Python脚本,实现服务组件的安装、启动、重启等相关功能
    <customCommands>
        <customCommand>
            <name>CLEANname>
            <commandScript>
                <script>scripts/flink_server.pyscript>
                <scriptType>PYTHONscriptType>
                <timeout>600timeout>
            commandScript>
        customCommand>
    customCommands>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 参数说明
    属性描述
    name自定义命令名称
    commandScript实现自定义命令的脚本
    commandScript/script脚本路径
    commandScript/scriptType(可选)脚本类型,目前只支持python
    commandScript/timeout(可选)自定义命令超时时间

    8、扩展二:service/commandScript - 运行服务检查

    • 效果:可配置相关Python脚本,实现服务组件的心跳监控功能
    <commandScript>
        <script>scripts/service_check.pyscript>
        <scriptType>PYTHONscriptType>
        <timeout>300timeout>
    commandScript>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 参数说明
    属性描述
    commandScript实现自定义命令的脚本
    commandScript/script脚本路径
    commandScript/scriptType(可选)脚本类型,目前只支持python
    commandScript/timeout(可选)自定义命令超时时间

    9、扩展三:service/themes-dir - 创建自定义主题

    • 注意实现:需要指定自定义主题JSON文件路径
    <themes>
        <theme>
            <fileName>credentials.jsonfileName>
            <default>truedefault>
        theme>
    themes>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 参数说明
    属性描述
    service/themes-dir可选字段。用于告诉 Ambari Server 在哪里加载 xxx.json 文件。如果我们希望服务使用默认的 themes 目录,则可以跳过它。
    service/themes/theme/fileNamejson 文件,指定的主题文件名称
    service/themes/theme/default一般为 true

    10、扩展四:service/quickLinksConfigurations-dir - 创建quiks链接

    • 注意事项:需要制定qucklink.json文件
    <quickLinksConfigurations>
        <quickLinksConfiguration>
            <fileName>quicklinks.jsonfileName>
            <default>truedefault>
        quickLinksConfiguration>
    quickLinksConfigurations>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 参数说明
    属性描述
    service/quickLinksConfigurations-dir可选字段。加载 xxx.json 文件路径。如果希望服务使用默认的 quicklinks 目录,则可以跳过它。
    service/quickLinksConfigurations/quickLinksConfiguration/fileNamejson 文件,指定的 quickLink 文件名称
    service/quickLinksConfigurations/quickLinksConfiguration/default一般为 true
  • 相关阅读:
    vue3+ts+element-plus el-table组件二次封装(Vue3项目)
    如何用Postman做接口自动化测试?
    3、Nio源码
    Redis 除了做缓存,还能做什么?
    青龙面板安装及配置
    Android studio的Bumblebee版本Gradle7.2降到Gradle4.2.0详细步骤记录(项目已上传)
    几种新能源汽车(纯电、插混、油混、增程)的区别
    关于Rxjava的简单使用
    “因遭勒索软件攻击,我被认定工作失职开除,并被老东家索赔 21.5 万元”
    21天学习挑战赛——Python爬虫解析器BeautifulSoup4
  • 原文地址:https://blog.csdn.net/qq_27924553/article/details/127482964