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结束才能得到输出。

results matching ""

    No results matching ""