Spark学习笔记:Spark Streaming数据存储与调优

目录

 

Spark Streaming数据存储与调优

一.缓存与持久化机制

二.Checkpoint机制

三.部署、升级和监控应用程序

1.部署应用程序

2.升级应用程序

3.监控应用程序

4.容错机制以及事务语义详解

5.Spark Steraming架构原理

6.性能调优


Spark Streaming数据存储与调优

一.缓存与持久化机制

与RDD类似,Spark Streaming也可以让开发人员手动控制,将数据流中的数据持久化到内存中,对DStream调用persist()方法,就可以让Spark Streaming自动将该数据流中的所有产生的RDD都持久化到内存中。如果要对一个DStream多次执行操作,那么,对DSteram持久化是非常有用的。因为多次操作,可以共享使用内存中的一份缓存数据。

对于基础窗口的操作,比如reduceByWindow、reduceByKeyAndWindow,以及基于状态的操作,比如updateStateByKey,默认就隐式开启了持久化机制,即Spark Streaming默认就会将上述操作产生的DStream中的数据,缓存到内存中,不需要开发人员手动调用persist()方法。

对于通过网络接收数据的输入流,比如Socket、Kafka、Flume等,默认的持久化级别是将数据复制一份,以便于容错,相当于用的是MEMORY_ONLY_SER_2。

与Spark Core中的RDD不同的是,默认的持久化级别,统一都是要序列化的。

二.Checkpoint机制

每一个Spark Streaming应用,正常来说都是要7x24小时运转的,这就是实时计算程序的特点。要持续不断的对数据进行计算,必须要能够对于应用程序逻辑无关的失败进行容错。

对于一些将多个batch的数据进行聚合的,有状态的transformation操作,这是非常有用的。在这种transformation操作中,生成的RDD是依赖之前的batch中的RDD的,这样就会随着时间的推移,依赖链条越来越长,从而导致失败恢复时间也变得越来越差。有状态的transformation操作执行过程当中产生的RDD要定期的被checkpoint到可靠的存储上,这样做可以消减RDD的依赖链条,从而缩短恢复时间。

当使用了有状态的transformation操作时,必须要开启checkpoint机制,提供checkpoint目录。

注意,并不是所有的Spark Streaming应用程序都要启用checkpoint机制

如何启用Checkpoint机制

  • 配置一个文件系统(比如HDFS)的目录,作为checkpoint目录
  • 使用StreamingContext的checkpoint方法,填入配置好的目录作为参数即可

三.部署、升级和监控应用程序

1.部署应用程序

  • 需要有一个集群资源管理器,比如standalone模式下的Spark集群,Yarn模式下的Yarn集群等
  • 打包应用程序为一个jar包
  • 为Executor配置充足的内存,比如如果你要执行窗口长度为10分钟的窗口操作,那么Executor的内存资源就必须足够保存10分钟内的数据
  • 配置checkpoint

2.升级应用程序

  • 如果能够允许多个客户端读取各自独立的数据,也就是读取相同数据的时候,可以直接启动升级后的Spark应用程序,先与旧的Spark应用程序并行执行,确保新的程序没有问题之后,再将旧的程序停掉
  • 如果是支持缓存的数据源(如Flume,Kafka等),可以用stop方法先关闭已经在运行的应用程序,然后将升级后的程序部署上去,再启动,这样不会有数据的丢失,如果是不支持缓存的数据源,就会导致数据的丢失

3.监控应用程

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值