一.部署应用
要部署运行Spark Streaming应用程序,需要具备以下条件。
- 使用集群管理器进行集群部署,这是任何Spark应用程序的一般要求。
- 将应用程序JAR打包 ,必须将流式应用程序编译为JAR。如果spark-submit用于启动应用程序,则无需在JAR中提供Spark和Spark Streaming。但是,如果应用程序使用高级数据源【例如Kafka】,则必须将它们链接到的额外工件及其依赖项打包在用于部署应用程序的JAR中。例如,使用的应用程序KafkaUtils 必须将spark-streaming-kafka-x-xx_x.xx及其所有传递依赖项在其应用程序JAR中包含。
- 为执行者配置足够的内存,由于必须将接收到的数据存储在内存中,因此必须为执行者配置足够的内存来保存接收到的数据。请注意,如果要执行10分钟的窗口操作,则系统必须在内存中至少保留最近10分钟的数据。因此,应用程序的内存要求取决于其中使用的操作。
- 配置检查点,如果流应用程序需要它,则必须将Hadoop API兼容的容错存储中的目录(例如HDFS,S3等)配置为检查点目录,并且以这样的方式编写流应用程序,用于故障恢复。
- 配置应用程序驱动程序的自动重新启动,要从驱动程序故障中自动恢复,用于运行流式应用程序的部署基础结构必须监视驱动程序进程,并在驱动程序失败时重新启动。不同的集群管理器 具有不同的工具来实现这一目标。
- Spark Standalone,可以提交Spark应用程序驱动程序以在Spark Standalone集群内运行,应用程序驱动程序本身在工作程序节点之一上运行。此外,可以指示独立集群管理器监督驱动程序,并在驱动程序由于非零退出代码或由于运行该驱动程序的节