译 | 像使用一台主机一样管理集群
2019独角兽企业重金招聘Python工程师标准>>>
【编者的话】不论是 YARN、Mesos 还是 Omega,都是某种意义上为集群设计的操作系统,让用户像使用一台单机一样来使用整个集群。向下集中管理所有物理资源,向上承载各种集群化的应用; 同时, docker 的出现也为云操作系统提供了更有力的支撑。
1984年,SUN 的 John Gage 说出了那句家喻户晓的名言 “网络就是计算机”
三十年后,Gage 的梦想“几乎”成为的现实。特别是随着 web 2.0 和云计算时代的到来,人们可以使用任何设备从任何地方通过互联网访问任何云端的资源。
不过即使在“云端”,实际上还是一堆物理服务器。每一台服务器的 CPU 和内存资源都是有限的,但是组合成集群就像云一样无穷无尽。套用 Gage 的名言,可以说**“集群就是计算机”**。
当单机的 **CPU 性能和硬盘容量**逐渐碰到了天花板,通过 Hadoop 这样的集群化技术来突破单机性能瓶颈就越来越流行。当然在 Hadoop 出现之前,集群方案早就应用于高性能的生产系统,例如 Weblogic 或者集群化的 WEB 服务器(复杂均衡按照 round-robin 算法将流量发送到集群中的 Web 服务器上)。这些集群方案都针对特定场景设计,无法像通用的计算机一样用来运行各种不同的软件。
Hadoop 是第一个具有通用的集群化计算平台特征的技术,而且目前已经发展地相当成熟。随着新的集群化计算技术层出不穷,例如 Spark、Storm 和 Cassandra,运维人员希望能够隔离它们以便更好的管理,同时,从节约成本的角度讲, 大家又希望公司内部各个团队能够共用这些昂贵的计算资源。
目前解决这个问题的两大法宝是 Hadoop YARN 和 Apache Mesos。Mesos 的设计受到了 Google 的 Omega 平台启发,而后者则来自 Google 内部久经实验的Borg任务管理平台。同样的事情当初也发声在 Hadoop 之上,它就是受到了 Google 的 GFS 和 Big-Table 启发。不论是 YARN、Mesos 还是 Omega,都是某种意义上为集群设计的操作系统,让用户像使用一台单机一样来使用整个集群。向下集中管理所有物理资源,向上承载各种集群化的应用。
因为 YARN 本身与 Hadoop/Map Reduce v2 绑定,对于使用早期 Hadoop 版本的开发者,升级到 YARN 也许是一个比较容易的决定。理论上可以将 YARN 跑在 Mesos 上,不过有些人担心随之而来的两层资源分配问题。
Mesos 可以支持大量的框架(插件),逐步在构建一个快速增长的生态环境。例如 Twitter的 Aurora 就是用来在 Mesos 管理的集群上进行任务调度,已经成为了 Apache 的孵化器项目。此外 Ringmaster 则用来在 Mesos 上快速运行 Cassandra 和 Spark。
Chronos 相当于 Mesos 之上的 crontable,Marathon 则相当于 init.d,让大家用熟悉的方式来调度任务。
最激动人心的还是 Docker 与 mesos 的整合,几乎让 Mesos 可以运行任何语言编写的软件。
Docker 的崛起本身和集群技术倒没有直接关系,它首先被用来代替传统的 VM(虚拟机)。容器分享了底层操作系统,远比传统 VM 更加轻量。类似技术在2000年就出现了,那就是“jail”命令。Wiki 有关词条描述了 35 年来 chroot 如何发展到 jails,最后的 Docker 和容器成为了集大成者。
Docker 化的应用像一个 tar 压缩包,在一台普通的物理机上,你可以轻松地运行数十个独立的 Docker。对于一个由 Mesos 管理的集群,而且恰好你的应用某种程度上使用了分布式的架构,那么瞬间你的集群变成了一台强大的大型机。其实 tar 本身意思是 “tape archive”,就是过去大型机磁带系统的文件格式。
使用 Docker 容器来完全取代传统的 jar 或者 ear 文件,一夜间用 Mesos 来完全取代 weblogic,还是有点操之过急——目前传统软件的架构依然是 web、计算逻辑和存储分开部署。不过对于互联网公司的后台,用 Mesos 来承载 web 服务器集群应付高并发业务,完全不是什么新鲜事儿了。
点击**查看英文源文** 源文作者:michaelmalak
转载于:https://my.oschina.net/shurenyun/blog/597279
译 | 像使用一台主机一样管理集群相关推荐
- 单台主机 kafka + zookeeper 集群搭建
文章转自: https://www.jianshu.com/p/dc4770fc34b6 在单台主机上搭建kafka + zookeeper 集群. zookeeper 集群搭建 kafka是通过zo ...
- rhel6多台主机的HA集群,并实现增加仲裁盘和共享存储
所有的服务最好设置开机启动 [root@node1-f15 ~]# chkconfig modclusterd on [root@node1-f15 ~]# chkconfig ricci on [r ...
- rhel6下组建两台主机的HA集群
[kiosk@foundation15 Desktop]$ ssh root@172.25.15.10#配置初始化环境 Last login: Thu Jul 2 16:02:25 2015 fro ...
- NoSQL(二):创建、管理集群
创建集群 集群环境 拓扑结构 IP规划 工作原理 工作原理 无论有多少台redis服务器,一共都会有0-16383共16384个槽 slot的作用:用来确定存储变量时,变量存储在哪一台redis服务器 ...
- RHEL下安装配置基于2台服务器的MYSQL集群
一.介绍 ======== 这篇文档旨在介绍如何在RHEL下安装配置基于2台服务器的MySQL集群.并且实现任意一台服务器出现问题或宕机时MySQL依然能够继续运行. 注意! 虽然这是基于2台服务器的 ...
- 2台mysql集群_如何安装配置基于2台服务器的MySQL集群
这篇文章旨在介绍如何安装配置基于2台服务器的MySQL集群.并且实现任意一台服务器出现问题或宕机时MySQL依然能够继续运行. 注意!虽然这是基于2台服务器的MySQL集群,但也必须有额外的第三台服务 ...
- K8s-kubectl远程管理集群
在实际工作中,我们有一个需求,需要远程登陆管理集群.其实不用非要登录k8s-master去敲命令,可以使用任意一台内网互通的机器安装kubectl命令,去远程管理集群,非常方便 1.安装kubectl ...
- 64: 创建集群 、 管理集群 、 总结和答疑
Top NSD NOSQL DAY02 案例1:部署redis集群 案例2:添加服务器 案例3:移除服务器 1 案例1:部署redis集群 1.1 问题 具体要求如下: 部署管理主机 创建集群 查看集 ...
- VPS、云主机 and 服务器集群、云计算 的区别
VPS:(virtual private server)虚拟专用服务器,将一台服务器分割成多个虚拟专享服务器的优质服务.实现VPS的技术分为容器技术和虚拟化技术.在容器或虚拟机中,每个VPS都可分配独 ...
最新文章
- PagingAndSortingRepository接口与 JpaRepository接口
- Struts2三种传参方式(从jsp页面传到Action)
- 希尔排序及C语言实现
- 打开和关闭mysql服务的两种方法
- 【控制】《多智能体机器人系统信息融合与协调》范波老师-第4章-基于证据推理的多 Agent 分布式决策
- fsb,fev文件格式转换,提取与打包
- C++找到一个大于或等于n且为2的幂的数字p的算法实现(附完整源码)
- 【TensorFlow-windows】学习笔记六——变分自编码器
- java servlet_Java Servlet的前100个问题
- 敏捷管理之绩效考核方案
- KubeFlow安装指南
- 15产品经理要懂的-社会基本规律
- Nginx 反向代理配置
- Bailian4151 电影节【贪心】
- 学习webbench需要掌握的基础知识(webbench源代码学习心得)
- 1011 A+B和C
- linux远程控制木马,Kali Linux-使用Shellter生成远控木马并进行持久化控制
- html表格的冻结列
- 解决Mysql计算时除数为0
- 生鲜配送ERP系统_对商品模块数据模型与界面设计的思考【Java 开源版】杭州生鲜配送系统_升鲜宝_SaaS全链路生鲜供应链管理系统_升鲜宝
热门文章
- java解三角函数方程_Java 中的三角函数
- Spring Boot返回的数据格式是XML 而不是JSON之原因探求的和解决
- [ExtJS 6] SenchaCmd编译出错与解决
- c语言 调用父类方法,关于C++:如何从派生类函数调用父类函数?
- linux查看消息队列的状态,linux – 如何知道某个时间点在消息队列中收到的消息数...
- c语言缩写一个人的名字,用C语言输入一个人的英文名字统计个数输出
- v9更新系统后为何显示服务器连接,V9服务器
- java双机和集群的区别,java 分布式与集群的区别和联系
- Broken Keyboard (a.k.a. Beiju Text) UVA - 11988 (链表)
- vim提示-bash:vim :common not found解决方法