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

物联网

  真正运行spark任务的时候,才会有其他占用资源的任务被创建出来。

  dcos spark run --submit-args='-Dspark.mesos.coarse=true --driver-cores 1 --driver-memory 1024M --class org.apache.spark.examples.SparkPi https://downloads.mesosphere.c ... T.jar 30'

物联网

  Spark运行过程如图:

  dcos spark run将任务提交给admin router

  admin router将任务提交给spark framework

  spark framework将任务提交给mesos-master

  mesos-master将任务分发给mesos-agent进行分别处理

  任务运行完毕后,所有mesos-agent上占用的资源又都释放了。

  正是这种模式,才实现微服务和大数据框架的共享资源,与此相对应的是使用Docker来部署spark集群,然后集群自管理,不归mesos管理。这样在创建spark集群的时候,就需要指定spark worker占用的资源,比如16G,然而这16G资源则无论spark是否在计算,都会被占用,都不会被其他的框架使用。

  五、DC/OS 1.8的新功能

  对于最新的DC/OS 1.8,有一个博客 https://dcos.io/blog/2016/intr ... .html 描述了最新的功能。

  其中第一个重要的功能为Mesos 1.0 and the Universal Container Runtime,也即可以使用mesos-containerizer来运行Docker的镜像了。这也是DC/OS对于容器的管理越来越独立的体现。

  我们在mesos-agent所在的机器上可以查看

  ip-10-0-1-78 dcos.target.wants_slave # ps aux | grep mesos-agent

  root 1824 0.6 0.3 1069204 46948 ? Ssl Oct03 9:57 /opt/mesosphere/packages/mesos--19a545facb66e57dfe2bb905a001a58b7eaf6004/bin/mesos-agent

  mesos-agent的配置在路径/opt/mesosphere/packages/mesos--19a545facb66e57dfe2bb905a001a58b7eaf6004下面,在/opt/mesosphere/packages/mesos--19a545facb66e57dfe2bb905a001a58b7eaf6004/dcos.target.wants_slave/dcos-mesos-slave.service里面是mesos-slave的启动参数的设置,通过mesos的文档,我们知道对于mesos的参数可以使用环境变量进行设置。

  ip-10-0-1-78 dcos.target.wants_slave # cat dcos-mesos-slave.service

  [Unit]

  Description=Mesos Agent: DC/OS Mesos Agent Service

  [Service]

  Restart=always

  StartLimitInterval=0

  RestartSec=5

  KillMode=control-group

  Delegate=true

  LimitNOFILE=infinity

  TasksMax=infinity

  EnvironmentFile=/opt/mesosphere/environment

  EnvironmentFile=/opt/mesosphere/etc/mesos-slave-common

  EnvironmentFile=/opt/mesosphere/etc/mesos-slave

  EnvironmentFile=/opt/mesosphere/etc/proxy.env

  EnvironmentFile=-/opt/mesosphere/etc/mesos-slave-common-extras

  EnvironmentFile=-/var/lib/dcos/mesos-slave-common

  EnvironmentFile=-/var/lib/dcos/mesos-resources

  EnvironmentFile=-/run/dcos/etc/mesos-slave

  ExecStartPre=/bin/ping -c1 ready.spartan

  ExecStartPre=/bin/ping -c1 leader.mesos

  ExecStartPre=/opt/mesosphere/bin/bootstrap dcos-mesos-slave

  ExecStartPre=/opt/mesosphere/bin/make_disk_resources.py /var/lib/dcos/mesos-resources

  ExecStartPre=/bin/bash -c 'for i in /proc/sys/net/ipv4/conf/*/rp_filter; do echo 2 > $i; echo -n "$i: "; cat $i; done'

  ExecStart=/opt/mesosphere/packages/mesos--19a545facb66e57dfe2bb905a001a58b7eaf6004/bin/mesos-agent

  在文件/opt/mesosphere/etc/mesos-slave-common中配置了大量的mesos-agent的参数

  MESOS_MASTER=zk://zk-1.zk:2181,zk-2.zk:2181,zk-3.zk:2181,zk-4.zk:2181,zk-5.zk:2181/mesos

  MESOS_CONTAINERIZERS=docker,mesos

  MESOS_LOG_DIR=/var/log/mesos

  MESOS_MODULES_DIR=/opt/mesosphere/etc/mesos-slave-modules

  MESOS_CONTAINER_LOGGER=org_apache_mesos_LogrotateContainerLogger

  MESOS_ISOLATION=cgroups/cpu,cgroups/mem,disk/du,network/cni,filesystem/linux,docker/runtime,docker/volume

  MESOS_DOCKER_VOLUME_CHECKPOINT_DIR=/var/lib/mesos/isolators/docker/volume

  MESOS_IMAGE_PROVIDERS=docker

  MESOS_NETWORK_CNI_CONFIG_DIR=/opt/mesosphere/etc/dcos/network/cni

  MESOS_NETWORK_CNI_PLUGINS_DIR=/opt/mesosphere/active/cni/

  MESOS_WORK_DIR=/var/lib/mesos/slave

  MESOS_SLAVE_SUBSYSTEMS=cpu,memory

  MESOS_EXECUTOR_ENVIRONMENT_VARIABLES=file:///opt/mesosphere/etc/mesos-executor-environment.json

  MESOS_EXECUTOR_REGISTRATION_TIMEOUT=10mins

  MESOS_CGROUPS_ENABLE_CFS=true

  MESOS_CGROUPS_LIMIT_SWAP=false