对于一个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