Apache Mesos
Mesos和Yarn一樣,是一個(gè)資源統(tǒng)一管理與調(diào)度平臺(tái)
一、Mesos基本術(shù)語
- 1.master -> 負(fù)責(zé)framework和slave,并將slave上的資源分給framework
- 2.slave -> 負(fù)責(zé)管理本節(jié)點(diǎn)上的task,并將計(jì)算資源分配給executor
- 3.framework -> 計(jì)算框架如Hadoop、Spark等,通過SchedulerDriver接入Mesos
- 4.executor -> 執(zhí)行器,位于salve上,用于執(zhí)行slave中的task
二、框架流程
- 1.接入Mesos的計(jì)算框架必須有自己的調(diào)度器Scheduler,通過Scheduler來向Mesos的SchedulerDriver接入,向master注冊(cè)
- 2.framework自己管理框架內(nèi)部的資源調(diào)度,計(jì)算資源向master申請(qǐng)資源,再分配給自己框架內(nèi)部的任務(wù)
- 3.master通過對(duì)所有slave資源的匯總,通過資源調(diào)度器Allocator根據(jù)某種策略給framework分配計(jì)算資源
- 4.slave向master報(bào)告自身狀態(tài)和任務(wù)狀態(tài),并啟動(dòng)相應(yīng)框架task的executor,在Linux-Container中運(yùn)行任務(wù)
三、特點(diǎn)
1.輕量級(jí)的master,僅保留了framework和slave的一些狀態(tài),易于重構(gòu),因此采用zookeeper很容易解決HA問題
2.利用Linux-Container隔離CPU與內(nèi)存資源
3.資源分配器比較簡單
四、編譯
| 軟件 | 版本 |
|---|---|
| OS | Mint-16-64bit |
| Mesos | 0.21.0 |
- 1.下載源碼及依賴
$ wget http://www.apache.org/dist/mesos/0.22.1/mesos-0.21.0.tar.gz
$ tar -zxvf mesos-0.21.0.tar.gz
$ sudo apt-get -y install build-essential python-dev python-boto libcurl4-nss-dev libsasl2-dev maven libapr1-dev libsvn-dev
$ cd mesos
$ mkdir build
$ cd build
$ ../configure
$ make
- 2.問題及解決方案
問題:g++: internal compiler error: Killed (program cc1plus) Please submit a full bug report
解決方案:由于內(nèi)存不足編譯失敗,可以切入到編譯失敗的項(xiàng)目目錄下進(jìn)行部分make,然后再做整體make,使用free -m命令查看可用內(nèi)存
最后還是沒有解決編譯失敗的問題,選擇了Mesosphere的二進(jìn)制版本-_-
五、二進(jìn)制版本配置與啟動(dòng)
- 1.安裝deb包
$ sudo dpkg -i ***.deb
- 2.修改配置
#進(jìn)入配置目錄
$ cd /usr/local/etc/mesos
#添加masters和slaves文件,文件中每行是master和slave的節(jié)點(diǎn)主機(jī)名或IP地址
$ sudo vi masters
node
$ sudo vi slaves
node
#修改master配置
$ sudo cp mesos-master-env.sh.template mesos-master-env.sh
$ sudo vi mesos-master-env.sh
#添加下面幾行
export MESOS_log_dir=/home/*/disk/mesos/master/log
export MESOS_work_dir=/home/*/disk/mesos/master/work
export MESOS_ZK=zk://node:2181/mesos
export MESOS_quorum=1
#修改slave配置
$ sudo cp mesos-slave-env.sh.template mesos-slave-env.sh
$ sudo vi mesos-slave-env.sh
#添加下面幾行
export MESOS_log_dir=/home/zhy/disk/mesos/slave/log
export MESOS_work_dir=/home/zhy/disk/mesos/slave/work
export MESOS_isolation=cgroups
#修改deploy配置
$ sudo cp mesos-deploy-env.sh.template mesos-deploy-env.sh
$ sudo vi mesos-deploy-env.sh
#無需修改
- 3.啟動(dòng)Mesos集群
#首先要啟動(dòng)zookeeeper集群
$ cd /usr/zookeeper-3.4.6/bin
$ ./zkServer.sh start
#啟動(dòng)mesos集群
$ mesos start-cluster.sh
打開瀏覽器,輸入http://node:5050即可確認(rèn)集群啟動(dòng)是否成功
啟動(dòng)后WebUI
- 4.Spark on Mesos配置與啟動(dòng)
$ cd /usr/spark-1.4.0/conf
$ sudo vi spark-env.sh
#添加以下幾行內(nèi)容
#mesos
export MESOS_NATIVE_JAVA_LIBRARY=/usr/local/lib/libmesos.so
export SPARK_EXECUTOR_URI=hdfs://spark-1.4.0-bin-hadoop2.6.tgz
$ sudo vi spark-defaults.conf
#添加以下幾行內(nèi)容
#mesos
spark.executor.uri hdfs://spark-1.4.0-bin-hadoop2.6.tgz
spark.master mesos://node:5050
輸入以下命令以測(cè)試spark on mesos是否啟動(dòng)成功:
$ cd /usr/spark-1.4.0/sbin
$ ./start-all.sh
$ spark-shell