与海洋动态Kubernetes PersistentVolumeClaim (PVC)重用Apache火花

阅读时间:5分钟

最激动人心的一个实现出来的Apache火花Kubernetes™是动态创建、安装和卸载的PersistentVolumeClaim(PVC)在一个火花的应用程序。

我们口语以前关于如何使用pvc洗牌恢复数据,防止应用程序失败点杀发生后,否定现货实例使用的最大缺点之一火花工作负载。以前,竞态条件存在,阻止了PVC发布时间由新创建的执行器节点,但由于火花3.4中的一些改进,我们可以证实,动态PVC重用操作。

在这篇文章中,我们将讨论动态PVC重用是什么以及如何为Apache配置海洋火花利用这个强大的功能,确保您的数据工程应用程序不会失去宝贵的数据。

PVC是Kubernetes抽象为一个存储资源

在Kubernetes、PVC代表PersistentVolumeClaim。它是一种抽象,允许用户请求和便携的方式使用存储资源。雷竞技rabet官网pvc为应用程序提供一种运行在Kubernetes豆荚请求特定的存储资源,如磁盘或卷,而不需要了解底层基础设施的细节。雷竞技rabet官网

当一个应用程序需要存储时,它可以创建一个PVC对象并指定所需的存储特性如大小、访问模式和存储类。PVC被绑定到一个可用的PersistentVolume (PV)满足要求的特点。

pvc可以改善火花应用程序的性能

动态PVC重用是在火花3.2中引入的。火花应用程序开始时,司机将创建pvc和提供卷被执行人火花的应用程序使用。火花司机处理创建、配置、安装和删除所以火花应用程序所需的一切资源去完成处理,但申请完成后发布的资源。雷竞技rabet官网这样,你只需要支付存储资源在您的应用程序运行时,提供一个抽象层,将应用雷竞技rabet官网程序从特定的存储细节。

PVC重用可以避免数据丢失点杀

PVC重用变得火花现场应用实例运行时特别有用。而引发现场运行的实例是一个伟大的方式来减少总体成本的火花的平台,有一些重大的缺点。

当火花应用程序接收到现货杀死,它失去了所有元数据或洗牌的数据存储在节点回忆道。如果火花应用程序需要这些数据来完成正在进行的阶段或未来的任务,它将被迫再计算数据和重新执行先前完成的工作来弥补损失的数据。

通常,这重新计算不是资源密集型,和你只会注意到略有延迟,您的应用程序的性能。对于重操作或工作负载,这将为应用程序添加大量的时间,或在某些情况下,导致应用程序失败火花不能及时赶上,永远无法找到失踪洗牌数据。您将看到一条错误消息类似于下面的图片:

截图展示海洋Apache引发表面问题在洗牌数据丢失
截图展示海洋Apache引发表面问题在洗牌数据丢失

PVC重用可以避免这些失败。

想象一下一个简单的火花应用程序与一个执行人(exec-0)和动态PVC重用启用配置卷(pvc-0)。现在我们假设这个应用程序已经完成了几个操作生成的洗牌数据和写数据到磁盘。当这个应用程序接收到一个点杀和失去exec-0, PVC重用将pvc-0并附上exec-1时提供替代exec-0。

而不是延期阶段和任务重新洗牌的数据,火花将能够识别现有洗牌数据从pvc-0,马上拿起最后的遗嘱执行人。您的应用程序将会有一个轻微的延迟,因为它获得新节点从云提供商(s),但你不必重复任何以前完成的工作和你的应用程序不会失败由于缺少洗牌数据!

在火花3.2 PVC重用问题

这个特性在火花3.2中首次发布时,我们很兴奋地对其进行测试。使PVC火花应用程序中重用,你需要添加以下配置火花应用程序。

截图的海洋为PVC Apache配置火花
截图的海洋为PVC Apache配置火花

然而,我们遇到了一个问题的实现。假设相同的配置与前面的步骤(exec-0 pvc-0)。

为了测试这个功能,我们跑了几个命令,生成的随机数据,然后删除该节点,exec-0部署在模拟点杀。当我们检查舱模拟现场杀死后,我们看到exec-0退役和一个新节点旋转exec-1。然而,pvc-0没有被附加到exec-1创建第二个PVC和安装到新节点。

进一步调查后,我们意识到有竞争条件的PVC从最初的遗嘱执行人没有被发布的时间获取和安装新的遗嘱执行人。在另一个测试中,我们有一些更多的执行人在应用程序和模拟两到三个地方杀死在5到10分钟。我们能够观察到pvc-0最终将被安装到一个新的执行器,但它不是1:1和新的pvc没有现有的洗牌数据仍被创造出来。

虽然这个功能仍然可以用于长时间运行的应用程序或流媒体工作,不释放动态PVC重用的潜能和工作作为一个可靠的解决方案来处理与洗牌数据现货杀死。

3.4工作方案与火花

由于工作这张票,比赛条件动态PVC重用已纠正。包含一个额外的配置设置,火花正确3.4条款,增加,删除,重新安装pvc在同一个火花的应用程序。你可以得到火花3.4形象在这里并设置以下配置:

“spark.kubernetes.driver。waitToReusePersistentVolumeClaim”:“真正的”

您需要配置一个存储类,可以使用的PVC。在上面的示例中,“标准”存储类创建以下yaml:

截图的海洋为Apache火花Kubernetes存储类的配置
截图的海洋为Apache火花Kubernetes存储类的配置

此外,您还必须附加一个集群的“编辑”角色spark-driver服务帐户。您可以运行以下命令把集群的作用:

kubectl创建clusterrolebinding——clusterrole =编辑serviceaccount = spark-apps: spark-driver——名称空间=违约

在下一篇博文中,我们将检查动态PVC复用的性能优势。具体来说,我们将着眼于成本节约和性能通过连续运行时,以及修复的应用程序以前失败的过程中重新计算。与此同时,今天报名海洋的难以置信的力量和经验为Apache火花。

Baidu
map