$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
这样一串字符串信息。