mesos marathon mysql_黑一下 Mesos/Marathon

Mesos 的代码用 C++ 写的,大量使用模板,用了 stout 库,玩 monadic 的 Option 模板类啥的,感觉挺装逼的,没看出给代码正确性、可维护性带来多大好处,而且编译慢的要死,完整编译一遍要一两个小时。代码的OO 的封装并不完善,比如 systemd 的 runtime path, cgroup hierarchy path 路径拼接这种事居然没隐藏起来,让调用方自己拼接。

对 Docker 的支持是后加的,原先自己实现了资源隔离,现在还保留着这些功能,这块成了鸡肋了,代码还累赘。

Mesos master/slave 要连接到同一个 Zookeeper 集群,上万节点的集群里 ZooKeeper 压力太大,ZooKeeper 对整个集群稳定性重要性太高,也就是说 Mesos slave 不够自治。有意思的是 Mesos master 自己做了个 replicated log,貌似基于 PAXOS 一致性协议,用来记录 slave、tasks 什么的状态,这大概也是考虑到对 ZooKeeper 压力不能太大。 YARN 的架构里 ApplicationMaster 做了一个中间层,让每个 app 自治多点,不用依赖 MR1 里的单点 job tracker,Marathon 有这个意思,但是一个 Marathon master 会管理大量 app,只能用运行多个 Marathon 集群的办法增强 app 自治,个人觉得差强人意。 从这点看,YARN 的伸缩性和健壮性更好。

SASL 认证是后加的,没仔细考古,感觉认证、授权都是很晚才考虑的,内置的 crammd5 的 authentication, authorization 的配置是命令行传入,修改要重启 Mesos master,文档里没仔细说 SASL,看起来 authentication 不需要重启 Mesos master 了,但 authorization 还是用 --acls 命令行传入,没发现有 RPC 接口动态改的,这你妹的管理性也太差劲了! 相比之下,看看 Hortonworks Data Platform 2.3 对认证和授权的完善程度,天壤之别啊!

resource 比如 cpu、mem 的动态预留在 0.23 版才加入,也就是说 0.23 之前,类似 YARN queue 的概念是静态配置的。在 Queue 的管理上,我原以为 Marathon 会加强,结果发现它压根没管 queue。Mesos 按framework role 来映射到资源分配,不支持树状的资源池。一个 marathon master 只用于管理一个资源池,这个资源池里所有 app 共用,没有配额限制,也不区分多个 job submitters,所以 Mesos 的搞法是只允许管理员提交 job 么? 还是说每个用户、每个 app 都搭独立的 Mesos master? 这还搞个屁的 data center OS,大家直接瓜分物理机得了。

不止 authentication/authorization/resource 的静态配置,mesos slave 的 attributes 配置也是静态的,用 --attributes 命令行选项给 mesos slave 指定,所以给 slave 加个标签、改个标签都要重启 mesos slave。

Mesos/Marathon 没考虑跨机房集群联合,这个也罢,微黑。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值