Spark

SparkStreaming之解析mapWithState

最近经历挫折教育,今天闲得时间,整理状态管理之解析mapWithState。今天说道的mapWithState是从Spark1.6开始引入的一种新的状态管理机制,支持输出全量的状态和更新的状态,支持对状态超时的管理,和自主选择需要的输出。

SparkStreaming之解析updateStateByKey

说到Spark Streaming的状态管理,就会想到updateStateByKey,还有mapWithState。今天整理了一下,着重了解一下前者。

状态管理的需求

举一个最简单的需求例子来解释状态(state)管理,现在有这样的一个需求:计算从数据流开始到目前为止单词出现的次数。是不是看起来很眼熟,这其实就是一个升级版的wordcount,只不过需要在每个batchInterval计算当前batch的单词计数,然后对各个批次的计数进行累加。每一个批次的累积的计数就是当前的一个状态值。我们需要把这个状态保存下来,和后面批次单词的计数结果来进行计算,这样我们就能不断的在历史的基础上进行次数的更新。

SparkStreaming提供了两种方法来解决这个问题:updateStateByKey和mapWithState。mapWithState是1.6版本新增的功能,官方说性能较updateStateByKey提升10倍。

Spark的运行模式

Spark是新一代基于内存的计算框架,是用于大规模数据处理的同意分析引擎。相比于Hadoop MapReduce计算框架,Spark将中间计算结果保留在内存中,速度提升10~100倍;同时采用弹性分布式数据集(RDD)实现迭代计算,更好的适用于数据挖掘、机器学习,极大的提升开发效率。

Spark的运行模式,它不仅支持单机模式,同时支持集群模式运行;这里具体的总结一下Spark的各种运行模式的区分。

Local模式

Local模式又称本地模式,通过Local模式运行非常简单,只需要把Spark的安装包解压后,改一些常用的配置即可使用,而不用启动Spark的Master、Worker进程(只有集群的Standalone模式运行时,才需要这两个角色),也不用启动Hadoop的服务,除非你需要用到HDFS。