Apache Hadoop Yarn与Kubernetes比较选择 - codehunter


Kubernetes用于将 Docker 容器内核扩展为一个平台。Kubernetes 开发采用自下而上的方法。它在指定每个容器/pod 资源需求方面有很好的优化,但它缺乏一个有效的全局调度程序,可以将资源划分为逻辑分组。Kubernetes 设计允许多个调度程序在集群中运行。每个调度程序都在自己的 pod 中管理资源。
但是,当应用程序需要的资源超出物理系统的处理能力时,Kubernetes 集群可能会受到不稳定的影响。
Kubernetes 安全性默认是开放的,除非 RBAC 定义了细粒度的角色绑定。为 pod 正确设置了安全上下文。如果省略,pod 的主要组将默认为 root,这对于试图保护基础架构的系统管理员来说可能是个问题。
Apache Hadoop YARN 被开发用于运行隔离的 Java 进程来处理大数据工作负载,然后改进以支持 Docker 容器。
YARN 提供全局级别的资源管理,例如将物理资源划分为逻辑单元的容量队列。可以为每个业务单位分配一定百分比的集群资源。容量资源共享系统旨在保证企业优先级的资源可用性,而不是挤压所有可用的物理资源。YARN 确实在安全性方面得分更高。Kerberos 中有更多的安全特性、特权/非特权容器的访问控制、受信任的 docker 映像和放置策略约束。
大多数 docker 相关的安全性默认关闭,系统管理员需要手动打开标志以授予容器更多的权力。
与 Kubernetes 相比,大型企业更倾向于运行 Hadoop,因为保护系统成本更低。
还有更多基于 YARN 构建的分布式 SQL 引擎,包括 Hive、Impala、SparkSQL 和 IBM BigSQL。
数据库选项使 YARN 成为一个有吸引力的选项,因为它能够在容器中运行在线事务处理,以及使用批处理工作负载进行在线分析处理。
adoop Developer 工具链可能会让人不知所措。Mapreduce、Hive、Pig、Spark等,各有各的开发风格。用户体验不一致,需要一段时间才能全部了解。相比之下,Kubernetes 感觉不那么碍事,因为它只部署 docker 容器。通过引入 YARN 服务来运行 Docker 容器工作负载,YARN 可以感觉不如 Kubernetes 啰嗦。
 
如果您的计划是将 IT 运营外包给公共云,请选择 Kubernetes。如果您的计划是构建私有/混合/多云,请选择 Apache YARN。
 

人们选择在 kubernetes 上运行 Spark 的最大原因:
Yarn 只是一种资源共享机制,而 Kubernetes 是一个完整的平台,包括 ConfigMaps、声明性环境管理、秘密管理、卷挂载、一个设计得非常好的 API 用于与所有这些东西交互、基于角色的访问控制、并且 Kubernetes 得到广泛使用,这意味着人们可以很容易地找到要雇用的候选人和要购买的工具。