大数据-玩转数据-Flink状态后端(下)

这篇具有很好参考价值的文章主要介绍了大数据-玩转数据-Flink状态后端(下)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、状态后端

每传入一条数据,有状态的算子任务都会读取和更新状态。由于有效的状态访问对于处理数据的低延迟至关重要,因此每个并行任务(子任务)都会在本地维护其状态,以确保快速的状态访问。

状态的存储、访问以及维护,由一个可插入的组件决定,这个组件就叫做状态后端(state backend)。

当使用checkpoint时,状态(state)会被持久化到checkpoint上,以防止数据的丢失并确保发生故障时能够完全恢复。状态是通过什么方式在哪里持久化,取决于使用的状态后端。

状态后端主要负责两件事:本地(taskmanager)的状态管理,将检查点(checkpoint)状态写入远程存储。

二、状态后端分类

Flink提供了3种状态后端,MemoryStateBackend,FsStateBackend,RocksDBStateBackend,作为一个可插入的组件,没有固定的配置,根据需要进行选择。注意:如果什么都不配置,系统默认的是MemoryStateBackend。

三、MemoryStateBackend

存储方式:本地状态存储在TaskManager的内存中,checkpoint 存储在JobManager的内存中。
特点:快速,低延迟, 但不稳定。
使用场景:1. 本地测试 ;2. 几乎无状态的作业(ETL) ;3. JobManager不容易挂, 或者挂了影响不大;4. 不推荐在生产环境下使用。

四、FsStateBackend

存储方式: 本地状态在TaskManager内存, Checkpoint时, 存储在文件系统(hdfs)中。
特点:拥有内存级别的本地访问速度, 和更好的容错保证。
使用场景:1. 常规使用状态的作业,例如分钟级别窗口聚合, join等; 2. 需要开启HA的作业 ;3. 可以应用在生产环境中。

五、RocksDBStateBackend

将所有的状态序列化之后,存入本地的RocksDB数据库中。(一种NoSql数据库, KV形式存储)
存储方式:1. 本地状态存储在TaskManager的RocksDB数据库中(实际是内存+磁盘); 2. Checkpoint在外部文件系统(hdfs)中。
使用场景:1. 超大状态的作业,例如天级的窗口聚合 ;2. 需要开启HA的作业; 3. 对读写状态性能要求不高的作业 ;4. 可以使用在生产环境。

六、状态后端文件配置

在flink-conf.yaml文件中设置默认的全局后端
大数据-玩转数据-Flink状态后端(下),大数据-玩转数据-FLINK,大数据,flink
老的写法:

memory
state.backend: jobmanager

fs
state.backend: filesystem
state.checkpoints.dir: hdfs://namenode-host:port/flink-checkpoints

rocksdb
state.backend: rocksdb
state.checkpoints.dir: hdfs://namenode-host:port/flink-checkpoints

新的写法:
state.backend: hashmap 或 rocksdb
state.checkpoints.dir: 文件目录 或 jobmanager

七、代码配置

可以在代码中单独为这个Job设置状态后端。
memory

env.setStateBackend(new MemoryStateBackend());

fs

env.setStateBackend(new FsStateBackend("hdfs://hadoop100:8020/flink/checkpoints/fs"));

rocksdb
如果要使用RocksDBBackend, 需要先引入依赖:文章来源地址https://www.toymoban.com/news/detail-705469.html

<dependency>
    <groupId>org.apache.flink</groupId>
    <artifactId>flink-statebackend-rocksdb_${scala.binary.version}</artifactId>
    <version>${flink.version}</version>
</dependency>
env.setStateBackend(new  RocksDBStateBackend("hdfs://hadoop100:8020/flink/checkpoints/rocksdb"));

