主要区别在哪里?
答案 0 :(得分:7)
Kubernetes几乎是从一个干净的平台开发出来的,用于将Docker容器内核扩展为平台。 Kubernetes开发已经采取了自下而上的方法。它在指定每个容器/容器的资源要求方面有很好的优化,但是它缺乏有效的全局调度程序,无法将资源划分为逻辑分组。 Kubernetes设计允许多个调度程序在集群中运行。每个调度程序都在其自己的Pod中管理资源。但是,当应用程序需要的资源比物理系统可以处理的资源更多时,Kubernetes群集可能会遭受不稳定的困扰。它在超出应用程序需求的基础架构容量方面表现最佳。 Kubernetes调度程序将尝试使用传入的应用程序请求填充空闲节点 终止低优先级和饥饿容器,以提高资源利用率。 Kubernetes容器可以与S3等外部存储系统集成,以提供数据弹性。 Kubernetes框架使用etcd存储集群数据。 Etcd集群节点和Hadoop Namenode都是Kubernetes或Hadoop平台中的单点故障。 Etcd可以比Namenode具有更多的副本,因此,从可靠性的角度看,从理论上讲,它似乎更倾向于Kubernetes。但是,除非使用细粒度角色绑定定义RBAC,否则Kubernetes的安全性默认为开放状态。为Pod正确设置了安全上下文。如果省略,则pod的主要组将默认为root,这对于试图保护基础结构的系统管理员可能会造成问题。
Apache Hadoop YARN开发为运行隔离的Java进程来处理大数据工作负载,然后进行了改进以支持Docker容器。 YARN提供全局级别的资源管理(如容量队列),用于将物理资源划分为逻辑单元。可以为每个业务部门分配集群资源的百分比。设计容量资源共享系统以支持保证人资源 企业优先级的可用性,而不是压缩所有可用的物理资源。 YARN在安全性上得分更高。还有更多 Kerberos中的安全性特征,特权/非特权容器的访问控制,受信任的Docker映像以及放置策略约束。大多数码头工人 相关的安全性默认为关闭,并且系统管理员需要手动打开标志以向容器授予更多权限。大型企业倾向于更多地运行Hadoop 与Kubernetes相比,因为保护系统的成本更低。在YARN之上构建了更多的分布式SQL引擎,包括Hive,Impala,SparkSQL和IBM BigSQL。 数据库选项使YARN成为吸引人的选项,因为能够在容器中运行在线事务处理,以及使用批处理工作负载进行在线分析处理。 Hadoop Developer工具链可能不堪重负。 Mapreduce,Hive,Pig,Spark等都有各自的发展风格。用户体验不一致,需要花费一些时间来学习它们。相比之下,Kubernetes的阻塞感较小,因为它仅部署Docker容器。随着YARN服务的引入而运行 在Docker容器工作负载方面,YARN的感觉比Kubernetes少。
如果您的计划是将IT运营外包给公共云,请选择Kubernetes。如果您打算构建私有/混合/多云,请选择Apache YARN。
答案 1 :(得分:4)
虽然this question and answer并不是您所要的完全,但它确实触及了许多相同的点。
最后我看到,Yarn只是一种资源共享机制,而Kubernetes是一个完整的平台,包括ConfigMaps,声明性环境管理,秘密管理,Volume Mounts,这是一种设计精良的API,可与之交互所有这些,基于角色的访问控制和Kubernetes都得到了广泛使用,这意味着人们可以很容易地找到要聘用的候选人和要购买的工具。
我发现blog post引用了master's thesis,它描述了不同调度程序对世界的看法之间的一些有趣的折衷。这个词很多,因此,如果您要寻找一个tl; dr的答案,则可能不是该链接,但是,如果您正在寻找有关该主题的实际研究,则听起来不错。