Ambari-stack介绍,ambari




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

介绍下dual stack协议?

双协议栈 ( Dual Stack)主机是Internet主机,其提供两个离散的网络层。这里的术语栈是指协议栈或用在计算机网络软件中的协议组。双协议栈主机运行当前的两个协议标准,IPv4和下一代Internet层,IPv6。
 

详细介绍下struts2中的ValueStack

仅供参考:我们通常会写stack.set(key1,value1) 或者statck.setvalue(key2,value2) 这两个是有区别的,前者会在valuestack压入一个hashmap,并将key1,value1植入该hashmap 那么此时valuestack会有两个对象,顶部是hashmap,底部是action 后者 会 将key2,value2直接植入到顶部的对象,通常是action,如果action没有相应的set方法,那么执行这个方法等于白搭,你如果此时执行valuestack.findvalue就会为空
 

相关内容

    暂无相关文章