我是apache spark的新手,刚刚了解到spark支持三种类型的集群:独立—意味着spark将管理自己的群集Yarn-使用hadoop的Yarn资源管理器mesos-apache的专用资源管理器项目既然我是新手,我想我应该先试试。但我想知道哪一个是推荐的。比方说,将来我需要构建一个大型集群(数百个示例),我应该选择哪种集群类型?
xxe27gdn1#
我认为最好的答案是那些谁的Spark工作。所以,从学习Spark如果这是一个新部署,请从独立集群开始。独立模式是最容易设置的,如果您只运行spark,它将提供与其他集群管理器几乎相同的功能。如果您希望与其他应用程序一起运行spark,或者使用更丰富的资源调度功能(例如队列),那么yarn和mesos都提供这些特性。其中,yarn可能会预装在许多hadoop发行版中。mesos相对于yarn和独立模式的一个优势是它的细粒度共享选项,它允许诸如sparkshell之类的交互式应用程序缩小它们在命令之间的cpu分配。这使得它在多个用户运行交互式shell的环境中具有吸引力。在所有情况下,最好在与hdfs相同的节点上运行spark,以便快速访问存储。您可以在相同的节点上手动安装mesos或独立集群管理器,或者大多数hadoop发行版已经同时安装了yarn和hdfs。
pengsaosao2#
spark独立管理器:spark附带的一个简单的集群管理器,可以方便地设置集群。默认情况下,每个应用程序使用集群中的所有可用节点。Yarn比单纱和细纱的一些优点:yarn允许您在运行于yarn上的所有框架之间动态地共享和集中配置相同的集群资源池。您可以利用yarn调度器的所有特性对工作负载进行分类、隔离和优先排序。spark独立模式要求每个应用程序在集群中的每个节点上运行一个executor;而对于Yarn,则选择要使用的执行器的数量Yarn直接处理机架和机器的位置在您的要求,这是方便的。奇怪的是,在mesos中,资源请求模型是向后的。在yarn中,您(框架)请求具有给定规范的容器并提供位置首选项。在mesos中,您将获得资源“offers”,并根据自己的调度策略选择接受或拒绝它们。mesos模型可以说是一个更灵活的模型,但是对于实现框架的人来说似乎需要更多的工作。如果您已经有了一个大型hadoop集群,那么yarn是更好的选择。独立管理器要求用户使用共享密钥配置每个节点。mesos的默认身份验证模块cyrussasl可以替换为自定义模块。yarn具有身份验证、服务级别授权、web控制台身份验证和数据机密性的安全性。hadoop身份验证使用kerberos验证每个用户和服务是否通过kerberos身份验证。三个集群管理器都提供了高可用性,但是hadoopyarn不需要运行单独的故障转移控制器。有用的链接:spark文档页agildata文章
w3nuxt5m3#
mesos有更复杂的调度设计,允许像spark这样的应用程序与之协商。它更适合当今应用的多样性。我发现这个网站很有见地:https://www.oreilly.com/ideas/a-tale-of-two-clusters-mesos-and-yarn"... yarn针对hadoop作业的调度进行了优化,hadoop作业在历史上(现在仍然是典型的)具有长运行时间的批处理作业。这意味着yarn不是为长时间运行的服务而设计的,也不是为短期的交互式查询而设计的(比如小型和快速的spark作业),虽然它可以安排其他类型的工作负载,但这不是一个理想的模型。mapreduce的资源需求、执行模型和体系结构需求与长期运行的服务(如web服务器或soa应用程序)或实时工作负载(如spark或storm)有很大不同……”
9jyewag04#
standalone非常清楚,正如其他人提到的,它应该只在只有spark的工作负载时使用。在yarn和mesos之间,需要考虑的一个事实是,与mapreduce不同,spark job抓住执行者,并在一个作业的整个生命周期中保持它。在mapreduce中,作业可以在其生命周期内获取和发布Map器和还原器。如果你有长时间运行的spark作业,而在作业生命周期中,这些作业没有充分利用它在开始时获得的所有资源,那么你可能希望将这些资源共享给其他应用程序,并且你只能通过mesos或spark动态调度来完成。https://spark.apache.org/docs/2.0.2/job-scheduling.html#scheduling-在应用中,所以用Yarn动态分配Spark的唯一方法就是利用Spark提供的动态分配。Yarn不会干扰,而麦索斯会。同样,只有当您有一个长时间运行的spark应用程序并且希望动态地放大和缩小它时,这一点才是重要的。
4条答案
按热度按时间xxe27gdn1#
我认为最好的答案是那些谁的Spark工作。所以,从学习Spark
如果这是一个新部署,请从独立集群开始。独立模式是最容易设置的,如果您只运行spark,它将提供与其他集群管理器几乎相同的功能。
如果您希望与其他应用程序一起运行spark,或者使用更丰富的资源调度功能(例如队列),那么yarn和mesos都提供这些特性。其中,yarn可能会预装在许多hadoop发行版中。
mesos相对于yarn和独立模式的一个优势是它的细粒度共享选项,它允许诸如sparkshell之类的交互式应用程序缩小它们在命令之间的cpu分配。这使得它在多个用户运行交互式shell的环境中具有吸引力。
在所有情况下,最好在与hdfs相同的节点上运行spark,以便快速访问存储。您可以在相同的节点上手动安装mesos或独立集群管理器,或者大多数hadoop发行版已经同时安装了yarn和hdfs。
pengsaosao2#
spark独立管理器:spark附带的一个简单的集群管理器,可以方便地设置集群。默认情况下,每个应用程序使用集群中的所有可用节点。
Yarn比单纱和细纱的一些优点:
yarn允许您在运行于yarn上的所有框架之间动态地共享和集中配置相同的集群资源池。
您可以利用yarn调度器的所有特性对工作负载进行分类、隔离和优先排序。
spark独立模式要求每个应用程序在集群中的每个节点上运行一个executor;而对于Yarn,则选择要使用的执行器的数量
Yarn直接处理机架和机器的位置在您的要求,这是方便的。
奇怪的是,在mesos中,资源请求模型是向后的。在yarn中,您(框架)请求具有给定规范的容器并提供位置首选项。在mesos中,您将获得资源“offers”,并根据自己的调度策略选择接受或拒绝它们。mesos模型可以说是一个更灵活的模型,但是对于实现框架的人来说似乎需要更多的工作。
如果您已经有了一个大型hadoop集群,那么yarn是更好的选择。
独立管理器要求用户使用共享密钥配置每个节点。mesos的默认身份验证模块cyrussasl可以替换为自定义模块。yarn具有身份验证、服务级别授权、web控制台身份验证和数据机密性的安全性。hadoop身份验证使用kerberos验证每个用户和服务是否通过kerberos身份验证。
三个集群管理器都提供了高可用性,但是hadoopyarn不需要运行单独的故障转移控制器。
有用的链接:
spark文档页
agildata文章
w3nuxt5m3#
mesos有更复杂的调度设计,允许像spark这样的应用程序与之协商。它更适合当今应用的多样性。我发现这个网站很有见地:
https://www.oreilly.com/ideas/a-tale-of-two-clusters-mesos-and-yarn
"... yarn针对hadoop作业的调度进行了优化,hadoop作业在历史上(现在仍然是典型的)具有长运行时间的批处理作业。这意味着yarn不是为长时间运行的服务而设计的,也不是为短期的交互式查询而设计的(比如小型和快速的spark作业),虽然它可以安排其他类型的工作负载,但这不是一个理想的模型。mapreduce的资源需求、执行模型和体系结构需求与长期运行的服务(如web服务器或soa应用程序)或实时工作负载(如spark或storm)有很大不同……”
9jyewag04#
standalone非常清楚,正如其他人提到的,它应该只在只有spark的工作负载时使用。
在yarn和mesos之间,需要考虑的一个事实是,与mapreduce不同,spark job抓住执行者,并在一个作业的整个生命周期中保持它。在mapreduce中,作业可以在其生命周期内获取和发布Map器和还原器。
如果你有长时间运行的spark作业,而在作业生命周期中,这些作业没有充分利用它在开始时获得的所有资源,那么你可能希望将这些资源共享给其他应用程序,并且你只能通过mesos或spark动态调度来完成。https://spark.apache.org/docs/2.0.2/job-scheduling.html#scheduling-在应用中,所以用Yarn动态分配Spark的唯一方法就是利用Spark提供的动态分配。Yarn不会干扰,而麦索斯会。同样,只有当您有一个长时间运行的spark应用程序并且希望动态地放大和缩小它时,这一点才是重要的。