博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Ambari-stack介绍
阅读量:6376 次
发布时间:2019-06-23

本文共 1764 字,大约阅读时间需要 5 分钟。

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()函数就可以。

转载地址:http://qntqa.baihongyu.com/

你可能感兴趣的文章
脚本异步时切记声明数据格式
查看>>
[Linux学习]一个简单的Makefile入门
查看>>
Git跨平台中文乱码临时解决方案
查看>>
20160420javaweb之文件上传和下载
查看>>
CentOS更换源和软件更新操作
查看>>
二叉树递归与非递归遍历(附完整源码)
查看>>
ios开发系列-UITableController-动态页面
查看>>
sublime中BracketHighlighter 插件使用
查看>>
ROS 2编写包并用colcon编译
查看>>
gitlab重置root的密码
查看>>
关于C/C++中,对static关键字的理解
查看>>
Tomcat 5常用优化和配置
查看>>
几个性能测试工具
查看>>
(转)丰田公司精益管理的14项原则- [Lean and Agile]
查看>>
开发进度——2
查看>>
Java基础语法之Java初识
查看>>
Java Socket编程基础知识
查看>>
jenkins忘记管理员账号密码的补救方法-转
查看>>
jQuery基础三
查看>>
已Access为支持,书写一个C#写入的记录的方案
查看>>