流式计算
从spark 说起,谈谈“流式”计算的理解
spark是一个大数据分布式的计算框架,有一些并行计算的基础会更容易理解分布式计算框架的概念。对比并行计算,谈三个概念:
- 并行计算
- Map Reduce 算子
- RDD数据结构
-
并行计算
spark的任务分为1个driver、多个executor。程序启动driver,driver发送执行的程序(jar)到executor,executor在多台机器并行执行。driver和executor可以理解为进程,像httpd一样,完成某些任务,接受并发送数据的进程。
不同的spark任务都需要分配driver、executor。此时,还需要提供资源管理的应用,包括计算资源和内存资源的。
我们采用YARN作为spark资源管理系统,Mesos是另一个资源管理框架。
-
Map Reduce 算子
大数据与并行计算的最大区别,我认为就在map reduce算子上。
并行计算更喜欢做“关门打狗”的应用,高度并行,线程之间不做交互,例如口令破译,造表等。
spark中,用transform 和 action代替map Reduce操作。transform中的reduceByKey等操作对整体数据处理。例如,下面的代码是一个transform操作,rdd是(word,1)对象,reducebykey统计相同word出现的次数,这个操作是全局完成的。
rdd.reduceByKey((v1,v2)->v1+v2)
-
RDD数据结构
在并行计算中,需要维护一个全局数据结构,类似任务种子,每个节点维护与自己种子对应的数据片。
RDD(Resilient Distributed Datasets),弹性分布式数据集。在spark中,RDD维护一个全局的数据对象。每个任务executor自动对应自己的数据集分片。在编写程序的时候,对executor上到底有哪些数据不用关心,数据集的分片、合并等操作都是透明的,仅需要定义整个数据集的操作。
spark 大数据应用,挑战
spark用于实现大数据分析功能。如果数据源比较大,有几十亿条,用MySQL做数据分析,可能要一天的时间,spark可能几十分钟就能给出结果(因为采用分布式计算,分布式数据集)。
传统的web服务,属于online业务。online业务要求毫秒级的响应速度,这样的业务产生额外的要求,例如对用户的阅读记录对用户的画像的影响、一个订单对全城车辆调度的影响、一个用户的动态对推荐feed流的影响。
虽然,这些操作实时性不像online业务要求毫秒,但是也是秒级的。对spark批处理提出更多要求。
Spark streaming 解决秒级响应,即流式计算
spark streaming 将spark 批处理应用,缩小为一个微批micro batch,把microbatch作为一个计算单元。
典型应用如图。大量实时业务产生的实时数据,首先放在一个队列中,例如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());
上面的代码案例,定义一个socket输入流,任务每5秒钟执行一次(微批),统计单词个数。
总结
本文是关于spark streaming流式计算理解的介绍文章。
希望读者能通过10分钟的阅读,理解spark streaming 及流式计算的原理。
文中对spark、yarn的原理没有深入讲解,有机会在后面的文章介绍。
下一篇我会根据spark streaming 官网中案例讲解JavaDStream mapWithState的练习。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
TableStore时序数据存储 - 架构篇
背景 随着近几年物联网的发展,时序数据迎来了一个不小的爆发。从DB-Engines上近两年的数据库类型增长趋势来看,时序数据库的增长是非常迅猛的。在去年我花了比较长的时间去了解了一些开源时序数据库,写了一个系列的文章( 综述、 HBase系、 Cassandra系、 InfluxDB、 Prometheus),感兴趣的可以浏览。 这几大开源时序数据库的实现各有千秋,都不是很完美,但是如果可以取长补短,倒是能实现一个比较完美的时序数据库。 TableStore作为阿里云自研的分布式NoSQL数据库,在数据模型上我们是多模型设计,包含和BigTable一样的Wide Column模型以及针对消息数据的Timeline模型。在存储模型、数据规模以及写入和查询能力上,都能比较好的满足时序数据场景的需求。但我们作为一个通用模型数据库,时序数据存储要完全发挥
- 下一篇
【公测中】阿里云发布国内首个大数据双活容灾服务,满足高要求大数据灾备场景
在6月上旬举行的云栖大会上海峰会上,阿里云发布了国内首个大数据集群双活容灾产品-混合云容灾服务下的混合云大数据容灾服务(HDR for Big Data, 简称 HDR-BD),并已经在7月份开始邀测。HDR-BD采用业界领先的数据双向实时复制技术,可以实现Hadoop集群双活和准0 RPO容灾,为大数据灾备制定了全新的标准。 常见Hadoop灾备技术的挑战 当前比较常见的Hadoop集群灾备方式是用distcp将数据定期复制到一个备用集群做容灾用途,或者将数据复制到只读集群、二级存储作为多恢复点的备份。这些方案都有明显弱点。 RPO和RTO是衡量灾备方案的两个重要指标,RPO-恢复点目标,决定了丢失多少数据,RTO-恢复时间目标,决定了业务中断了多长时间。由于传统的Hadoop集群灾备方式使用的是distcp来做容灾,也就意味着数据复
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8编译安装MySQL8.0.19
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Windows10,CentOS7,CentOS8安装Nodejs环境
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- 设置Eclipse缩进为4个空格,增强代码规范
- MySQL8.0.19开启GTID主从同步CentOS8