设为首页 收藏本站
查看: 956|回复: 0

[经验分享] Run Spark on Mesos with Zookeeper

[复制链接]

尚未签到

发表于 2017-4-19 10:31:29 | 显示全部楼层 |阅读模式
  本文面向对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
这样一串字符串信息。  

  (全文完)

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-366262-1-1.html 上篇帖子: 使用zookeeper管理多个hbase集群 下篇帖子: zookeeper使用和原理探究【转】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表