当前位置: 首页 > news >正文

Ambari-单步创建cluster



Ambari-单步创建 总体介绍

  • 单步创建集群即对于集群内每个服务的安装、开启。组成服务的每个组件host信息的设置等操作都进行一次ambari-server的restAPI的调用。

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

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


Ambari-单步创建 详细步骤 (以创建HDP版本号为例)

  • 调用创建集群的API 

    • request body 包含stack版本号

    • POST http://<ambari-server>:8080/api/v1/clusters/<cluster-name>

    • 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://<ambari-server>/api/v1/clusters/<cluster-name>

  • 向已创建的集群加入host

    • HTTP POST 请求 http://<ambari-server>:8080/api/v1/clusters/<cluster-name>/hosts/<master/slave host>

    • 实际命令

      curl -u admin:admin -i -X POST -H "X-Requested-By:ambari"  http://nj01-hadoop-rd03.nj01.baidu.com:8080/api/v1/clusters/abaciCluster/hosts/nj01-hadoop-rd03.nj01.baidu.com
    • 当中 <ambari-server> = nj01-hadoop-rd03.nj01.baidu.com <cluster-name> = abaciCluster <master/slave host> = nj01-hadoop-rd03.nj01.baidu.com

    • 注意:假设一个集群有多台host 那么调用多次命令。

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

    • 加入hdfs服务

      • 採用HTTP POST http://<ambari-server>:8080/api/v1/clusters/<cluster-name>/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 
      • 当中 <ambari-server> = nj01-hadoop-rd03.nj01.com <cluster-name> = abaciCluster <service-name> = HDFS

    • 加入服务组件 (包含namenode datanode)
      • 採用HTTP POST http://<ambari-server>:8080/api/v1/clusters/<cluster-name>/services/<service-name>/components/<component-name>
      • 实际命令
        curl -u admin:admin -i -X POST -H "X-Requested-By:ambari" http://nj01-hadoop-rd03.nj01.com:8080/api/v1/clusters/abaciCluster/services/HDFS/components/NAMENODE 
        curl -u admin:admin -i -X POST -H "X-Requested-By:ambari" http://nj01-hadoop-rd03.nj01.com:8080/api/v1/clusters/abaciCluster/services/HDFS/components/DATANODE 
      • 当中 <ambari-server> = nj01-hadoop-rd03.nj01.com <cluster-name> = abaciCluster <service-name> = HDFS <component-name> = NAMENODE/DATANODE
      • 注意:调用restapi的次数有该服务的组件种类决定。

    • 加入用户对HDFS的配置

      • 採用HTTP POST  http://<ambari-server>:8080/api/v1/clusters/<cluster-name>/configurations
      • request body 以hadoop-user-info.properties.xml为例
        {
            "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 "
            }
        }
      • 上面的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://<ambari-server>:8080/api/v1/clusters/abaciCluster/configurations
      • 注意:配置项非常多。可能须要调用多次该restapi。
    • 更新用户加入的配置 更新后配置信息中的key/value会写入至command-json中

      • HTTP PUT 请求 http://<ambari-server>:8080/api/v1/clusters/<cluster-name>
      • request body

        {
            "Clusters": {
                "desired_configs": {
                "type": "hadoop-user-info.properties",
                "tag": "1"
               }
            }
        }

      • 实际命令

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


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

      • HTTP POST请求 http://<ambari-server>:8080/api/v1/clusters/<cluster-name>/hosts?Hosts/host_name=<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://<ambari-server>: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://<ambari-server>: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://<ambari-server>:8080/api/v1/clusters/abaciCluster/hosts?Hosts/host_name=nj01-hadoop-rd06.nj01.com


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

    • 服务安装
      • HTTP PUT 请求  http://<ambari-server>:8080/api/v1/clusters/<cluster-name>/services/<service-name>
      • request body

        {
            "ServiceInfo": {
            "state": "INSTALLED"
            }
        }


      • 实际命令:

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


    • 服务开启
      • HTTP PUT 请求  http://<ambari-server>:8080/api/v1/clusters/<cluster-name>/services/<service-name>
      • request body

        {
            "ServiceInfo": {
            "state": "STARTED"

            }

        }

      • 实际命令:

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

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

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

相关文章:

  • worker模式 多线程实现
  • Akamai 发布互联网安全报告:DDoS 攻击量激增
  • Android 采用AOP方式封装6.0权限管理
  • WebMIS 2016-09 稳定版,基于 Phalcon 的 CMS
  • 实验吧_加了料的报错注入
  • 常用的去重和排序
  • 记一例DCDIAG /A报错0x6ba rpc服务器不可用
  • 看直播卡顿问题,排除网络卡顿,排除cpu太差
  • Windows 10 RedStone 新版 Edge 浏览器上手图集
  • python数据类型之集合
  • javaWeb服务详解(含源代码,测试通过,注释) ——Emp的Service层
  • E - Box of Bricks (注意很多文章是错的)
  • centos安装iftop监控服务器流量
  • 【laravel5.4】重定向带参数
  • 基数排序
  • 【笔记】你不知道的JS读书笔记——Promise
  • Git初体验
  • JS字符串转数字方法总结
  • MaxCompute访问TableStore(OTS) 数据
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • Sequelize 中文文档 v4 - Getting started - 入门
  • vue+element后台管理系统,从后端获取路由表,并正常渲染
  • 工程优化暨babel升级小记
  • 诡异!React stopPropagation失灵
  • 力扣(LeetCode)21
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 深入浅出Node.js
  • 什么是Javascript函数节流?
  • 消息队列系列二(IOT中消息队列的应用)
  • 一、python与pycharm的安装
  •  一套莫尔斯电报听写、翻译系统
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • ​io --- 处理流的核心工具​
  • !$boo在php中什么意思,php前戏
  • #NOIP 2014# day.1 T3 飞扬的小鸟 bird
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (4)事件处理——(7)简单事件(Simple events)
  • (c语言)strcpy函数用法
  • (全注解开发)学习Spring-MVC的第三天
  • (算法)Game
  • (转)JAVA中的堆栈
  • (转)清华学霸演讲稿:永远不要说你已经尽力了
  • .htaccess配置重写url引擎
  • .jks文件(JAVA KeyStore)
  • .NET CORE 2.0发布后没有 VIEWS视图页面文件
  • .NET Framework .NET Core与 .NET 的区别
  • .NET MVC第五章、模型绑定获取表单数据
  • @ComponentScan比较
  • [ C++ ] template 模板进阶 (特化,分离编译)
  • [ JavaScript ] JSON方法
  • [ Linux ] git工具的基本使用(仓库的构建,提交)
  • [ 隧道技术 ] 反弹shell的集中常见方式(四)python反弹shell
  • [BZOJ1877][SDOI2009]晨跑[最大流+费用流]