深入解析DC/OS 1.8 – 高可靠的微服务及大数据管理平台

物联网

  对于一个package,往往包含下面的部分:

  package.json:这里面保存了一些metadata的数据,例如对于spark

  "name": "spark",

  "description": "Spark is a fast and general cluster computing system for Big Data. Documentation: https://docs.mesosphere.com/cu ... ot%3B ,

  "licenses": [

  {

  "name": "Apache License Version 2.0",

  "url": " https://raw.githubusercontent. ... ot%3B

  }

  ],

  "tags": [

  "bigdata",

  "mapreduce",

  "batch",

  "analytics"

  ],

  config.json:保存一些配置项,例如对于spark

  "name": {

  "default": "spark",

  "description": "The Spark Dispatcher will register with Mesos with this as a framework name. This service will be available at http://<dcos_ur l="">/service//",

  "type": "string"

  },

  "cpus": {

  "default": 1,

  "description": "CPU shares",

  "minimum": 0.0,

  "type": "number"

  },

  "mem": {

  "default": 1024.0,

  "description": "Memory (MB)",

  "minimum": 1024.0,

  "type": "number"

  },

  "role": {

  "description": "The Spark Dispatcher will register with Mesos with this role.",

  "type": "string",

  "default": "*"

  },

  marathon.json.mustache:是一个模板,里面的一些变量会替换为config.json里面的内容,最终变成可以直接发送给marathon的请求。以spark为例

  "id": "{{service.name}}",

  "cpus": {{service.cpus}},

  "mem": {{service.mem}},

  "container": {

  "type": "DOCKER",

  "docker": {

  "image": "{{resource.assets.container.docker.spark_docker}}",

  "network": "HOST",

  "forcePullImage": true

  }

  },

  resource.json:是一些资源,如image,tar.gz文件等

  "assets": {

  "container": {

  "docker": {

  "spark_docker": "mesosphere/spark:1.0.2-2.0.0"

  }

  }

  },

  所有的这些配置都像模板一样已经预先写好,安装的时候界面上一点,或者一行命令就安装好了。

物联网

  当然你如果点击Advanced Installation,则所有的配置都可以定制化

物联网

  就像yum里面一样,将mysql-server的yum包的制作者和mysql的使用者分开,普通用户作为使用者,不需要了解太多的细节,用就是了。

  如果想在数据中心里面使用package管理,可以生成自己的local universe,里面放入自己的应用,只要专业人士设计一次,便可以多次使用。也可以一次安装多个软件形成一个group,里面包含微服务的,也包含大数据的,两者可以通过服务发现相互访问。

  我们在这里先安装一个spark的软件

物联网

  最初安装完毕spark,却发现只有一个docker

  Spark不是一个集群计算框架吗,怎么会只有一个Docker呢?这就是mesos对大数据框架管理的特殊之处。在spark不运行任务的时候,就仅仅占用这一个docker,其实是一个框架。

物联网

  安装过程如图所示:

  dcos package install spark会将请求提交给admin router

  admin router会将请求提交给cosmos,也即package管理的服务

  cosmos将config.json, resource.json, marathon.json组合成为一个marathon请求提交给marathon

  marathon将请求交给mesos-master,然后交给mesos-agent

  mesos-agent启动一个容器运行spark

  启动的spark容器会注册到mesos里面成为一个新的framework