apache spark
Apache Spark中的容错简介
在开始学习什么是Spark的容错能力之前,让我们为初学者修改Apache Spark的概念。
现在让我们了解什么是故障以及Spark如何处理容错。
故障是指故障,因此容错能力是 运行并在发生故障后恢复损失。 如果我们想要我们的 系统是容错的,它应该是多余的,因为我们需要一个 冗余组件以获取丢失的数据。 错误数据是 通过冗余数据恢复。
Spark RDD容错
首先让我们看看如何在Spark中创建RDD 。 Spark在容错文件系统(例如HDFS或S3)中的数据上运行。 因此,从容错数据生成的所有RDD都是容错的。 但是,对于流/实时数据(通过 网络)。 因此,Spark中容错的关键需求就是这种情况 数据的。 Spark的基本容错语义是:
- 从Apache Spark RDD开始 是一个不可变的数据集,每个Spark RDD都会记住 容错输入数据集上使用的确定性操作 创造它。
- 如果由于工作节点故障而导致RDD的任何分区丢失, 然后可以从原始容错中重新计算该分区 使用操作沿袭的数据集。
- 假设所有RDD转换都是确定性的,则最终转换后的RDD中的数据将始终相同,而不管Spark集群中的故障如何。
为了实现所有生成的RDD的容错能力, 数据将在工作节点中的多个Spark执行程序之间复制 簇。 这导致需要恢复两种类型的数据 如果发生故障: 1)接收并复制数据。 2)接收到数据但将其缓存以进行复制。
- 接收和复制数据 :在这种情况下,数据将在其他节点之一上复制,因此在发生故障时可以检索数据。
- 接收到的数据但已缓冲以进行复制 :数据不会被复制,因此恢复故障的唯一方法是再次从源中检索故障。
在工作节点以及驱动程序节点中也会发生故障。
- 工作节点失败 :在Spark集群上运行应用程序代码的节点 是Spark工作者节点。 这些是从节点。 任何工人 运行执行程序的节点可能会失败,从而导致内存丢失 任何接收器都在故障节点上运行,那么它们的缓冲区数据将 迷路了。
- 驱动程序节点故障:如果存在故障 运行Spark Streaming应用程序的驱动程序节点,然后 SparkContent丢失,所有执行程序及其内存数据都将丢失 丢失。
Apache Mesos 通过维护以下组件来帮助使Spark主设备容错 备份大师。 它是介于 应用层和操作系统,使其更易于部署 和管理大型集群环境中的应用程序。 执行器如果失败,将重新启动。 发布失败,执行者是 自动重新启动,Spark Streaming通过以下方式并行恢复 在输入数据上重新计算Spark RDD。 接收器由 工人失败时。
基于接收器的容错能力
对于基于接收器的输入源,容错性取决于故障情况和接收器的类型 。 接收器有两种类型:
- 可靠的接收器 :一旦确保 接收到的数据已被复制,可靠的来源是 承认。 如果接收器失败,则源将不会接收 缓冲数据的确认。 所以,下次接收者是 重新启动后,源将重新发送数据,并且不会丢失任何数据 失败。
- 接收器不可靠 :由于工作人员或驱动程序故障,数据可能会丢失,因为此类接收器不会发送确认。
如果工作程序节点发生故障 ,并且接收方为 可靠,不会丢失任何数据。 但是在不可靠的情况下 接收器数据将会丢失。 使用不可靠的接收器,数据 收到但未复制的内容可能会丢失。
apache spark