Flink 操作
Apache Flink是一个支持有边界的和无边界的数据流的有状态计算的框架。因为很多流式应用被设计成在最短的停机时间内持续运行,所以一个流式处理器必须提供卓越的失败恢复能力,同时提供工具在应用运行的时候监控和维护他们。
Flink非常关注流式处理的操作方面。下面,我们说明一下Flink的失败恢复机制并且列出他的管理和监控运行程序的特性。
一、 24/7不间断地运行你的应用
机器和处理失败在分布式系统中是非常常见的。为了可以七天二十四小时(24/7)的运行流式应用,像Flink这样的分布式流式处理器必须能够从失败中恢复。很明显,这意味着不仅仅是在失败以后重启嘤嘤,同时也要保证它内部状态的持续性,也就是说应用就好像什么也没有发生一样的运行。
Flink提供了几个特性来保证应用保持运行并且保持一致性:
- 一致的检查点(Consistent Checkpoints):Flink的恢复机制是基于应用的状态的一致性检查点。万一发生了失败,应用会重启并且它的状态会从最近的检查点中恢复。
- 高效的检查点(Efficient Checkpoints):如果应用管理TB的状态信息,那么该应用的状态检查点将是非常昂贵的。Flink可以执行异步的增量检查点,这样是为了使服务的应用等级协议(SLAs)延迟非常小。
- 端到端的仅仅一次(End-to-End Exactly-Once):Flink 针对特定的存储系统提供了支持事务的sink以保证数据仅仅被写一次,即使是在失败的情况下。
- 与集群管理器集成(Integration with Cluster Managers):Flink与集群管理器紧密集成,比如Hadoop Yarn, Mesos 或者Kubernetes。当一个进程失败的时候,另一个进程会自动的启动并且接管他的工作。
- 高可用的设置(High-Availability Setup):Flink提供了一种高可用性模式,可以消除所有的单点故障。高可用性模式是基于Apache Zookeeper的,它为可靠地分布式协调提供了久经考验的服务。
二、更新、迁移、暂停以及重启你的应用
支持关键业务的流式应用需要被维护。bug需要被修复,改进或者新功能需要被实现。然而,更新一个有状态的流式应用,并不是简单的。经常来说我们并不能简单的停止应用并且重启一个已修复的或者改进的版本,因为我们不能失去应用的状态。
Flink的SavePoints是惟一的并且非常强大的特性,它可以解决更新有状态的应用的问题以及相关的挑战。保存点是一个应用状态的连续快照,因此它与检查点非常类似。然而与检查点相比,保存点需要手动的触发,并且当应用停止以后不会自动的移除。保存点可以用来启动状态兼容的应用并且初始化它的状态。保存点支持以下特性:
- 应用升级(Application Evolution):保存点可以被用于升级应用。应用的修复bug或者升级的版本可以从保存点重启,保存点是来源于这个应用的先前版本。它也可以从更早的保存点来启动应用(假如这样的保存点存在的话),这样可以用来修复有缺陷的版本产生的结果。
- 集群迁移(Cluster Migration):使用保存点,应用可以迁移或者克隆岛不同的集群。
- Flink 版本更新(Flink Version Updates):使用保存点,可以把一个应用迁移到新的Flink版本运行。
- A/B测试以及假定场景(A/B Test And What-If Scenarios):同一个应用的两个(或者更多)不同版本的性能或者质量可以通过从相同的保存点来启动所有的版本进行比较。
- 暂停和重启(Pause and Resume):可以通过产生保存点然后停止来暂停应用。在随后的任意时间,这个应用可以通过这个保存点来重启。
- 归档(Archiving):保存点可以被归档,这样可以重置应用的状态到更早的时间点。
三、监控和控制你的应用
正如其他服务一样,持续运行的流式应用需要被监控并且集成到一个组织的基础的操作中去,比如监控和日志服务。监控有助于预测问题并且提前做出反应。日志有助于在研究失败时进行根本问题分析。最后,控制运行的应用的简单访问的接口是重要的特性。
Flink与许多常见的日志和监控服务集成的很好,并且提供了REST API来控制应用和查询信息。
- Web UI:Flink提供了web UI来检查、监控和调试运行的应用。它也可以用于提交执行或者取消他们的执行操作。
- Logging:Flink 实现了流行的slf4j日直接扣并且与日志框架log4j或者logback相集成。
- Metrics:Flink 提供了一套复杂的指标系统来收集和报告系统和用户定义的指标。指标可以被导出到不同的报告,比如JMX、Ganglia、Graphite、 Prometheus、 StatsD、 Datadog以及 Slf4j。
- REST API:Flink 提交了REST API来提交一个新的应用,产生一个正在运行的应用的保存点,或者取消(cancel)应用。REST API也用来披露元数据(meta data)以及收集运行中或者已完成的应用的指标。
上一篇: 小程序实现旋转动画效果