zoukankan      html  css  js  c++  java
  • 初识小米Minos

    1. Minos框架的基本介绍

      小米公司不仅仅在搞手机以及MIUI rom的研发工作,云计算、虚拟化以及Hadoop也是小米现在在搞的东西,小米与2012年下半年成立了自己的Hadoop团队。介绍小米Minos,Hadoop部署、监控系统,目前小米将此系统开源在github上面可以下载来获取。Minos的logo:

     

    1Minos logo

      依然是小米经典的橙色白色组合的样式,显目耀眼。下面将针对Minos进行简单的介绍。(网上有武老师的视频,手把手教你玩转Minos)

    1.1. 基本介绍

      Minos使用python语言(python开发东西应该很快,越来越多的团队都喜欢用这种脚本语言了,ruby,python)开发,内部利用到了多个python的开源的模块,用于Hadoop集群的部署和监控。开发用来管理小米公司的Hadoop、HBase以及ZooKeeper集群。Minos可以轻易的进行扩展,以便支持其他的系统,目前的版本可以用来支持HDFS、YARN、Impala。

    1.2. Hadoop部署、监控方案的相关研究

      Hadoop自动部署与监视的系统很多公司以及开源的社区都在做,Minos绝不是第一个提出来进行整个集群的部署与监控的。大型公司由于有众多的集群节点,必须有一个自动化的、集中的系统部署与监控的解决方案。当前这些方案无非就是开源和不开源的。关于开源方案主要就是Apache Ambari,而不开源的有:Cloudera Manager、微软的Autopilot、谷歌的Borg、以及腾讯公司的Torca。当然,Hadoop自带的系统管理脚本也是可以用的,例如start-all.sh。

    1.2.1. 系统原生脚本

      很小规模的集群使用原生脚本管理还是可以的,比较方便快捷,适合做,但是当集群规模稍大时,便力不从心了。

    1.2.2. Cloudera Manager(简称cm

      Cloudera公司在Hadoop方面走的很前沿,Cloudera Manager就是一个Hadoop集群部署与监控的解决方案。cm本身是一个商业软件,但是拥有一个免费版,可以免费支持50个节点。

      cm在进行部署时,将Hadoop部署为系统级别服务,也就是一个主机不能作为多个实例来使用,仅仅是单个实例。由于商业软件的黑盒特性,在部署以及使用的过程中可能会发生的错误,对于用户是不方便定位的。另外就是cm本身专门服务于Hadoop的生态圈,支持Hadoop原生的一些扩展,如果企业想要再集成进入Hadoop中一些其他的服务组件就比较困难了。另外本身也没有包管理的系统,比较方便使用官方发布包,而不容易使用团队修改后的一些包就不好集成了,另外不支持Hadoop Metrics数据的搜集与展示。

    1.2.3. Apache Ambari

      Apache的一个孵化项目,不是非常的成熟。功能与cm类似,免费开源。通过Ambari部署Hadoop需要手动配置免密码ssh,当集群规模较大以后也比较繁琐。对比cm,Ambari的一个优点是支持Metrics数据的搜集,这点是通过Ganglia来做的。

    1.2.4. 商业公司方案

      商业公司的方案微软的Autopilot,谷歌的Borg,腾讯的Torca,也是现有的集成部署方案了。

    小米在做Minos也参考了这些大厂商以及开源的方案。

    1.3. 组件简介

      组件主要包括4个部分:Client、Owl、Supervisor、Tank,这个小结将分别对这四大块儿组件进行基本介绍。4大组成部分如下图所示:

    2Minos 架构

    1.3.1. Client(客户端)

      用户通过Client组件对整个Minos系统进行使用。Client在Minos的角色扮演为集群管理的入口,就是一个命令行工具。使用Client可以完成一系列诸如安装,启动,重启停止Hadoop服务的操作。

    v 组件需求:

      1 Pexpect。Pexpect是一个自动控制的Python模块,可以用来ssh、ftp、passwd、telnet等命令行进行自动交互。使用这个也是因为shell脚本处理交互的能力较差。

      2 Jdk。部署与启动停止Hadoop服务最终会变成Java命令,JDK是必须的。

      3 ConfigObj。python用于读写配置文件的一个库,读写用户在Minos里面配置的文件。

    v 通常流程:

      一般用Client主要就是安装和管理Hadoop。一般完成以下组件的部署:1、Tank,2、Supervisor,3、配置deploy.cfg,4、配置Zookeeper,5、配置HFDS。

    1.3.2. Tank(包管理工具)

      Tank是个包管理器。由于大公司会对Hadoop的各个组件进行相应的修改改,以及再部署集成。因此需要一个包管理工具完成这个任务。将需要部署的,修改过的包都扔到Tank中,在集群部署的时候,统一从Tank中进行分发。Tank可以看成一个包的仓库。

    v 组件需求

      Django。Django,Python的一个web框架,Minos通过Django来完成展示和管理包的功能。

    v Tank路径介绍

      data/:存放包。

      package_server/:django包管理器服务器的目录。

      sqlite/:数据库目录。

      static/:静态资源目录。

      tank/:django目录。

      template/:web页面模版目录。

    1.3.3. Supervisor(进程管理与监控)

      Supervisor本身就是一个开源软件,一个c/s系统。允许用户对Linux操作系统进行进程的监控与管理。小米基于Supervisor进行二次开发,用于支持Minos。

      Supervisor一个特点就是不再像Ambari对集群节点进程进行管理时依赖ssh方式来完成,它基于xmlrpc进行通信。

    v 组件需求

      1 setuptools。用与自动安装python所需要的模块。(关于这个组件的作用暂时没理解)

      2 meld3。meld3用于对xml/html进行格式化,一个HTML/XML的模版引擎。输入xml,将xml按照需求格式化,输出HTML完成页面的展示功能。

      3 elementtree。python中用于解析和生成xml的工具。

      4 pexpect。由于涉及到进程的管理了,因此肯定需要自动化脚本处理。

    1.3.4. Owl(集群Metrics信息的搜集、存储与展示)

      Owl是一个Hadoop的监控系统,从服务器以JMX的方式进行数据采集与展示,另外还提供一些关于集群健康状况的警告机制等。Owl应该是Minos里面最复杂的功能组件了,整个功能组件的基本工作原理如下:

     

    3Owl架构与工作原理

      Owl Collector不定期的把Hadoop集群产生的Metrics数据搜集起来,并存入Mysql数据库。这个存储的方式是覆盖存储,存储时直接会将之前存储的数据覆盖掉。Dashboard提供一个Web服务,用于访问Mysql中保存的Metrics数据信息。而Opentsdb Collector通过Dashboard将Mysql中的数据存储到Opentsdb中去,其实就是Hbase。Opentsdb这个东西本身是做在HBASE之上的,一个时间序列的数据库,使得存储的数据容易获取以及图表化的方式进行展示。Hbase中就存储了所有的集群的Metrics历史数据。当用户查看存储的历史数据时,就通过Opentsdb进行数据访问并最终通过Dashboard呈现给用户。

    v 组件需求

      1 mysql、mysql-python。瞬时数据需要用mysql进行存储。

      2 django。web框架。

      3 twisted。一个网络编程通用模块集合,用于执行各种形式的网络编程任务,它改变了用Python标准库不易于轻松地进行网络编程的局面。

      4 dbutils。数据库的一个链接工具,在多线程环境下完成数据库连接的管理工作。

    1.4. 小结

      对Minos的基本功能和特性进行了介绍,后续有空闲时间的话讲会继续深入Minos的使用、具体的工作原理等。后续一张脑图来进行小结:

     

    4Minos总结的脑图

  • 相关阅读:
    MVC ORM 架构
    Kubernetes 第八章 Pod 控制器
    Kubernetes 第七章 Configure Liveness and Readiness Probes
    Kubernetes 第六章 pod 资源对象
    Kubernetes 第五章 YAML
    Kubernetes 核心组件
    Kubernetes 架构原理
    Kubernetes 第四章 kubectl
    Kubernetes 第三章 kubeadm
    yum 配置及yum 源配置
  • 原文地址:https://www.cnblogs.com/ilfmonday/p/Minos.html
Copyright © 2011-2022 走看看