Mesos intro

21
Apache Mesos 解读 庄晓丹 2015-08-14

Transcript of Mesos intro

Page 1: Mesos intro

Apache Mesos 解读庄晓丹 2015-08-14

Page 2: Mesos intro

解决什么问题?• 普通 PC 组成的集群服务已经成为主要的运算平台

• 我们使⽤用 Hadoop,Dryad,Spark,MPI 等等不同框架来进⾏行分布式计算或者存储。

• 每个框架要求的资源不同

• 每个框架的调度不同

• ⾯面临的问题

• 提⾼高集群机器利⽤用率

• 数据共享

• 可扩展,可伸缩:节点,不同版本的框架

Page 3: Mesos intro

解决什么问题?

• 当前的解决办法⽆无法令⼈人满意

• 集群静态分区,不同分区跑不同的框架

• 启⽤用⼀一组 VMs 给每个框架

Page 4: Mesos intro
Page 5: Mesos intro

Mesos• Mesos = Data center kernel

• Scalability to 10,000s of nodes

• Fault-tolerant replicated master and slaves using ZooKeeper

• Support for Docker containers

• Native isolation between tasks with Linux Containers

• Multi-resource scheduling (memory, CPU, disk, and ports)

• Java, Python and C++ APIs for developing new parallel applications

• Web UI for viewing cluster state

Page 6: Mesos intro

Architecture

Page 7: Mesos intro

Resource offer

Page 8: Mesos intro

资源分配• 去中⼼心化调度,调度交给框架,保持 mesos 轻量简单,并使得框架调度性能最⼤大化。

• Resource Offer 资源分配策略,默认提供公平和严格优先两种策略。

• 资源调度⾯面临的问题:⼤大部分 task 很快,但是少部分⻓长期运⾏行的 task 可能占据了集群的⼤大部分资源:

• revoke task,关停任务

• 给每个框架保证最低限额

Page 9: Mesos intro

隔离

• 使⽤用 OS 容器技术,⽐比如 Linux Container,Solaris Projects 等。

Page 10: Mesos intro

可扩展和健壮• Resource offer 可以被 Reject

• 避免频繁 Reject,提供 Filter

• Only offer nodes from List L

• Only offer nodes with at least R resource free

• Resource Offer 接受控制,超时和限量

Page 11: Mesos intro

容灾• Master 轻状态:

• 活跃的 Slaves

• 活跃的框架

• 运⾏行的 Task

• 可以很快地从 slave 和 schedulers 重建这些信息

• 利⽤用 Zookeeper 选举 master

• 框架调度器容灾:框架允许注册多个调度器,⼀一个失败,另⼀一个将被唤醒,这样就可以直接利⽤用框架的容灾策略。

Page 12: Mesos intro

APIs

Page 13: Mesos intro

⿎鼓励框架

• 短任务:资源分配容易,减少重复调度

• 灵活伸缩

• Do not accept unknown resorces

Page 14: Mesos intro

实现: Apache mesos• http://mesos.apache.org/

• 10000 ⾏行 C++ 代码,运⾏行在 Linux,OSX,Solaris 平台上,⽀支持 Java,C++,Python 语⾔言框架

• Hadoop 适配: 1500 ⾏行代码

• MPI 适配: 360 ⾏行代码

• Spark 适配: 1300 ⾏行代码

Page 15: Mesos intro

Benchmark

In both cases, the overhead of using Mesos was less than 4%.

Page 16: Mesos intro

Benchmark

Page 17: Mesos intro

其他数据• 扩展到 50000 个 slave,受限于 EC2 的⺴⽹网络。

• 200 ~ 4000 个 Slave,Master 恢复平均耗时: 4 ~8 秒

• 隔离:30% VS. 550% 的延迟对⽐比

• Media Wiki web server

• 256 个进程的 spin 循环

Page 18: Mesos intro

Marathon• Mesos framework

• Deploy and manage containers (including Docker) on top of Apache Mesos at scale.

Page 19: Mesos intro

API 为例• 打包 API Jars

• 构建 docker image

• 推送到 docker 仓库

• 调⽤用 marathon API 部署

• Marathon 请求 mesos 分配资源,接受后请求 mesos slave 执⾏行任务

• Mesos slave executor 从 docker 仓库拉取指定 image,并启动容器运⾏行,并检测是否正常

• slave 告知 marathon 调度器节点启动,调度器更新 upstream 元信息

• Nginx 每隔 5 秒检测 upstream 元信息,如果有变化就 reload

Page 20: Mesos intro

Marathon API

https://github.com/leancloud/uluru-platform/blob/master/deploy/marathon/uluru-api-prod-ucloud.json

Page 21: Mesos intro

更多

• http://mesos.apache.org/

• http://mesos.berkeley.edu/mesos_tech_report.pdf

• https://mesosphere.github.io/marathon