Flink任务总是down?

时间:2019-07-19 来源: 星座
yg电子娱乐

Qianfeng JAVA Development Institute我想分享3天前

Flink的检查点机制可以保证完全一次的功能,因此Flink流计算结果是可靠的。当遇到检查点时,检查点将异步保存数据流记录的位置和操作员的中间状态。当Flink任务失败时,您可以从最新保存的检查点还原任务。它似乎是一个非常强大的机制,但为什么你有时会运行一个很好的Flink任务并且总是自己重启它?即使检查点保证一次性,对于实时要求苛刻的业务场景,每次重启所花费的时间也是如此。这可能导致业务不可用。也许你经常遇到这种情况,检查点再次失败?连续失败?任务管理器内存爆裂?这些情况很容易导致Flink任务失败,那么你需要考虑你所处的业务场景,选择是否合理的Flink State后端?

让我们首先深入思考。我们在哪里设置检查点以保存这些状态快照? Flink支持哪些保存方法?这些保存方法适用于哪些方案?状态快照以什么形式保存?考虑到这一点,我们可以知道应该为现有的业务场景选择哪种状态后端。

Flink支持的州后端

MemoryStateBackend默认,小状态,本地调试使用

FsStateBackend大状态,长窗口,高可用性场景

RocksDBStateBackend超大状态,长窗口,高可用性场景,增量检查点

MemoryStateBackend

MemoryStateBackend将键值的中间状态和窗口运算符中间结果保存在哈希表中。当数据流遇到检查点障碍时,MemoryStateBackend将状态快照发送到JobManager(主服务器)并将其存储在Java堆中。

我们来看看MemoryStateBackend的四个构造函数

image.php?url=0MZWrxNj3l

可以看出,Flink默认使用异步保存(避免阻塞数据流计算)快照MemoryStateBackend,每个状态快照的默认大小最多为5MB。状态快照大小不能超过可在JobManager和TaskManager之间发送的最大消息大小。可以传递此配置。设置了Akka.framesize(默认值为10M)(文档2),总快照大小不能超过JobManager的内存。

一般来说,MemoryStateBackend使用起来简单快捷,但使用场景有限,可用于本地小数据的开发和调试,一般在大数据生产环境中,MemoryStateBackend不能满足要求。

FsStateBackend

FsStateBackend需要配置存储文件系统,可以是hdfs路径:或文件系统路径:

FsStateBackend将流计算数据状态存储在TaskManager的内存中。当数据流遇到检查点障碍时,数据快照存储在配置的文件系统中,少量检查点元数据存储在JobManager内存中。

我们来看看FsStateBackend的三个构造函数

Public FsStateBackend(String checkpointDataUri,boolean asynchronousSnapshots)抛出IOException {

这(new Path(checkpointDataUri),asynchronousSnapshots);

}

Public FsStateBackend(Path checkpointDataUri,boolean asynchronousSnapshots)抛出IOException {

这(checkpointDataUri.toUri,asynchronousSnapshots);

}

//fileStateSizeThreshold默认为1024

Public FsStateBackend(URI checkpointDataUri,int fileStateSizeThreshold,boolean asynchronousSnapshots)抛出IOException {

Preconditions.checkArgument(fileStateSizeThreshold=0,文件状态大小的阈值必须为零或更大。);

Preconditions.checkArgument(fileStateSizeThreshold=1048576,文件状态大小的阈值不能大于%s,新对象{1048576});

this.fileStateThreshold=fileStateSizeThreshold;

this.basePath=validateAndNormalizeUri(checkpointDataUri);

this.asynchronousSnapshots=asynchronousSnapshots;

}

如您所见,FsStateBackend默认使用异步快照。每个快照文件大小需要: [0,1048576],状态快照大小不能超过TaskManager的内存。但是,状态快照最终保存在文件系统中,因此FsStateBackend适用于大型数据生产环境,可以处理长窗口,大状态或大型键值状态任务。

RocksDBStateBackend

与FsStateBackend一样,RocksDBStateBackend也需要配置存储的文件系统,但RocksDBStateBackend不仅限于TaskManager的内存。它使用嵌入式本地数据库RocksDB将流计算数据状态存储在本地磁盘上,并在数据流中遇到检查点。在屏障的情况下,当计算超大状态流时,整个RocksDB数据库数据或仅增量数据快照存储在配置的文件系统中,并且少量检查点元数据存储在JobManager存储器中。

我们来看看RocksDBStateBackend

的构造函数

Public RocksDBStateBackend(String checkpointDataUri,boolean enableIncrementalCheckpointing)抛出IOException {

这个(新路径(checkpointDataUri).toUri,enableIncrementalCheckpointing);

}

与MemoryStateBackend和FsStateBackend不同,您可以通过设置asynchronousSnapshots来设置是否设置异步快照。 RocksDBStateBackend使用异步快照模式,但您可以使用enableIncrementalCheckpointing设置是否使用增量保存。

增量保存意味着每个检查点仅保存对先前完成的检查点的所有更改,而不是状态后端的完整且独立的备份。对于每个检查点,将保存完整的状态快照。增量保存可以显着减少每个检查点的时间,但也可能导致重新启动任务时恢复时间变长。增量保存检查点不会无限增长,旧检查点会自动合并和裁剪。默认情况下不启用增量保存,需要使用enableIncrementalCheckpointing=true启用。

