Spark on Mesos cluster mode

1. cluster mode

spark cluster mode指的是将driver运行在cluster而不是client中。可以使用surpervise机制,指的是driver会自动的进行失败重试。

2. mesos-dispatcher

如果要在mesos中使用cluster模式,必须先开启mesos-dispatcher服务。

启动mesos-dispatcher

sudo -u admin /usr/install/spark/sbin/start-mesos-dispatcher.sh \
-m mesos://192.168.6.52:5050 \
-z 192.168.6.55:2181,192.168.6.56:2181,192.168.6.57:2181

可以在8081端口中看到web ui:
这里写图片描述

提交任务测试:

/usr/install/spark/bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master mesos://192.168.6.53:7077 \
--deploy-mode cluster \
--surpervise \
hdfs://tdhdfs/lib/spark-examples-1.6.2-hadoop2.4.1.jar \
100

note: jar包必须可以通过网络获取到,比如 http://, hdfs:// 或 s3n://

启动surpervisor的driver只能通过kill命令关闭

./bin/spark-submit --master mesos://192.168.6.52:7077 --kill $driverId

查看任务状态:

/usr/install/spark/bin/spark-status --master mesos://192.168.6.52:7077 --kill driver-20160822120724-0002

3. 在marathon上运行dispatcher

优点:
- 便于管理
- 状态检测(服务失败重启等)

启动mesos dispatcher

mesos的cmd中增加

/usr/install/spark/bin/spark-class org.apache.spark.deploy.mesos.MesosClusterDispatcher \
-m mesos://192.168.6.52:5050 \
-z 192.168.6.55:2181,192.168.6.56:2181,192.168.6.57:2181

将dispatcher服务运行在指定节点中:

//将任务运行在dp0652中
"constraints": [["hostname", "CLUSTER", "dp0652"]]

marathon web ui:
这里写图片描述

4. FAQ :

  1. 无法识别启动时提交的role

    启动role时,配置--conf spark.mesos.role=production不生效,所以无法申请到资源,报错提示如下:

    State: TASK_ERROR, Message: Task uses more resources cpus(*):1; mem(*):1024 than available cpus(test):4; mem(*):20480; 
    

    这个目前还没有发现解决方法,在下面这个issues中也有人遇到相同的问题,不过没人做出回复:
    Support framework authentication and role in Mesos framework

  2. 存在单点问题

    MesosClusterDispatcher现在不支持启动多个实例保证HA。

    同时启动Dispatcher时无法使用mesos://zk://...进行提交,只能使用mesos://hostName:5050的方式。

5. 结语

原生的MesosClusterDispatcher目前还不适合生产环境使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值