云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

全站加速_阿里云rds_哪家好

小七 141 0

在Databricks中运行带有Spot实例的apachespark集群

使用amazonec2spot实例启动apachespark集群可以显著降低在云中运行大数据应用程序的成本。但是如何管理节点终止的风险,并在成本节约的基础上平衡呢?在这篇博文中,我将介绍什么是Spot实例,以及它们如何显著降低时间灵活且能够容忍中断的作业的计算成本。然后,我将解释如何将Spot和On-Demand实例组合在同一个集群中,以获得两者的最佳效果。使用Databricks,您可以运行Spark Master节点和一些专用的worker-On-Demand,并辅以更多worker-On-Spot实例。随需应变的工人保证你的工作最终会完成(确保可预测性),而Spot实例加快了作业完成时间。什么是EC2 Spot实例?Spot实例背后的想法是允许您在amazonec2的空闲计算容量上出价。您可以选择每个EC2实例小时愿意支付的最高价格。如果您的出价达到或超过现货市场价格,您将赢得现货实例。但是,与传统竞价不同,当您的现货实例开始运行时,您将支付实时现货市场价格(而不是您的出价金额)。现货价格根据可用EC2计算能力的供求关系而波动,并因地区和可用区域而异。因此,虽然你可能出价0.55美分每小时的r3.2xlarge实例,你最终只需支付0.10美分一小时,如果这是目前的价格为地区和可用区。您的现货实例价格的第一个小时是基于当前的市场价格启动时。AWS每小时重新评估市场价格。如果现货市场价格在任何时候都高于你的买入价,你的EC2实例可能会自动终止,并且你不会被收取最后一个小时的费用。但是,如果您手动终止您的Spot实例,将为您支付最后一小时的全部费用。这与传统的随需应变实例不同,亚马逊保证实例的可用性(99.95%的SLA),但规定了每小时向您收取的价格。按需定价是静态的,很少变化。节省的成本有多大?在撰写本文时(2016年10月),在美国东部地区,一个随需应变的r3.2x大型实例(8个vCPU和61 GB RAM)的成本为每小时0.665美元。然而,目前的现货价格仅为0.10美元…成本节省超过80%!使用Spot实例启动Spark集群有几种方法可以在Spark集群中使用Spot实例:在单个集群中混合使用按需和现场实例(混合模式):只有Master节点(带有Spark驱动程序)是按需的,所有worker都运行在Spot实例上主节点和一些专用的worker是随需应变的,而其他worker是现场实例在这两种混合模型中,终止的Spot实例可以选择性地被随需应变实例替换100%基于Spot实例的群集:如果价格飙升,终止集群如果价格飙升,请尝试重新启动具有随需应变实例的节点,以使群集完全恢复,但运行成本更高(此选项仅在基于现货的驱动程序未因价格飙升而终止时发生)Databricks支持上述所有变体。我将首先讨论混合动力车型的优缺点和使用案例,这是我们对大多数客户的推荐。然后我将讨论启动100%Spot实例集群。最后,我将向您展示如何在Databricks中设置实际出价,并研究不同实例类型的历史和实时现货市场价格。在同一个集群中混合按需和现场实例(默认和推荐的方法)如果你想从这两个方面都得到最好的结果…一个结合了随需应变和现场实例的Spark集群呢?这将允许您按需启动Spark驱动程序,以确保您的Spark群集的稳定性。Worker节点可以是随需应变和Spot的混合。随需应变实例保证Spark作业将一直运行到完成,而Spot实例允许您以合理的价格加速批处理工作负载。在Databricks中,使用随需应变和Spot EC2实例创建Spark集群非常简单。在Create Cluster页面上,只需从下拉列表中选择默认的"On Demand and Spot"类型,然后选择所需的按需与Spot实例数:上面的屏幕截图显示了最少5个按需工作线程实例和15个可变数量的Spot实例。在"On Demand and Spot"类型的集群中,驱动程序总是在按需实例上运行(参见上面的绿线)。为"按需"和"点"选择的数字仅影响辅助节点。默认情况下,"按需退回"选项将处于启用状态:启用后,如果现货市场价格高于创建集群时的出价,此设置将使用随需应变实例启动Spark集群。此外,当您的现货实例正在运行时,如果现货价格高于您的出价,"退回到按需"功能将重新启动您终止的现货实例作为随需应变实例。一旦一个节点恢复到随需应变状态,它在集群的整个生命周期内都将保持按需状态。如果您希望Databricks始终将集群保持在所需的大小,即使这意味着启动随需应变节点,建议使用"按需下降"。这为您的工作负载带来了可预测性,因为您可以预先计算在特定大小的集群上运行作业所需的时间。如果您计划进行探索性数据分析,并且对集群中的Spot节点在降级状态下终止和运行没有问题,那么取消选中"fallbacktoondemand"选项。如果您关闭"按需退回"选项,您将永远不会为每个EC2 Spot实例支付高于您的出价的价格(请参阅下面的如何设置出价)。启动集群后,您可以在活动群集仪表板中查看按需节点数与现货数:例如,要运行一个只有主/驱动节点的混合集群,需要20个工作点实例,请使用以下设置:请注意,在上面的屏幕截图中,启用了"Fall back to On Demand",因此,如果20个Spot实例中的任何一个终止,它们将自动被随需应变实例所取代,这样集群将始终以20个节点运行为目标。如果您可以在只有20个Spot实例的一小部分的降级状态下运行,请取消选中"fallbacktoondemand"。100%基于Spot实例的群集不建议在生产工作负载中使用100%基于Spot实例的Spark集群,因为不可预测的现货价格可能会导致生产作业损失。特别是,如果运行主节点的EC2 Spot实例(带有Spark驱动程序)被终止,整个集群也会立即终止。然而,当数据分析员或数据科学家正在探索新的数据集时,通常会使用100%的Spot实例。如果他们的Spot集群终止了,他们可以用更高的出价或随需应变实例快速启动一个新集群。在任何一次恢复尝试中,分析师或科学家都可以通过单击(Databricks中的"runall"按钮)轻松地重新运行他们的笔记本。在Databricks中,只使用EC2 Spot实例创建Spark集群非常简单。在"创建群集"页面上,选择"Spot"作为实例类型:如果您希望最经济的Spark群集可以运行Spark命令,请使用1的大小:大小为1的Spot集群将使用两个EC2 Spot实例,一个用于Spark驱动程序,另一个用于Spark Worker。你怎么知道集群是否因为现货市场价格超过你的买入价而终止?将鼠标悬停在群集的状态上以查看其终止的原因:你如何确定你的投标价格?既然您已经了解了Databricks支持的不同类型的集群,您可能想知道如何控制投标价格。在Create Cluster页面上,向下滚动并单击"Show advanced settings"(显示高级设置),然后注意"Spot Bid Price"字段:Databricks默认为等于当前按需价格的出价。因此,如果您的实例类型的按需价格为每小时0.665美分,那么默认出价也设置为每小时0.665美分。回想一下,对于Spot实例,您不一定要支付实际的出价–您需要为您的实例类型支付现货市场价格。因此,即使你可能出价0.665美分,实际上你可能只收取0.10美元一小时。通过将你的出价设置为按需价格的100%,你实质上是在说"无论实时现货市场价格是多少,但不要超过同一实例类型的按需价格"。然而,有时实现成本节约是当务之急。在这种情况下,Databricks允许您设置自己的出价。假设你实际上只愿意支付按需价格的50%。您可以通过单击"显示高级设置"并更改"现货出价"字段来相应更改您的出价:另一方面,如果稳定性更为重要,如果你不介意偶尔支付高于按需实例价格的价格,这样随着时间的推移,总的摊余成本比按需更便宜,你也可以出价100%以上……比如120%或150%。在这些情况下,您仍然要按现货市场价格计费,尽管某些小时的成本可能会高于按需等效成本,但集群的总成本通常应该比按需成本便宜。即期价格和现货市场价格现在是多少?您可以在awsec2定价页面上查看当前按需实例价格。要查看实例类型的实时现货市场价格,一种方法是尝试通过EC2控制台启动该实例,并在步骤3中检查"请求现货实例":对于现货市场价格的历史趋势分析,我喜欢使用亚马逊的官方定价历史和现货投标顾问,以及这个非官方的EC2现货价格网站。要访问官方现货定价历史记录,请登录您的AWS控制台,转到EC2服务仪表板,选择"Spot Reques