本文面向对Spark,Mesos和Zookeeper有一点了解的读者,介绍下Run Spark on Mesos with Zookeeper的方法和一些注意点。因为Spark和Mesos的相关文档里,关于结合Zookeeper之后应该怎么改写相应URL和参数这块讲得不太清楚。
版本信息
Zookeeper 3.4.5 stable
Spark 0.8
Mesos 0.13
没有Zookeeper的时候
Mesos master通过下面的方式启动自己并挂起来(Mesos-0.13里,起master的时候最好加上一个whitelist文件,指明slaves,否则会一直跳一个提示信息,要求说明whitelist)
nohup $MASOS_HOME/sbin/mesos-master --whitelist=file://{MESOS_HOME}/var/mesos/deploy/slaves &
Mesos Slave通过下面的方式连接Master,5050为默认端口
nohup $MESOS_HOME/sbin/mesos-slave --master=masterIP:5050 &
以上的Mesos启动方式是单Master的Mesos Cluster,会存在单点故障问题。
而Spark连接Mesos URL run 任务的时候传的参数是masterIP:5050,比如跑SparkPi:
./run-example org.apache.spark.examples.SparkPi masterIP:5050
Why Zookeeper
Zookeeper功能强大,部署简单,复杂系统使用zookeeper API来做自己想做的事情。mesos正是引入zookeeper来解决自己的单点故障问题。
Zookeeper将保证Mesos存在多个masters,且在masters中选取一个作为active的master,当其挂掉时,能选取另一个备用master让mesos的slaves连接到新的master,让mesos cluster继续提供服务。
Zookeeper部署
修改conf/zoo.cfg内容,添加zookeeper集群的各个serverip(zoo1,zoo2,zoo3),及zk集群之间的数据同步端口(2888)和master选举端口(3888),
server.1=zoo1:2888:3888
server.2=zoo2:2888:3888
server.3=zoo3:2888:3888
在zoo1,zoo2,zoo3三台机器的dataDir里创建一个myid文件,里面的内容对应1(2, 3),来指明自己这台机器在上述配置中的server.X的X值
echo "1" > myid
然后分别在三台机器上启动zk,
$ZK_HOME/bin/zkServer.sh start
启动之后可以通过
$ZK_HOME/bin/zkServer.sh status
查看自己是master还是follower。
Zookeeper测试
$ZK_HOME/bin/zkCli.sh -server ip:port
Client端连接zk集群的port默认是2181(zoo.cfg里本来就有写),连接之后进入一个类文件系统的操作界面,可以输入一些命令进行测试:
ls /
可以看到有一个zookeeper路径,里面存放着一些配额信息,无法直接get查看到
create /node1 data1
创建新的znode和数据
get /node1
查看到/node1路径下的数据
delete /node1
删除节点及数据,如果节点下面还是节点的话则该节点无法删除
Zookeeper需要一定的JVM heap size,查看方法为
jmap -heap pid
加上Zookeeper之后
Mesos master的启动需要改为
nohup $MESOS_HOME/sbin/mesos-master --whitelist=file://{MESOS_HOME}var/mesos/deploy/slaves --zk=zk://zoo1:2181,zoo2:2181,zoo3:2181/mesos &
其中zoo1,zoo2,zoo3为zk机器的ip,后面的/mesos是mesos master在zk树里的znode,之后slave和spark这样的外部应用连接使用mesos的时候,必须也使用同一个zk下的路径,否则,会先创建一个你指定的路径,然后zk的Master Detector会负责检测该路径下有没有已经注册了的master。
此外,这时候可以起多个mesos master,会有一个master被select as master,其他master会waiting to be select to be master。且在kill掉当前活跃的master之后,mesos slave会detect到别的masterI(对其来说是一个新的master),然后把自己注册过去。
Mesos Slave的启动为
nohup $MESOS_HOME/sbin/mesos-slave --master=zk://zoo1:2181,zoo2:2181,zoo3:2181/mesos &
Run Spark on Mesos With ZK
$SPARK_HOME/run-example org.apache.spark.examples.SparkPi zk://zoo1:2181,zoo2:2181,zoo3:2181/mesos
也就是说,对于Slave和Spark来说,mesos master的ip:port都将由一个zk的URL+路径代替。具体,连接上zk,去查看/mesos下的内容的话会看到类似,
[zk: localhost:2181(CONNECTED) 0] ls /mesos
[0000000002, 0000000003]
这样的内容,每个子znode对应一个起来的mesos master,其中的2和3是因为之前我已经起过两个master,当时是0和1。如果再查看里面的内容,会看到
[zk: localhost:2181(CONNECTED) 2] get /mesos/0000000002
master@xx.xx.xx.xx:5050
这样一串字符串信息。
(全文完)
分享到:
相关推荐
本篇文章详细记录了Mesos+Zookeeper+Marathon的Docker管理平台部署过程,可作为线上实操手册,文档可用性已经过验证!有需要的朋友,请拿走。
Marathon+Mesos+Zookeeper+Docker实战,强烈推荐下载学习
Apache Spark can be installed on a laptop easily and the development made there can be exported easily to enterprise environments with large volumes of data. Apache Spark also makes the data ...
coreos-mesos-动物园管理员在 coreos 中启动 mesos 和 zookeeper 的服务和图像 动物园管理员 使用 alpine linux 服务单位 在启动时将节点添加到集群 重新启动时从集群中删除节点 金币 掌握 服务单位 奴隶使用全球 ...
Big Data SMACK: A Guide to Apache Spark, Mesos, Akka, Cassandra, and Kafka by Raul Estrada, Isaac Ruiz English | ISBN: 1484221745 | 2016 | EPUB | 264 pages | 2.35 MB This book is about how to ...
Deploy Apache Mesos to concurrently run cutting edge data processing frameworks like Spark, Hadoop and Storm in parallel Share resources between various cluster computing applications and web ...
We will show a demo for how to launch a Mesos cluster and then deploy Spark. Then we’ll show a sample app based on PMML for importing predictive models from analytics frameworks such as R, SAS, SPSS,...
2.mater会和已注册、受信任的Framework进行交互,定期将最新的资源情况发送给Framework,当Framework前端有工作需求时,将选择接收资源
摘要:在今天的文章中,我们将着重探讨如何利用SMACK(即Spark、Mesos、Akka、Cassandra以及Kafka)堆栈构建可扩展数据处理平台。虽然这套堆栈仅由数个简单部分组成,但其能够实现大量不同系统设计。除了纯粹的批量...
1. Spark是特性 高可伸缩性 高容错 于内存计算 2. Spark的生态体系(BDAS,中文:伯利克分析栈) MapReduce属于Hadoop生态体系之一,Spark则属于BDAS生态体系之一 ... Spark on Mesos (Spark在Mesos)
金币火花 金币的火花。 用法 Docker 镜像由 spark 版本标记。... docker run --rm -t -i --net=host bobrik/mesos-spark:1.1.1 /opt/spark/bin/spark-shell \ --master <mesos> --conf spark.executor.uri=<spark d
Building.Applications.on.Mesos.2015.12.pdf
Integrate Mesos with Spark and other big data frameworks Use networking features in Mesos for effective communication between containers Configure Mesos for high availability using Zookeeper Secure ...
藏经阁-Microservices on DC OS and Container Orchestration on Mesos.
Deploy Spark jobs to various clusters such as Mesos, EC2, Chef, YARN, EMR, and so on Use Shark's SQL query-like syntax with Spark In Detail Spark is a framework for writing fast, distributed programs...
Spark on Mesos Spark on YARN Spark on YARN 上运行 准备 Spark on YARN 配置 调试应用 Spark 属性 重要提示 在一个安全的集群中运行 用 Apache Oozie 来运行应用程序 Kerberos 故障排查 Spark 配置 ...
该文档来自阿帕奇2015中国路演。闫航发表了题为“Docker on Mesos: 云计算的革命”的主题演讲,欢迎下载!
我想在 CoreOS 上运行 marathon-mesos-deimos 设置( )。 我被 Ebay 使用主机 docker 设置( )。 我想同时享受 CoreOS 和 mesos 资源管理,未来希望 kubernetes ( )。 先决条件 舰队控制 流浪汉 虚拟机 Python ...