流式计算

简介: 从spark 说起,谈谈“流式”计算的理解spark是一个大数据分布式的计算框架,有一些并行计算的基础会更容易理解分布式计算框架的概念。对比并行计算,谈三个概念:并行计算Map Reduce 算子RDD数据结构并行计算spark的任务分为1个driver、多个executor。

从spark 说起,谈谈“流式”计算的理解

spark是一个大数据分布式的计算框架,有一些并行计算的基础会更容易理解分布式计算框架的概念。对比并行计算,谈三个概念:

  1. 并行计算
  2. Map Reduce 算子
  3. RDD数据结构
  • 并行计算

spark的任务分为1个driver、多个executor。程序启动driver,driver发送执行的程序(jar)到executor,executor在多台机器并行执行。driver和executor可以理解为进程,像httpd一样,完成某些任务,接受并发送数据的进程。

不同的spark任务都需要分配driver、executor。此时,还需要提供资源管理的应用,包括计算资源内存资源的。

我们采用YARN作为spark资源管理系统,Mesos是另一个资源管理框架。


YARN
  • Map Reduce 算子

大数据与并行计算的最大区别,我认为就在map reduce算子上。

并行计算更喜欢做“关门打狗”的应用,高度并行,线程之间不做交互,例如口令破译,造表等。

spark中,用transform 和 action代替map Reduce操作。transform中的reduceByKey等操作对整体数据处理。例如,下面的代码是一个transform操作,rdd是(word,1)对象,reducebykey统计相同word出现的次数,这个操作是全局完成的。

rdd.reduceByKey((v1,v2)->v1+v2)
AI 代码解读
  • RDD数据结构

在并行计算中,需要维护一个全局数据结构,类似任务种子,每个节点维护与自己种子对应的数据片。

RDD(Resilient Distributed Datasets),弹性分布式数据集。在spark中,RDD维护一个全局的数据对象。每个任务executor自动对应自己的数据集分片。在编写程序的时候,对executor上到底有哪些数据不用关心,数据集的分片、合并等操作都是透明的,仅需要定义整个数据集的操作。

RDD

spark 大数据应用,挑战

spark用于实现大数据分析功能。如果数据源比较大,有几十亿条,用MySQL做数据分析,可能要一天的时间,spark可能几十分钟就能给出结果(因为采用分布式计算,分布式数据集)。

传统的web服务,属于online业务。online业务要求毫秒级的响应速度,这样的业务产生额外的要求,例如对用户的阅读记录对用户的画像的影响、一个订单对全城车辆调度的影响、一个用户的动态对推荐feed流的影响。

虽然,这些操作实时性不像online业务要求毫秒,但是也是秒级的。对spark批处理提出更多要求。

Spark streaming 解决秒级响应,即流式计算

spark streaming 将spark 批处理应用,缩小为一个微批micro batch,把microbatch作为一个计算单元。


Stream

典型应用如图。大量实时业务产生的实时数据,首先放在一个队列中,例如kafka,Spark streaming 从kafka中取出micorbatch进行处理。

JavaStreamingContext ssc = 
new JavaStreamingContext(sparkConf, Durations.seconds(5));
JavaReceiverInputDStream inputDStream =     
                ssc.socketTextStream("localhost",9999,
                    StorageLevel.MEMORY_AND_DISK());
JavaDStream<String> words =  inputDStream
            .flatMap(s->Arrays.asList(String.valueOf(s)
                          .split(" ")).iterator());
AI 代码解读

上面的代码案例,定义一个socket输入流,任务每5秒钟执行一次(微批),统计单词个数。

总结

本文是关于spark streaming流式计算理解的介绍文章。

希望读者能通过10分钟的阅读,理解spark streaming 及流式计算的原理。

文中对spark、yarn的原理没有深入讲解,有机会在后面的文章介绍。

下一篇我会根据spark streaming 官网中案例讲解JavaDStream mapWithState的练习。

目录
打赏
0
0
0
0
1
分享
相关文章
DataSimba系列之流式计算
市场变化越来越快,企业对于数据及时性的需求,也越来越大,另一方面,当下数据容量呈几何倍暴增,数据的价值在其产生之后,也将随着时间的流逝,逐渐降低。 因此,我们最好在事件发生之后,迅速对其进行有效处理,实时,快速地处理新产生的数据,帮助企业快速地进行异常管理和有效决策,而不是待数据存储在一起之后,再进行批量处理。
1634 0
流计算StreamCompute
背景 每年的双十一除了“折扣”,全世界(特别是阿里人)都关注的另一个焦点是面向媒体直播的“实时大屏”(如下图所示)。包括总成交量在内的各项指标,通过数字维度展现了双十一狂欢节这一是买家,卖家及物流小二一起创造的奇迹! 双十一媒体直播大屏 这一大屏背后需要实时处理海量的庞大电商系统各个模块产生的
18807 0
流计算
在过去几年里,已为流计算开发了数百项应用。下面简单介绍了一些应用,着重强调了流计算支持的使用类型。面对日益增长的海量数据,精细化营销的挑战.通常电信行业会面临海量数据,异构数据,实时主动分析等挑战.
563 0
流计算
什么是实时流式计算?
实时流式计算,也就是RealTime,Streaming,Analyse,在不同的领域有不同的定义,这里我们说的是大数据领域的实时流式计算。 实时流式计算,或者是实时计算,流式计算,在大数据领域都是差不多的概念。那么,到底什么是实时流式计算呢?
1052 58
什么是实时流式计算?
为什么会有流处理?
批处理技术,它读取一组文件作为输入,并生成一组新的文件作为输出。输出是 衍生数据(derived data) 的一种形式;即若需要,可通过再次运行批处理过程来重新创建数据集。我们看到了如何使用这个简单而强大的想法来建立搜索索引、推荐系统、做分析等。
109 0
什么是流处理
流处理正变得像数据处理一样流行。流处理已经超出了其原来的实时数据处理的范畴,它正在成为一种提供数据处理(包括批处理),实时应用乃至分布式事务的新方法的技术。
438 0
什么是流处理
为什么说流处理即未来?
本文整理自 Flink 创始公司 Ververica 联合创始人兼 CTO - Stephan 在 Flink Forward China 2018 上的演讲《Stream Processing takes on Everything》。
10060 0
流计算中的数据延迟是什么?为什么它在流计算中很重要?
流计算中的数据延迟是什么?为什么它在流计算中很重要?
234 0