我是Apache Spark的新手,我刚刚了解到Spark支持三种类型的集群:
由于我是Spark的新手,我想我应该先尝试 Standalone 。但我想知道哪一个是推荐的。比如,将来我需要构建一个大型集群(数百个实例),我应该去哪个集群类型?
答案 0 :(得分:64)
我认为最好回答那些使用Spark的人。所以,从Learning Spark
如果这是新部署,请从独立群集开始。 独立模式是最容易设置的,几乎可以提供所有模式 与您相同的功能与其他集群管理器相同 运行Spark。
如果您想将Spark与其他应用程序一起运行,或者要使用 更丰富的资源调度功能(例如队列),YARN和 Mesos提供这些功能。其中,YARN可能会 预先安装在许多Hadoop发行版中。
Mesos在YARN和独立模式下的一个优势是它的优势 细粒度共享选项,它允许交互式应用程序 因为Spark shell缩小了命令之间的CPU分配。 这使得它在多个用户所处的环境中具有吸引力 运行交互式shell。
在所有情况下,最好在与HDFS相同的节点上运行Spark 快速访问存储。您可以安装Mesos或独立版 手动在同一节点上的集群管理器,或大多数Hadoop 发行版已经将YARN和HDFS安装在一起。
答案 1 :(得分:60)
Spark独立管理器:Spark附带的简单集群管理器,可以轻松设置集群。默认情况下,每个应用程序都使用群集中的所有可用节点。
一些benefits的YARN超过Standalone& Mesos: 强>
YARN 允许您在 YARN 上运行的所有框架之间动态共享和集中配置相同的群集资源池。
您可以利用 YARN 计划程序的所有功能来分类,隔离和确定工作负载的优先级。
Spark独立模式要求每个应用程序在群集中的每个节点上运行执行程序;而使用YARN,您可以选择要使用的执行程序数
YARN 直接处理您请求中的机架和机器位置,这很方便。
奇怪地,资源请求模型在 Mesos 中向后。在 YARN 中,您(框架)请求具有给定规范的容器并提供位置首选项。在Mesos中,您可以获得资源"优惠"并根据您自己的日程安排政策选择接受或拒绝。 Mesos模型可以说更灵活,但对于实现框架的人来说似乎更多的工作。
如果您已经拥有一个大型Hadoop集群, YARN 是更好的选择。
独立管理器要求用户使用共享密钥配置每个节点。 Mesos '默认身份验证模块Cyrus SASL可以替换为自定义模块。 YARN 具有身份验证,服务级别授权,Web控制台身份验证和数据机密性的安全性。 Hadoop身份验证使用Kerberos验证Kerberos是否对每个用户和服务进行了身份验证。
有用的链接:
spark文档页面
agildata文章
答案 2 :(得分:6)
Standalone非常清楚,因为其他人提到它应该只在你有火花的工作量时使用。
在纱线和介子之间,有一点需要考虑的事实是,与mapreduce不同,spark job会抓取执行程序并在整个生命周期内保留它。 mapreduce中的工作可以在一生中获得并释放映射器和缩减器。
如果您有长时间运行的火花作业,这些作业在作业生命周期内没有充分利用它开始时获得的所有资源,您可能希望将这些资源分享给其他应用程序,并且您只能通过Mesos或Spark动态调度。 https://spark.apache.org/docs/2.0.2/job-scheduling.html#scheduling-across-applications 所以对于纱线,只有通过使用火花提供动态分配才能动态分配火花。当Mesos会这样时,纱线不会干涉。如果你有一个长时间运行的火花应用程序并且你想动态地上下调整它,那么这一点再次重要。
答案 3 :(得分:-1)
Mesos具有更复杂的调度设计,允许Spark之类的应用程序与其协商。它更适合当今的各种应用。我发现这个网站真的很有见地:
https://www.oreilly.com/ideas/a-tale-of-two-clusters-mesos-and-yarn
“ ...... YARN经过优化,可用于调度Hadoop作业,这些作业在历史上(通常仍是)具有较长运行时间的批处理作业。这意味着YARN并非为长期运行的服务或短期交互查询而设计。 (例如小型和快速的Spark作业),尽管可以调度其他类型的工作负载,但这并不是理想的模型,MapReduce的资源需求,执行模型和架构需求与长期运行的需求有很大不同服务,例如Web服务器或SOA应用程序,或诸如Spark或Storm的实时工作负载...”