Mesos配置

Apache Mesos

Mesos和Yarn一样,是一个资源统一管理与调度平台

一、Mesos基本术语

  • 1.master -> 负责framework和slave,并将slave上的资源分给framework
  • 2.slave -> 负责管理本节点上的task,并将计算资源分配给executor
  • 3.framework -> 计算框架如Hadoop、Spark等,通过SchedulerDriver接入Mesos
  • 4.executor -> 执行器,位于salve上,用于执行slave中的task

二、框架流程

  • 1.接入Mesos的计算框架必须有自己的调度器Scheduler,通过Scheduler来向Mesos的SchedulerDriver接入,向master注册
  • 2.framework自己管理框架内部的资源调度,计算资源向master申请资源,再分配给自己框架内部的任务
  • 3.master通过对所有slave资源的汇总,通过资源调度器Allocator根据某种策略给framework分配计算资源
  • 4.slave向master报告自身状态和任务状态,并启动相应框架task的executor,在Linux-Container中运行任务

三、特点

  • 1.轻量级的master,仅保留了framework和slave的一些状态,易于重构,因此采用zookeeper很容易解决HA问题

  • 2.利用Linux-Container隔离CPU与内存资源

  • 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
解决方案:由于内存不足编译失败,可以切入到编译失败的项目目录下进行部分make,然后再做整体make,使用free -m命令查看可用内存

最后还是没有解决编译失败的问题,选择了Mesosphere的二进制版本-_-

五、二进制版本配置与启动

  • 1.安装deb包
$ sudo dpkg -i ***.deb
  • 2.修改配置
#进入配置目录
$ cd /usr/local/etc/mesos

#添加masters和slaves文件,文件中每行是master和slave的节点主机名或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.启动Mesos集群
#首先要启动zookeeeper集群
$ cd /usr/zookeeper-3.4.6/bin
$ ./zkServer.sh start

#启动mesos集群
$ mesos start-cluster.sh

打开浏览器,输入http://node:5050即可确认集群启动是否成功

Mesos配置_第1张图片
启动后WebUI
  • 4.Spark on Mesos配置与启动
$ cd /usr/spark-1.4.0/conf
$ sudo vi spark-env.sh
#添加以下几行内容
#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
#添加以下几行内容
#mesos
spark.executor.uri hdfs://spark-1.4.0-bin-hadoop2.6.tgz
spark.master mesos://node:5050

输入以下命令以测试spark on mesos是否启动成功:

$ cd /usr/spark-1.4.0/sbin
$ ./start-all.sh

$ spark-shell

你可能感兴趣的:(Mesos配置)