Ambari-stack总体介绍

  • Ambari-stack 表示hadoop某个发行版本号。比如HDP-1.0.0,在用ambari创建一个集群时,首先要通过调用restfulAPI设置stack版本号。
  • stack下包括一个或多个service,比如HDP-2.0.6下包括多个service,各自是 ZOOKEEPER,HDFS,YARN,等。
  • 单个service下通过配置service下存储的metainfo.xml来设置构成服务的component(组件)以及部署组件的部署脚本、执行组件的角色名称、部署脚本的文件名、部署脚本的语言种类等信息。
  • stack下package/script/  存放agent操作相关component(组件)的脚本,ambari-agent会依据脚本的函数名称调用脚本的相应函数。
  • stack版本号能够通过metainfo.xml设置继承关系。比如HDP-2.1继承了HDP-2.0.6的各个服务。

Ambari-stack文件夹结构

  • HDP

    • 2.0.6

      • metainfo.xml        (stack的相关信息,包含继承关系等版本号层的性质)
      • services        (该路径下存储各个服务)
        • ZOOKEEPER  

          • metainfo.xml        (里面配置了组件名称,操作组件的脚本名称。脚本的语言种类等信息)
          • configuration
            • global.xml        (服务配置,在blueprint创建集群时使用)
            • zookeeper-log4j.xml
          • package

            • scripts

              • zookeeper_server.py        (组件的操作脚本 包含安装、查询状态、开启组件、关闭组件等操作)

              • zookeeper_cilent.py
              • ...
            • templates        (在部署时脚本里所用到的模板文件)

              • ...
        • YARN
          • ...
        • HDFS
          • ...


          • ...
      • hooks        (在调用脚本前须要运行的脚本。比如为集群各个服务创建linux-user)
        • ...
      • repos        (yum安装所须要的repos配置信息)
        • ...
  • 当写创建好stack后。须要重新启动ambari-server。能够在浏览器中通过restfulAPI来查看stack创建是否成功。

    • http://<ambari-server>:8080/api/v1/stacks
  • 对于服务下的metainfo.xml一定要保证格式、内容的正确性,假设ambari不能正常读取,那将识别不出stack的信息。

Ambari-stack 脚本编写规则介绍

  • Ambari-agent在运行脚本时,会依据脚本的函数名进行调用。

    下面是基本操作函数。

  • 实现方式是一个组件建一个类,该类能够继承ambari提供的父类Script。该父类提供了一些默认方法比如状态检查,转换json等方法。

  • install()

    • 在调用ambari-server安装相应服务的restapi时,ambari-server会给ambari-agent发送command-json格式的文件,agent会调用脚本中名为install()函数来进行部署。

    • 函数作用在于在集群内部署该服务的相应组件。

  • start()

    • 函数作用是开启该服务下相应组件。

    • 注意:该方法须要在install成功后调用。
  • stop()

    • 该函数作用是停止该服务下的相应组件。
    • 注意:该方法调用的api与install同样且组件状态为STARTED。
  • status()

    • 在组件开启后。agent会不断检測组件的状态,并把状态通过心跳汇报给server端,server端收到心跳状态后更新当前集群的服务信息,当用户调用install api来停止组件时,server依据更新后的组件信息来向相应的host发出命令,假设某组件异常终止。那么server在发送停止命令时不会向异常终止的组件所在的agent发送停止命令。

    • status()状态检查能够使用父类提供的一种方式,check_process_status(file_path)。该函数针对提供的文件路径检查相应文件内部的组件进程号是否存在。假设不存在,那么agent就通过心跳汇报给server。
  • main()
    • 操作脚本的main函数直接调用父类的execute()函数就可以。

