我应该为Sparkselect哪种types的集群?
我是Apache Spark的新手,刚刚了解到Spark支持三种types的集群:
- 独立 – 意味着Spark将pipe理自己的群集
- YARN – 使用Hadoop的YARN资源pipe理器
- Mesos – Apache的专用资源pipe理器项目
由于我是Spark新手,所以我觉得我应该先尝试一下Standalone 。 但我想知道哪一个是推荐的。 说,将来我需要build立一个大的集群(数百个实例),我应该去哪个集群types?
我认为最好的回答是那些在Spark工作的人。 所以,从学习Spark
如果这是一个新的部署,则从独立群集开始。 独立模式是最容易设置的,如果您只运行Spark,将提供与其他群集pipe理器几乎所有相同的function。
如果您希望与其他应用程序一起运行Spark,或者使用更丰富的资源调度function(例如队列),则YARN和Mesos都会提供这些function。 其中,YARN很可能预装在许多Hadoop发行版中。
Mesos在YARN和独立模式中的一个优势是其细粒度的共享选项,可以让交互式应用程序(如Spark shell)缩减其在命令之间的CPU分配。 这使得它在多个用户运行交互式shell的环境中很有吸引力。
在所有情况下,最好在与HDFS相同的节点上运行Spark,以便快速访问存储。 您可以手动在同一节点上安装Mesos或独立群集pipe理器,或者大多数Hadoop发行版本已经将YARN和HDFS一起安装。
Spark独立pipe理器 :Spark附带的简单集群pipe理器,可以轻松设置集群。 默认情况下,每个应用程序使用集群中的所有可用节点。
YARN在独立和Mesos 方面的一些优势 :
-
YARN允许您在YARN上运行的所有框架之间dynamic共享和集中configuration相同的群集资源池。
-
您可以利用YARN调度程序的所有function对工作负载进行分类,隔离和优先级sorting。
-
Spark独立模式要求每个应用程序在集群中的每个节点上运行一个执行程序; 而使用YARN,则select要使用的执行程序的数量
-
YARN直接在您的要求中处理机架和机器的位置,这很方便。
-
奇怪的是,资源请求模型在Mesos中是向后的。 在YARN中 ,您(框架)请求具有给定规范的容器并给出局部性首选项。 在Mesos中,您可以获取资源“offer”,并根据您自己的调度策略select接受或拒绝这些资源。 Mesos模型可以说是比较灵活的,但对于实现框架的人来说似乎更多的工作。
-
如果你已经有了一个大的Hadoop集群, YARN是更好的select。
-
独立pipe理器要求用户为每个节点configuration共享密钥。 Mesos的默认authentication模块Cyrus SASL可以用自定义模块replace。 YARN具有身份validation,服务级别授权,Web控制台身份validation和数据机密性的安全性。 Hadoop身份validation使用Kerberos来validation每个用户和服务是否由Kerberos进行身份validation。
- 所有三个集群pipe理器都提供高可用性,但Hadoop YARN不需要运行单独的ZooKeeper故障切换控制器。
有用的链接:
火花文档页面
agildata文章
独立性非常明显,因为其他人提到它应该只有当你只有工作量的火花。
在纱线和细纱之间,需要考虑的一件事情是,与地图缩小不同的是,火花工作抓住了执行者,并将其保留在整个工作的一生中。 在mapreduce中,一个作业可以在整个生命周期中获取并发布mappers和reducers。
如果你长时间运行spark作业,在作业的整个生命周期中没有充分利用所有的资源,你可能希望将这些资源分享给其他应用程序,并且只能通过Mesos或Sparkdynamic调度。 https://spark.apache.org/docs/2.0.2/job-scheduling.html#scheduling-across-applications所以用纱线,唯一的办法就是dynamic分配火花是通过使用spark提供的dynamic分配。; 纱线不会干涉,而Mesos会。 如果你有一个长时间运行的Spark应用程序,并且你想dynamic地进行扩展和缩放,那么这个重点就非常重要。