1. cluster mode
spark cluster mode指的是將driver運行在cluster而不是client中??梢允褂?code>surpervise機制,指的是driver會自動的進行失敗重試。
2. mesos-dispatcher
如果要在mesos中使用cluster模式,必須先開啟mesos-dispatcher
服務(wù)。
啟動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:
提交任務(wù)測試:
/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包必須可以通過網(wǎng)絡(luò)獲取到,比如 http://, hdfs:// 或 s3n://
啟動surpervisor的driver只能通過kill
命令關(guān)閉
./bin/spark-submit --master mesos://192.168.6.52:7077 --kill $driverId
查看任務(wù)狀態(tài):
/usr/install/spark/bin/spark-status --master mesos://192.168.6.52:7077 --kill driver-20160822120724-0002
3. 在marathon上運行dispatcher
優(yōu)點:
- 便于管理
- 狀態(tài)檢測(服務(wù)失敗重啟等)
啟動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服務(wù)運行在指定節(jié)點中:
//將任務(wù)運行在dp0652中
"constraints": [["hostname", "CLUSTER", "dp0652"]]
marathon web ui:
4. FAQ :
-
無法識別啟動時提交的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;這個目前還沒有發(fā)現(xiàn)解決方法,在下面這個issues中也有人遇到相同的問題,不過沒人做出回復(fù):
Support framework authentication and role in Mesos framework -
存在單點問題
MesosClusterDispatcher
現(xiàn)在不支持啟動多個實例保證HA。
同時啟動Dispatcher
時無法使用mesos://zk://...
進行提交,只能使用mesos://hostName:5050
的方式。
5. 結(jié)語
原生的MesosClusterDispatcher目前還不適合生產(chǎn)環(huán)境使用。