mesos自带工具
如果运行这些工具时报找不到mesos-1.0.1.so,则先将mesos-1.0.1.so拷贝到/usr/local/lib目录下,在/etc/ld.so.conf中加入include /usr/local/lib,最后执行/sbin/ldconfig –v 更新配置文件
工具
|名称|用途| |mesos-execute|在mesos集群上提交执行程序,可以提交一个二进制执行程序,也可以是SHELL程序,也可以提交一个容器| |mesos-ps|类似ps,列出framework| |mesos-cat|| |mesos-resolve|解析出master的leader地址| |mesos-scp|将文件拷贝到所有slave的目录| |mesos-tail|类似tail命令|
mesos cat —Concatenates and prints a file for a specific task.
mesos-ps
使用方法:
mesos-ps --master=master的地址
运行前需要参考build/src/examples/python/test-framework为python运行准备好环境。
例如:
yhw@yinhongwu:~/work/swcontainer$ ./run-python mesos/mesos-1.0.1/src/cli/mesos-ps --master="192.168.10.34:5050" --verbose true
USER FRAMEWORK TASK SLAVE MEM TIME CPU (allocated)
root mesos-exe... test yinhongwu 1.1
该命令使用python编写,可以了解python并发和异步编程。源代码分析(src/cli/mesos-ps)如下:
main:
- 151-163:解析命令行选项,
--master
必须设定。 - 166-169:调用resolve解析得到master的leader地址。这里的代码有一个小BUG,得到的master最后有一个多余的换行符,因此,这里应该加一行
master=master[:-1]
去掉该换行符,或者修改resolve的实现。 - 172-175:通过HTTP得到master当前的状态
- 178-183:解析获得的状态,173行已经将HTTP数据转换成为python数据结构,因此此处再解析的程序非常简单易懂。
- 186-199:打印表头
- 201:创建一个线程executor,执行:
- 203:得到所有Active的slaves
- 206-207:向slaves的所有slave的HTTP /monitor/statistics发送GET请求
- 211:对这些HTTP请求中每个完成的请求:
- 212-229:获得并打印信息
mesos-cat
使用方法:
$ mesos-cat --master=$(mesos-resolve zk://mesos.example.com:2181/mesos) --framework=20150712-210436-16842879-5050-2136-0002 --task=HelloMesos --file=stdout
$ mesos-cat --master="192.168.10.34:5050" --framework=b09657e6-7860-4550-b871-da4a70e68f02-0008 --task=test --file=stderr
源代码分析:
- 96-114:解析命令行选项
- 116-120:调用resolve解析得到master的leader地址。这里的代码有一个小BUG,得到的master最后有一个多余的换行符,因此,这里应该加一行
master=master[:-1]
去掉该换行符,或者修改resolve的实现。 - 122-126:通过HTTP得到master当前的状态
- 128-131:构建从Slave ID获得Slave的索引
- 133-135:定义cat函数,将从slave的task读到的文件内容输出
- 137-154:从正在运行/已完成的framework/task寻找命令行指定的framework/task,并输出指定文件的内容
read函数(21-92行)通过HTTP接口读指定文件内容,注意88行yield result['data']
,使用了生成器,以能够及时获得输出,否则要一直等到task结束才能得到输出。