Ambari-stack介绍的更多相关文章

  1. ELK Stack 介绍 & Logstash 日志收集

    ELK Stack 组成 Software Description Function E:Elasticsearch Java 程序 存储,查询日志 L:Logstash Java 程序 收集.过滤日 ...

  2. java集合系列——List集合之Stack介绍(五)

    1.Stack的简介 Stack 类表示后进先出(LIFO)的对象堆栈.它通过五个操作对类 Vector 进行了扩展 ,允许将向量视为堆栈.它提供了通常的 push 和 pop 操作,以及取堆栈顶点的 ...

  3. 堆栈Stack介绍

    堆栈(Stack)代表了一个后进先出的对象集合.当您需要对各项进行后进先出的访问时,则使用堆栈.当您在列表中添加一项,称为推入元素,当您从列表中移除一项时,称为弹出元素. Stack 类的方法和属性 ...

  4. Treiber Stack介绍

    简介 Treiber Stack在 R. Kent Treiber在1986年的论文Systems Programming: Coping with Parallelism中首次出现.它是一种无锁并发 ...

  5. Java 集合系列07之 Stack详细介绍(源码解析)和使用示例

    概要 学完Vector了之后,接下来我们开始学习Stack.Stack很简单,它继承于Vector.学习方式还是和之前一样,先对Stack有个整体认识,然后再学习它的源码:最后再通过实例来学会使用它. ...

  6. Java 集合系列 06 Stack详细介绍(源码解析)和使用示例

    java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...

  7. java之Stack详细介绍

    1  Stack介绍 Stack简介 Stack是栈.它的特性是:先进后出(FILO, First In Last Out). java工具包中的Stack是继承于Vector(矢量队列)的,由于Ve ...

  8. 【转】 Java 集合系列07之 Stack详细介绍(源码解析)和使用示例

    概要 学完Vector了之后,接下来我们开始学习Stack.Stack很简单,它继承于Vector.学习方式还是和之前一样,先对Stack有个整体认识,然后再学习它的源码:最后再通过实例来学会使用它. ...

  9. 从零自学Hadoop(05):Ambari

    阅读目录 序 引入背景 Ambari介绍 在线安装 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,Sour ...

  10. stack

    stack介绍:先进后出 实现C++STL,栈有两个参数:template<class T,class Container = deque<T>> class stack: 参 ...

随机推荐

  1. ArcGIS中的批量处理

    在实际生产过程中,经常遇到批量处理数据的情况.在ArcGIS中,除自己写代码来处理这类问题外,它提供了一个批量处理的工具,在ToolBox对应的工具上右键即可选择批处理工具. 和单个处理方式一样,输入 ...

  2. 【Linux】Linux 文件中^M字符处理

    当我们把文件从Windows传到Linux环境时候,常常在每一行的末尾,会出现一些 ^M的字符.而这些字符会影响文件的正常读写和执行; 要去掉这些'^M'字符,有很多种办法,比如直接dox2unix, ...

  3. 转:Python模块学习 ---- httplib HTTP协议客户端实现

    httplib 是 python中http 协议的客户端实现,可以使用该模块来与 HTTP 服务器进行交互.httplib的内容不是很多,也比较简单.以下是一个非常简单的例子,使用httplib获取g ...

  4. Edge/Chrome/火狐/Safari/Opera和IE

    据DigitalTrends网站报道,谷歌Chrome浏览器性能远超竞争对手的时代已经成为过去.目前流行的浏览器水平基本相当.IE 11被Windows 10中的Edge浏览器取而代之.Mozilla ...

  5. zookeeper技术浅析

    Zookeeper是hadoop的一个子项目,尽管源自hadoop,可是我发现zookeeper脱离hadoop的范畴开发分布式框架的运用越来越多. 今天我想谈谈zookeeper.本文不谈如何使用z ...

  6. 头文件dirent.h

    <dirent.h>是POSIX.1标准定义的unix类目录操作的头文件,包含了许多UNIX系统服务的函数原型,例如opendir函数.readdir函数. opendir函数:   DI ...

  7. Swift调用OC和C

    Swift文件:main.swift import Foundation //Swift调用C函数 desc1() //Swift调用OC //拿到OC类 var funcClass = Root() ...

  8. 【laravel5.4】git上clone项目到本地,配置和运行 项目报错:../vendor/aotuload.php不存在

    1.一般我们直接使用git clone 将git的项目克隆下来,在本地git库和云上git库建立关联关系 2.vendor[扩展]文件夹是不会上传的,那么下载下来直接运行项目,会报错: D:phpSt ...

  9. shell脚本死循环判断nginx日志reqest_time时间大于3秒是否增加,若增加发送相关日志信息到开发人员

    #!/bin/bash while [ 1 ] do pre_request_time_count=`cat /var/log/nginx/access.log |awk '{print $NF}'| ...

  10. IntelliJ Idea解决Could not autowire. No beans of 'xxxx' type found的错误提示

    本文转自:http://blog.csdn.net/u012453843/article/details/54906905 1.问题描述 在Idea的spring工程里,经常会遇到Could not ...