Spark Streaming介绍
Spark streaming是Spark核心API的一个扩展,它对实时流式数据的处理具有可扩展性、高吞吐量、可容错性等特点。我们可以从kafka、flume、Twitter、 ZeroMQ、Kinesis等源获取数据,也可以通过由高阶函数map、reduce、join、window等组成的复杂算法计算出数据。最后,处理后的数据可以推送到文件系统、数据库、实时仪表盘中。事实上,你可以将处理后的数据应用到Spark的机器学习算法、图处理算法中去。
Streaming接收实时的输入数据流,然后将这些数据切分为批数据供Spark引擎处理,Spark引擎将数据生成最终的结果数据。
DStream介绍
Spark Streaming支持一个高层的抽象,叫做离散流也就是DStream,它代表连续的数据流,DStream既可以利用从Kafka, Flume和Kinesis等源获取的输入数据流创建,也可以在其他DStream的基础上通过高阶函数获得。在内部,DStream是由一系列RDD组成。
Checkpointing介绍
一个流应用程序必须全天候运行,所有必须能够解决应用程序逻辑无关的故障(如系统错误,JVM崩溃等)。为了使这成为可能,Spark Streaming需要checkpoint足够的信息到容错存储系统中, 以使系统从故障中恢复。
Metadata checkpointing:保存流计算的定义信息到容错存储系统如HDFS中。这用来恢复应用程序中运行worker的节点的故障。
Data checkpointing :保存生成的RDD到可靠的存储系统中,这在有状态transformation中是必须的。在这样一个transformation中,生成的RDD依赖于之前 批的RDD,那么随着时间的推移,这个依赖链的长度会持续增长。在恢复的过程中,为了避免这种无限增长。有状态的transformation的中间RDD将会定时地存储到可靠存储系统中,以截断这个依赖链。
使用checkpoint的情况
使用有状态的transformation。如果在应用程序中用到了updateStateByKey或者reduceByKeyAndWindow,checkpoint目录必须提供用以定期checkpoint RDD。从运行应用程序的driver的故障中恢复过来。使用元数据checkpoint恢复处理信息。
如何配置checkpointint
在容错、可靠的文件系统中设置一个目录用于保存checkpoint信息。可以通过StreamingContext.checkpoint方法来做。
领取专属 10元无门槛券
私享最新 技术干货