到了这里,关于大数据-玩转数据-Flink状态后端(下)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Flink State backend状态后端

    Flink在v1.12到v1.14的改进当中,其状态后端也发生了变化。老版本的状态后端有三个,分别是MemoryStateBackend、FsStateBackend、RocksDBStateBackend,在flink1.14中,这些状态已经被废弃了,新版本的状态后端是 HashMapStateBackend、EmbeddedRocksDBStateBackend。 有状态流应用中的检查点(checkpoint),

    2024年01月25日
    浏览(44)
  • 209.Flink(四):状态,按键分区,算子状态,状态后端。容错机制,检查点,保存点。状态一致性。flink与kafka整合

    算子任务可以分为有状态、无状态两种。 无状态:filter,map这种,每次都是独立事件 有状态:sum这种,每次处理数据需要额外一个状态值来辅助。这个额外的值就叫“状态” (1)托管状态(Managed State)和原始状态(Raw State) 托管状态 就是由Flink统一管理的,状态的存储访问

    2024年02月06日
    浏览(52)
  • Flink理论—容错之状态后端(State Backends)

    Flink 使用流重放 和 检查点 的组合来实现容错。检查点标记每个输入流中的特定点以及每个运算符的相应状态。通过恢复运算符的状态并从检查点点重放记录,可以从检查点恢复流数据流,同时保持一致性 容错机制不断地绘制分布式流数据流的快照。对于小状态的流式应用程

    2024年02月20日
    浏览(39)
  • 大数据-玩转数据-Flink营销对账

    在电商网站中,订单的支付作为直接与营销收入挂钩的一环,在业务流程中非常重要。对于订单而言,为了正确控制业务流程,也为了增加用户的支付意愿,网站一般会设置一个支付失效时间,超过一段时间不支付的订单就会被取消。另外,对于订单的支付,我们还应保证用

    2024年02月11日
    浏览(39)
  • 大数据-玩转数据-Flink RedisSink

    具体版本根据实际情况确定 参见大数据-玩转数据-Redis 安装与使用 可以根据要写入的redis的不同数据类型进行调整

    2024年02月13日
    浏览(39)
  • 大数据-玩转数据-Flink窗口函数

    前面指定了窗口的分配器, 接着我们需要来指定如何计算, 这事由window function来负责. 一旦窗口关闭, window function 去计算处理窗口中的每个元素. window function 可以是ReduceFunction,AggregateFunction,or ProcessWindowFunction中的任意一种. ReduceFunction,AggregateFunction更加高效, 原因就是Flink可以对

    2024年02月11日
    浏览(43)
  • 大数据-玩转数据-Flink 容错机制

    在分布式架构中,当某个节点出现故障,其他节点基本不受影响。在 Flink 中,有一套完整的容错机制,最重要就是检查点(checkpoint)。 在流处理中,我们可以用存档读档的思路,把之前的计算结果做个保存,这样重启之后就可以继续处理新数据、而不需要重新计算了。所以

    2024年02月07日
    浏览(48)
  • 大数据-玩转数据-Flink定时器

    基于处理时间或者事件时间处理过一个元素之后, 注册一个定时器, 然后指定的时间执行. Context和OnTimerContext所持有的TimerService对象拥有以下方法: currentProcessingTime(): Long 返回当前处理时间 currentWatermark(): Long 返回当前watermark的时间戳 registerProcessingTimeTimer(timestamp: Long): Unit 会注

    2024年02月10日
    浏览(38)
  • 大数据-玩转数据-Flink恶意登录监控

    对于网站而言,用户登录并不是频繁的业务操作。如果一个用户短时间内频繁登录失败,就有可能是出现了程序的恶意攻击,比如密码暴力破解。 因此我们考虑,应该对用户的登录失败动作进行统计,具体来说,如果同一用户(可以是不同IP)在2秒之内连续两次登录失败,就

    2024年02月07日
    浏览(42)
  • 大数据-玩转数据-Flink 网站UV统计

    在实际应用中,我们往往会关注,到底有多少不同的用户访问了网站,所以另外一个统计流量的重要指标是网站的独立访客数(Unique Visitor,UV)。 对于UserBehavior数据源来说,我们直接可以根据userId来区分不同的用户。 将userid放到SET集合里面,统计集合长度,便可以统计到网

    2024年02月11日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包