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

最新文章

  1. linux hosts文件详+mac主机名被莫名其妙修改
  2. Ionic – 强大的 HTML5 Mobile App 开发框架
  3. 【转】同形的JavaScript:Web应用的未来
  4. Java的位运算 待整理
  5. SQL遍历字符串的方法
  6. MVC 弹出提示框
  7. Eclipse中使用git把项目导入到osc@git中
  8. 小鱼提问2 属性访问器中get,set再用public修饰行吗,private呢?
  9. 创建文件DSN
  10. 【jpa】spring data jpa 配置使用
  11. 洛谷 K短路(魔法猪学院)
  12. 补充:pyhton 2 和3中的beyts类型
  13. ToolBar+Drawable实现一个好用的侧滑栏(侧边栏)和工具栏
  14. MT【216】韦达定理
  15. 洛谷 P1120 小木棍 [数据加强版]解题报告
  16. System.load()与System.loadLibrary()
  17. robotium 中通过id获取 View 以及进行相应的操作
  18. 【BZOJ1914】数三角形(组合数,极角排序)
  19. centos安装jdk文件
  20. Mathtype启动失败与Microsoft公式编辑器Equation的问题处理案例

热门文章

  1. 隐马尔可夫模型HMM与维特比Veterbi算法(一)
  2. com.esotericsoftware.kryo.kryoexception java.util.ConcurentModificationException
  3. android模拟器使用gps定位
  4. UIKeyboardTypeNumberPad 数字键盘添加完成按钮
  5. 微信小程序 - promise(get\post)
  6. 页面可视化编辑ckeditor(web基础学习笔记十五)
  7. windows XP系统搜索无线网络时提示“windows无法配置此无线连接”,如何处理?
  8. javascript 设计模式
  9. linux下sar tool command note
  10. getattr和setattr