
真正運行spark任務(wù)的時候,才會有其他占用資源的任務(wù)被創(chuàng)建出來。
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將任務(wù)提交給admin router
admin router將任務(wù)提交給spark framework
spark framework將任務(wù)提交給mesos-master
mesos-master將任務(wù)分發(fā)給mesos-agent進行分別處理
任務(wù)運行完畢后,所有mesos-agent上占用的資源又都釋放了。
正是這種模式,才實現(xiàn)微服務(wù)和大數(shù)據(jù)框架的共享資源,與此相對應(yīng)的是使用Docker來部署spark集群,然后集群自管理,不歸mesos管理。這樣在創(chuàng)建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對于容器的管理越來越獨立的體現(xiàn)。
我們在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的啟動參數(shù)的設(shè)置,通過mesos的文檔,我們知道對于mesos的參數(shù)可以使用環(huán)境變量進行設(shè)置。
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的參數(shù)
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