Ambari-单步创建cluster
阅读原文时间:2023年07月15日阅读:1
  • 单步创建集群即对于集群内每个服务的安装、开启。组成服务的每个组件host信息的设置等操作都进行一次ambari-server的restAPI的调用。

    这样做提高了对集群操作的灵活性。因为Blueprint的出现是在ambari 1.5版本号之后,对非HDP版本号的支持性可能存在不足,故调ambari-server的restAPI採用的是ambari单步创建集群的调用方式。

  • 须要注意的是:在调用restAPI加入服务等操作请先确定该服务已经在stack中。

  • 调用创建集群的API

    • request body 包含stack版本号

    • POST http://:8080/api/v1/clusters/

    • request body:

      {

      "Clusters": {

      "version" : "BAIDU-1.0”

      }

      }

    • 实际命令

      **curl -u admin:admin -i -X POST -d '{"Clusters":{"version":"BAIDU-1.0"}}' -H "X-Requested-By:ambari" http:///api/v1/clusters/

      **

  • 向已创建的集群加入host

  • 向已创建的集群加入服务    (以加入HDFS服务为例)

    • 加入hdfs服务

      • 採用HTTP POST http://:8080/api/v1/clusters//services

      • request body

        **{

            "ServiceInfo": {

            "service_name": "HDFS"

            }

        }**

      • 实际命令

        **curl -u admin:admin -i -X POST -d '{"ServiceInfo":{"service_name":"HDFS"}}' -H "X-Requested-By:ambari" http://nj01-hadoop-rd03.nj01.com:8080/api/v1/clusters/abaciCluster/services**

      • 当中  = nj01-hadoop-rd03.nj01.com  = abaciCluster  = HDFS

    • 加入服务组件 (包含namenode datanode)

    • 加入用户对HDFS的配置

      • *採用HTTP POST  http://:8080/api/v1/clusters//configurations*

      • *request body 以hadoop-user-info.properties.xml为例*

        **{

            "type": "hadoop-user-info.properties",

        ",

            "properties": {

                "root_ugi": "root,baidu",

                "user_ugi": "public,slave",

                "content": " # Format: username=password,group1,group2,group3 root=baidu,root public=slave,slave "

            }

        }**

      • 上面的key-value值会存储在command-json中

      • 实际命令:

        curl -u admin:admin -i -X POST -d '{"type":"hadoop-user-info.properties","tag":"1","properties":{"root_ugi":"root,baidu","user_ugi":"public,slave","content":" # Format: username=password,group1,group2,group3 root=baidu,root public=slave,slave "}}'  -H "X-Requested-By:ambari" http://:8080/api/v1/clusters/abaciCluster/configurations

      • 注意:配置项非常多。可能须要调用多次该restapi。

    • 更新用户加入的配置 更新后配置信息中的key/value会写入至command-json中

      • HTTP PUT 请求 http://:8080/api/v1/clusters/****

      • **request body

        **

        **{

            "Clusters": {

                "desired_configs": {

                "type": "hadoop-user-info.properties",

                "tag": ""

               }

            }

        }**

      • 实际命令

        curl -u admin:admin -i -X PUT -d '{ "Clusters" : {"desired_configs": {"type": "hadoop-user-info.properties", "tag" : "1" }}}' -H "X-Requested-By:ambari" http://:8080/api/v1/clusters/abaciCluster

    • 对于每一个组件配置对应的host (03为namenode 02 06为datanode)

      • *HTTP POST请求 http://:8080/api/v1/clusters//hosts?Hosts/host_name=*

      • request body

        **{

                "host_components": [

                {

                        "HostRoles": {

                                "component_name": "NAMENODE"

                        }

                }

                ]

        }**

      • 实际命令

        **curl -u admin:admin -i -X POST -d '{"host_components":[{"HostRoles":{"component_name":"NAMENODE"}}]}' -H "X-Requested-By:ambari" http://:8080/api/v1/clusters/abaciCluster/hosts?

        **

        Hosts/host_name=nj01-hadoop-rd03.nj01.com

        curl -u admin:admin -i -X POST -d '{"host_components":[{"HostRoles":{"component_name":"DATANODE"}}]}' -H "X-Requested-By:ambari" http://:8080/api/v1/clusters/abaciCluster/hosts?Hosts/host_name=nj01-hadoop-rd02.nj01.com

        curl -u admin:admin -i -X POST -d '{"host_components":[{"HostRoles":{"component_name":"DATANODE"}}]}' -H "X-Requested-By:ambari" http://:8080/api/v1/clusters/abaciCluster/hosts?Hosts/host_name=nj01-hadoop-rd06.nj01.com

  • 将全部服务部署完毕后,開始进行集群服务的安装、开启、关闭

    • 服务安装

      • *HTTP PUT 请求  http://:8080/api/v1/clusters//services/*

      • request body

        **{

            "ServiceInfo": {

            "state": "INSTALLED"

            }

        }**

      • 实际命令:

        curl -u admin:admin -i -X PUT -d      '{"ServiceInfo": {"state" : "INSTALLED"}}'  -H "X-Requested-By:ambari" http:///api/v1/clusters/abaciCluster/services/ZOOKEEPER

    • 服务开启

      • *HTTP PUT 请求  http://:8080/api/v1/clusters//services/*

      • request body

        **{

            "ServiceInfo": {

            "state": "STARTED"**

        }

        }

      • 实际命令:

        curl -u admin:admin -i -X PUT -d      '{"ServiceInfo": {"state" : "STARTED"}}'  -H "X-Requested-By:ambari" http://:8080/api/v1/clusters/abaciCluster/services/ZOOKEEPER

    • 服务关闭

      • 服务关闭的命令同服务安装全然一致,当该服务在集群中的状态为started时,这时调用ambari-api的安装命令。ambari系统会将正在执行的服务进程通过python脚本内的stop函数进行关闭。

文章有修改过 详细关于ambari的问题能够联系我 大家一起讨论一下

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章