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. C++_class_powerpoint_1.1

    Types and Declarations Boolean Type bool type – boolean , logic type bool literal – true, falseint a ...

  2. Spring整合JUnit4测试使用注解引入多个配置文件

    转自:https://kanpiaoxue.iteye.com/blog/2151903 我们使用spring写junit单测的时候,有的时候我们的spring配置文件只有一个.我们在类的注释上面会这 ...

  3. 基于Apache Thrift的公路涵洞数据交互实现原理

    基于Apache Thrift的公路涵洞数据交互实现原理 Apache Thrift简介 Apache Thrift(以下简称为“Thrift”) 是 Facebook 实现的一种高效的.支持多种编程 ...

  4. 修改数组数据头和尾push()、pop()和unshift()、shift()

    1.push().pop()和unshift().shift() 这两组同为对数组的操作,并且会改变数组的本身的长度及内容. 不同的是 push().pop() 是从数组的尾部进行增减,unshift ...

  5. 关于CI中的MVC以及扩展CI中的控制器

    MVC是一种设计模式模式,M(模型)—V(视图)—C(控制器): MVC的核心思想是强制开发者在进行项目开发时,将数据的输入,处理,输出分开编写: 1.入口文件:该文件是唯一一个给浏览器直接请求的脚本 ...

  6. 初学 Ajax(涉及 php)

    一直知道 ajax 但是尚未真正了解, 这次看了慕课网的<Ajax全接触>,算是有所收获,入了个门. 需要用到php,因为 Ajax也是向服务器请求(不知道这么解释对不对), 所以还需要配 ...

  7. 【技术累积】【点】【java】【1】JSONPath

    闲聊 以后周中每天一篇这种偏短的文章,周末就发长一点的文章,不然自己实在是懒,懒成了习惯了... 开始 首先需要明确的是,这里说的是阿里巴巴的fastjson包中的JSONPath,不是jsonPat ...

  8. Asp.net Core 源码-UrlExtensions

    using Microsoft.AspNetCore.Http; namespace SportsStore.Infrastructure { public static class UrlExten ...

  9. javase 继承练习

    package xuexi; 父级 public class Fu { int num=0; public void eat() { System.out.println("父亲在吃饭&qu ...

  10. php进程控制

    1 POSIX扩展    posix_access($file,$mode)  查看文件的访问权限,可以由is_readable等几个函数代替    posix_errno()  返回posix函数执 ...