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",

        ",

            "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": ""

               }

            }

        }

      • 实际命令

        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的问题能够联系我 大家一起讨论一下

Ambari-单步创建cluster的更多相关文章

  1. 在nodejs中创建cluster

    目录 简介 cluster集群 cluster详解 cluster中的event cluster中的方法 cluster中的属性 cluster中的worker 总结 在nodejs中创建cluste ...

  2. docker下创建redis cluster集群

    概述 在Redis中,集群的解决方案有三种 主从复制 哨兵机制 Cluster Redis Cluster是Redis的分布式解决方案,在 3.0 版本正式推出. 准备工作 1.确定本机IP地址 2. ...

  3. Ambari与Kerberos 集成

    Kerberos 介绍 Kerberos 是一个网络认证的框架协议,其设计的初衷便是通过密钥系统为 Client 和 Server 应用程序之间提供强大的认证服务.在使用 Kerberos 认证的集群 ...

  4. 使用docker部署ambari的若干要点

    ambari部署各个组件 使用ambari进行部署时主要需要的组件包括: ambari-server: 主要部署的控制节点,负责控制agent进行部署. mysql: server存储的数据库.也支持 ...

  5. Ambari安装常见问题

    参考自: http://blog.csdn.net/xingxc111/article/details/70667574 http://blog.csdn.net/xfg0218/article/de ...

  6. 【定义及安装】Ambari——大数据平台的搭建利器

    Ambari 是什么 Ambari 跟 Hadoop 等开源软件一样,也是 Apache Software Foundation 中的一个项目,并且是顶级项目.目前最新的发布版本是 2.0.1,未来不 ...

  7. Ambari——大数据平台的搭建利器(一)

    Ambari 跟 Hadoop 等开源软件一样,也是 Apache Software Foundation 中的一个项目,并且是**项目.目前最新的发布版本是 2.0.1,未来不久将发布 2.1 版本 ...

  8. redis 学习笔记(6)-cluster集群搭建

    上次写redis的学习笔记还是2014年,一转眼已经快2年过去了,在段时间里,redis最大的变化之一就是cluster功能的正式发布,以前要搞redis集群,得借助一致性hash来自己搞shardi ...

  9. oracle中的cluster表

    大家对通常oracle中的cluster的理解是不准确的,经常和sql server中的cluster index混淆.Cluster是存储一组table的一种方法,这些table共享同一数据块中的某 ...

随机推荐

  1. nyoj--170--网络的可靠性(水题)

    网络的可靠性 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 A公司是全球依靠的互联网解决方案提供商,也是2010年世博会的高级赞助商.它将提供先进的网络协作技术,展示其 ...

  2. poj--2186--Popular Cows (scc+缩点)

    Popular Cows Time Limit : 4000/2000ms (Java/Other)   Memory Limit : 131072/65536K (Java/Other) Total ...

  3. consul 集群安装

    上图是官网提供的一个事例系统图,图中的Server是consul服务端高可用集群,Client是consul客户端.consul客户端不保存数据,客户端将接收到的请求转发给响应的Server端.Ser ...

  4. git 本地项目推送至远程仓库

    1 在本地文件夹下创建一个 Git 仓库(如test目录下) git init 2 此时test文件夹即是你的maste主分支,你可以在改文件夹下写自己的项目 3 将test文件夹下的内容提交至暂存区 ...

  5. Python基本数据类型之数字int

    数字 int(x, base=None) 将x转换为一个整数.base为按照多少进制进行转换 float(x) 将x转换到一个浮点数. complex(x) 将x转换到一个复数,实数部分为 x,虚数部 ...

  6. Codeforces Round #455

    Generate Login 第二个单词肯定只取首字母 Solution Segments 从1开始的线段和在n结束的线段各自凑一凑,剩下的转化为规模为n-2的子问题. Solution Python ...

  7. hdu3926 Hand in Hand 判断同构

    因为每个人小朋友只有两只手,所以每个点最多只有2度.图有可能是环.链,以及环和链构成的复杂图. 如何判断两幅图是否相似呢?判断相似是判断两幅图的圈的数量,以及构成圈的点数是否相同.还有判断链的数目和构 ...

  8. MFC知识点总结

    一:消息1.什么是消息?消息是驱动windows系统运行的基础.从计算机的角度来看,消息就是一个整数.    (1)一个无符号整数,是消息值:    (2)消息附带的WPARAM和LPARAM类型的参 ...

  9. 改造PAXOS算法消灭活锁

    分布式一致性协议的目的是确定一个不可变变量分布式存储的取值:通过对国内外一致性算法的研究成果和PAXOS协议活锁的分析,发现引入一个角色作为竞争时的代理提交者就可以解决活锁问题,从而在本文引入“代理提 ...

  10. 如何快速在命令提示符(cmd)中打开指定的文件夹路径!

    按住shift键然后 右击,如图: