apache mesos 入门(2)——单机版安装


mesos采用master/slave模式,master负责管理slave以及各个framework,另外也负责相关的资源调度。


本文单机版的安装在ubuntu操作系统上进行,安装的mesos版本为0.28


1)基础环境准备

sudo apt-get update

sudo apt-get install -y tar wget git

sudo apt-get install -y openjdk-7-jdk

sudo apt-get install -y autoconf libtool

sudo apt-get -y install build-essential python-dev python-boto libcurl4-nss-dev libsasl2-dev libsasl2-modules maven libapr1-dev libsvn-dev


2)下载安装包

wget http://www.apache.org/dist/mesos/0.28.0/mesos-0.28.0.tar.gz

tar -zxf mesos-0.28.0.tar.gz


3)编译安装

cd mesos-0.28.0

./configure

make #可以采用make -j 4加速编译过程,4为并行数目。

make check #运行测试用例

make install

4)启动mesos

#启动master进程,默认监听5050端口,启动后就可以通过浏览器访问http://127.0.0.1:5050”查看集群相关信息了

mesos-master --ip=127.0.0.1 --work_dir=/var/lib/mesos 


#启动slave进程

mesos-slave --master=127.0.0.1:5050 


mess源码中自带了几个测试用的framework,包括Cpythonjava三种语言。

#运行C语言写的test framework

./mesos-0.28.0/build/src/test-framework --master=127.0.0.1:5050


#运行java写的test framework,该test framework的源码位置mesos-0.28.0/src/examples/java/

./mesos-0.28.0/build/src/examples/java/test-framework 127.0.0.1:5050


#运行python写的test framework,源码位置:./mesos-0.28.0/src/examples/python/,

./mesos-0.28.0/build/src/examples/python/test-framework 127.0.0.1:5050

进入到./mesos-0.28.0/src/examples/python/目录,可以发现该test framework包含两个文件:

test_framework.py   test_executor.py

其中test_framework.py就是framework的scheduler,test_executor.py是framework的executor

我们直接运行:python test_framework.py  127.0.0.1:5050

会报错:

Traceback (most recent call last):

  File "test_framework.py", line 23, in <module>

    import mesos.interface

ImportError: No module named mesos.interface

这是因为mess python找不到,通过find查找mess,发现mess的python库安装在‘/usr/local/lib/python2.7/site-packages/’

把该路径加入PYTHONPATH即可,

如下:PYTHONPATH=/usr/local/lib/python2.7/site-packages:$PYTHONPATH python test_framework.py  127.0.0.1:5050

不过显示任务执行失败,我们登录127.0.0.1:5050,在slave的completed framework列表中找到该次的执行,在completed executor列表中查看对应executor的错误输出stderr,显示“sh: 1: /root/mesos-0.28.0/src/examples/python/test-executor: not found”

这是因为slave找不到要执行的executor导致的,编辑test_framework.py 将里边的‘./test-executor’改为’./test_executor.py’

之后执行就没有问题了。


mesos采用master/slave模式,master负责管理协调各个slave并负责资源的调度,slave负责在容器(container)中执行相关的任务。


具体来看,master负责:

1)记录系统中所有的任务信息

mesos将平台上所有的任务信息都记录在内存中,因此master节点应该由充足的内存。

2)负责给不同的framework分配资源

每个framework在启动时都会以一定的角色(ROLE)运行,通过给不同的ROLE设置不同的权重,来实现资源的分配。

假如平台有三种角色(ROLE):devqaprod,在启动master时,我们可以通过添加选项 - -roles=dev,qa,prod,通过选项--weights='dev=2,qa=1,prod=3'可以设置三种角色的权重。

3)负责平台的高可用以及failover

master是整个平台的单点,为实现高可用,mesos基于zookeeper来实现多节点master,通过zookeeper来实现master的高可用和failover

slave负责:

1)管理运行executor的容器(包括lxcdocker等)

2)将executor的相关信息汇报给master,充当executormaster沟通的中介。

3)上报slave节点相关的信息,包括运行的任务、executor、可用的资源等

mesos slave在启动时会向master上报当前节点的可用CPU、内存、磁盘资源等资源,当然为了保证slave进程的正常运行,slave会为自己保留一定数量的资源。除了上报资源情况外,slave还可以上报任意的key/value数据,例如,当前节点的磁盘类型、CPU类型以及所在的rack等信息给master,以便master实现类似机架感知(rack awareness)调度等功能。

4)支持当前slave状态的快照和恢复

slave可以将自己的当前状态以及任务和executor的状态做快照,当重启一个slave节点的时候,会从快照文件中读取相关状态,并且重新连接当前运行的executor,通过这种方式,重启slave不影响任务的执行。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值