由于RocksDB的JNI API是基于字节的,因此对于键值状态,单个键和单个值的大小最多为2 ^ 31个字节。 RocksDBStateBackend保存的状态快照大小仅受磁盘空闲空间的限制,因此非常适用于大状态,长窗口或大键状态的有状态流量计算任务,而RocksDBStateBackend目前仅支持增量检查点的状态。后端。增量检查点非常适用于状态非常大的场景,但RocksDBStateBackend需要对状态快照相关操作进行序列化和反序列化,这会影响程序吞吐量。

收集报告投诉

频道热点
  1. 7月11日,高新区创建了省级食品安全城市新闻发布会。公共网络和海报新闻记者从会上了解到,今年,高新区市?
  2. “如果不坏,就不要修理它。”这句话并不存在于赛车运动员的脑海中,因为他们对汽车改进的追求是无止境的。
  3. “如果不坏,就不要修理它。”这句话并不存在于赛车运动员的脑海中,因为他们对汽车改进的追求是无止境的。
  4. 生活就像一个碗有人说生活就像诗歌,但诗歌可以陶醉。有人说生活就像一场梦,但梦想总会唤醒。还有人说生活
  5. 生活就像一个碗有人说生活就像诗歌,但诗歌可以陶醉。有人说生活就像一场梦,但梦想总会唤醒。还有人说生活
  6. 纪念|永远年轻的尚小英“潇潇走了。我所能做的只是重读她写的文字。我不希望能完全读懂她。相反,在她离开?
  7. 文字说明:比赛网站完整的体育地图今天下午,在2019年,国际排联世界女排联赛决赛进入南京的最后一天。在第
  8. 7月11日,高新区创建了省级食品安全城市新闻发布会。公共网络和海报新闻记者从会上了解到,今年,高新区市?
  9. 纪念|永远年轻的尚小英“潇潇走了。我所能做的只是重读她写的文字。我不希望能完全读懂她。相反,在她离开?
  10. 7月11日,高新区创建了省级食品安全城市新闻发布会。公共网络和海报新闻记者从会上了解到,今年,高新区市?
新闻排行
  1. [阅读之光]这个夏天独家8本书,读它凉爽的夏天!夏天很想来找我们即使下雨也不能停止的闷热感觉有一个空调?

    [阅读之光]这个夏天独家8本书,读它凉爽的夏天!夏天很想来找我们即使下雨也不能停止的闷热感觉有一个空调?...

  2. [阅读之光]这个夏天独家8本书,读它凉爽的夏天!夏天很想来找我们即使下雨也不能停止的闷热感觉有一个空调?

    [阅读之光]这个夏天独家8本书,读它凉爽的夏天!夏天很想来找我们即使下雨也不能停止的闷热感觉有一个空调?...

  3. 教导人和前男友,半年内我赚了50万.爱可以用钱买吗?这个无法解决的问题可能已经为某些人提供了答案。在情?

    教导人和前男友,半年内我赚了50万.爱可以用钱买吗?这个无法解决的问题可能已经为某些人提供了答案。在情?...

  4. 文字说明:比赛网站完整的体育地图今天下午,在2019年,国际排联世界女排联赛决赛进入南京的最后一天。在第

    文字说明:比赛网站完整的体育地图今天下午,在2019年,国际排联世界女排联赛决赛进入南京的最后一天。在第...

  5. 住房公积金存款基数上下限6月29日,北京住房公积金网发布公告,调整2019年北京住房公积金的上限和下限。据?

    住房公积金存款基数上下限6月29日,北京住房公积金网发布公告,调整2019年北京住房公积金的上限和下限。据?...

  6. 不知不觉,今年上半年过去了。你有没有在年初获得国旗?没关系,下半场开始了。我们可以再次重新标记在深圳

    不知不觉,今年上半年过去了。你有没有在年初获得国旗?没关系,下半场开始了。我们可以再次重新标记在深圳...

  7. 住房公积金存款基数上下限6月29日,北京住房公积金网发布公告,调整2019年北京住房公积金的上限和下限。据?

    住房公积金存款基数上下限6月29日,北京住房公积金网发布公告,调整2019年北京住房公积金的上限和下限。据?...

  8. 住房公积金存款基数上下限6月29日,北京住房公积金网发布公告,调整2019年北京住房公积金的上限和下限。据?

    住房公积金存款基数上下限6月29日,北京住房公积金网发布公告,调整2019年北京住房公积金的上限和下限。据?...

  9. 生活就像一个碗有人说生活就像诗歌,但诗歌可以陶醉。有人说生活就像一场梦,但梦想总会唤醒。还有人说生活

    生活就像一个碗有人说生活就像诗歌,但诗歌可以陶醉。有人说生活就像一场梦,但梦想总会唤醒。还有人说生活...

  10. QianfengJAVADevelopmentInstitute我想分享3天前Flink的检查点机制可以保证完全一次的功能,因此Flink流计?

    QianfengJAVADevelopmentInstitute我想分享3天前Flink的检查点机制可以保证完全一次的功能,因此Flink流计?...

日期归档
友情链接