为了让大家进一步了解Spark Streaming架构及实践,飞马网于10月30日晚,邀请到某知名电商大数据平台团队异构数据交换及流式计算平台的研发工程师韩老师为大家分享该领域的内容。
以下是这次线上直播的分享实录:
今天给大家带来的主题分享是Spark Streaming架构及实践。
一、流式计算的特点
如何定义流式数据?数据随着时间的推移而动态变化并且不断有新的数据产生,这样的数据就是流式数据,绝大多数的数据都是流式数据,静态数据是相对较少的。
特点:
1、实时性:整体上要求较低的处理延时,绝大多数要求秒级别,甚至毫秒级别。
2、数据无边界: 数据不会停,对于数据的计算也不会停。
3、容错要求:对driver和executor的要求
4、处理次数:针对每一条数据,主要分为三种。如图。
5、数据洪峰:特别重要的事情,特别是对于电商行业来说。预估、压测、合理分配、参数调优。
6、数据源复杂性:实际上,绝大多数都是如下的架构。
二、Spark Streaming的运行模式及架构解析
运行模式分为四种:
1、Local:就是本地模式,经常用于本地开发测试。
2、Standalone:集群由Master(负责资源管理和调度,存在单点故障)和Worker(执行业务逻辑)节点组成。
3、Yam/Mesos:前者在生产环境中最常用的;后者在国内并没有火起来,以前者为例。优点如下:生态足够好;分布式资源调度的框架可以做到资源隔离,适度调度等。
Cluster和client的区别:
4、Kubemetes:新模式,社区还在探索阶段,是未来的趋势。
好处是:版本很灵活;扩容十分简单
未来趋势——容器化;弹性化的优点;节省资源;
Spark Streaming架构解析
三、Spark Streaming实践tips
Checkpoint
为什么需要Checkpoint?
1、7*24小时的应用是需要抵御意外或者恢复计算能力的;
2、依赖关系过于长,成本大
3、功能有限,容错性不高
什么时候做Checkpoint?
1、希望能从意外中恢复driver
2、存储中间数据状态
两种类型的Checkpoint
1、metadata元数据,定义了计算逻辑的不要信息
2、Data类型的Checkpoint
Checkpoint有什么局限性?
如果应用挂了,发现应用程序有问题,可能之前的数据难以恢复
应用场景
Spark+kafka是通用的场景。
Direct方式的优点:
1、简化并行读取
2、高效
3、恰好一次语义
关于消费kafka并行:
通过扩上游的partition数量来提高消费并行度是可以的,但是利好程度有限。
在生产过程中往往会开背压机制(系统具备了根据系统的实际处理能力来进行自我调节的能力)和限速,这两个特性是结合起来用的,特别重要。
Foreach RDD
输出操作里最常用的一个编程范式
需要注意的点:把跟外部系统创建连接这样的实例的极点 ,否则容易出现异常。
四、Spark Streaming应用分类以及示例
1、实时计算及展现类
对用户的行为或者其他行为进行是实时化的分析,并且结合可视化的展现,换句话说就是实时报表类的应用。比如说,每年电商618、双十一都会有大屏类的展现。
后台架构图
SLB、ECS左边是线上的web系统,用来埋点,直接到RDS 。
DTS是阿里做数据传输的一个东西,实时高效的抓取操作往下游发。
datahub理解成kafka,是一个消息队列。
下游是熟悉的模块,一个计算引擎,最后输入到数据库里。
下面这个例子,是后台登录系统的截图。典型的实时报表场景,描点的图实际上就是流计算。
2、实时监测及推荐类
对用户、业务、系统做实时监控。
应用在全栈交易检测、大促实时监控、实时欺诈检测(风控)、实施推荐或广告系统
两个例子;
典型的推荐系统架构。
风控系统
3、streaming ETL
ETL就是抽取、转化、夹带,数据仓库里面的一个概念。
做数据过滤,数据转化,甚至数据清洗。
对数据做分区,提高效率。
源端和目标端一般都会挂kafka
五、流式计算引擎技术选型
常见的:storm、spark、samza、flink、heron……
对比三种引擎
Storm、spark、flink,总的来说,后两个都是不错的选择。
如何选?
1、适用性最好。
2、没有差武器,只有用不好武器的人。选一个引擎去深入了解。
3、历史包袱。初创公司不需要包袱就可以选择最流行的。发展很久的话,就需要考虑历史的原因。
以上就是本次线上直播的主要内容,相信你对其有了一定的认识。想了解更多更详细内容的小伙伴们,可以关注服务号:FMI飞马网,点击菜单栏飞马直播,即可进行学习。
閱讀更多 飛馬網FMI 的文章