5. Create an instance of allocator.   代码如下   Mesos源码中默认的Allocator,即HierarchicalDRFAllocator的位置在$MESOS_HOME/src/master/allocator/mesos/hierarchical.hpp,而DRF中对每个Framework排序的Sorter位于$MESOS_HOME/src/master/allocator/sorter/drf/sorter.cpp,可以查看其源码了解它的工作原…
3. ModuleManager::load(flags.modules.get())如果有参数--modules或者--modules_dir=dirpath,则会将路径中的so文件load进来   代码中加载模块的代码如下     对应的命令行参数如下:       都可以写什么Module呢?   首先是Allocator   默认是内置的Hierarchical Dominant Resource Fairness allocator   要写一个自己的Allocator: 通过--mo…
Mesos Master的启动参数如下: /usr/sbin/mesos-master --zk=zk://127.0.0.1:2181/mesos --port=5050 --log_dir=/var/log/mesos --hostname=192.168.56.101 --hostname_lookup=false --ip=192.168.56.101 --quorum=1 --registry=replicated_log --work_dir=/var/lib/mesos/maste…
  Mesos Master的初始化在src/master/master.cpp中     在Mesos Master的log中,是能看到这一行的.   1.初始化role,并设置weight权重       2. 初始化Allocator     注意,Allocator的initialize函数中,传入的OfferCallback是Master::offer.   如果前面所述,没过allocation_interval,Allocator都会计算每个framework的offer,然后依次…
2. process::firewall::install(move(rules));如果有参数--firewall_rules则会添加规则   对应的代码如下: // Initialize firewall rules. if (flags.firewall_rules.isSome()) {   vector<Owned<FirewallRule>> rules;     const Firewall firewall = flags.firewall_rules.get();…
我们以Test Framework为例子解释Framework的启动方式. Test Framework的代码在src/examples/test_framework.cpp中的main函数 首先要指定executor的uri   配置ExecutorInfo   配置FrameworkInfo   创建TestScheduler和MesosSchedulerDriver     运行MesosSchedulerDriver   MesosSchedulerDriver是写Framework的S…
Mesos源码分析(1): Mesos的启动过程总论 Mesos源码分析(2): Mesos Master的启动之一 Mesos源码分析(3): Mesos Master的启动之二 Mesos源码分析(4) Mesos Master的启动之三 Mesos源码分析(5): Mesos Master的启动之四 Mesos源码分析(6): Mesos Master的初始化 Mesos源码分析(7): Mesos-Slave的启动 Mesos源码分析(8): Mesos-Slave的初始化 Mesos源…
根据Mesos源码分析(6): Mesos Master的初始化中的代码分析,当Mesos-Master接收到launchTask消息的时候,会调用Master::launchTasks函数.   void Master::launchTasks(     const UPID& from,     const FrameworkID& frameworkId,     const vector<TaskInfo>& tasks,     const Filters&a…
  MesosSchedulerDriver的代码在src/sched/sched.cpp里面实现.     Driver->run()调用start()     首先检测Mesos-Master的leader       创建一个线程.   SchedulerProcess的initialize()函数   里面主要注册消息处理函数.   virtual void initialize()  {    install<Event>(&SchedulerProcess::rece…