什么是Apache Flink? —运维篇

什么是Apache Flink? —运维篇

Apache Flink是用于无界和有界的数据流上的有状态计算的框架。由于许多流应用程序的设计目的是在最少的停机时间内连续运行,因此流处理器必须提供出色的故障恢复能力,以及在运行时监控和维护应用程序的工具。

Apache Flink将重点放在流处理的操作方面。在这里,我们将说明Flink的故障恢复机制,并介绍用来管理和监督正在运行的应用程序的功能。


7 * 24小时稳定运行

机器和处理过程的故障在分布式系统中无处不在。像Flink这样的分布式流处理器必须从故障中恢复,才能7*24运行流应用程序。很显然,这不仅意味着在发生故障后重新启动应用程序,而且还意味着确保其内部状态保持一致,从而使应用程序可以像从未发生过故障一样继续进行处理。

Flink提供了一些功能来确保应用程序保持运行并保持一致:

  • 一致性检查点:Flink的故障恢复机制是通过建立在应用程序状态一致性检查点实现的,如果发生故障,将重新启动应用程序,并从最新的检查点加载其状态。结合可重置的数据源,这个功能可以保证一次状态一致性。
  • 高效的检查点:如果一个应用程序要维护TB量级的状态信息,那么对应用程序的状态进行检查点的开销可能是会非常昂贵。Flink可以执行异步和增量检查点,为了减少检查点对应用程序延迟SLA的影响。
  • 端到端的精确一次:Flink具有针对特定存储系统的事务接收器,即使在发生故障的情况下,也可以确保仅将数据精确地写入一次。
  • 与集群管理器的集成:Flink与Hadoop YARN,Mesos或Kubernetes等集群管理器紧密集成。当某个流程失败时,新流程将自动启动以接管其工作。
  • 高可用性服务的设置:Flink具有高可用性模式,可消除所有单点故障。HA模式是基于经过实践检验的服务Apache ZooKeeper实现的,可实现可靠的分布式协调服务。

更新,迁移,暂停和恢复您的应用程序

驱动关键业务服务的流应用是经常需要维护的。需要修复错误,并需要改进或实现新功能。但是,要更新有状态的流应用程序并非易事。通常,一个人无法轻易地停止应用程序并重新启动一个固定或改进的版本,因为一个人无法承受失去应用程序状态的负担。

Flink的保存点是一项独特而强大的功能,可以解决更新有状态的应用程序的问题以及许多其他相关的挑战。保存点是应用程序状态的一致性快照,因此与检查点非常的相似。但是,与检查点相比,保存点需要手动触发,并且在停止应用程序时不会自动将其删除。保存点可用于启动状态兼容的应用程序并初始化其状态。保存点有以下的功能:

  • 应用程序升级:保存点可用于升级应用程序。可以从先前版本的应用程序中获取的保存点重新启动应用程序的固定版本或改进版本。也可以从较早的时间点启动应用程序(如果存在这样的保存点),以修复有缺陷的版本产生的错误结果。
  • 集群迁移:使用保存点,可以将应用程序迁移(或克隆)到不同的群集。
  • Flink版本更新:可以使用保存点将应用程序迁移在新的Flink版本上运行。
  • 应用扩展:保存点可用于增加或减少应用程序的并行性。
  • 便于A/B测试及假设分析场景对比结果:可以通过从同一保存点启动所有版本来比较应用程序的两个(或多个)不同版本的性能或质量。
  • 暂停和恢复服务:可以通过保存点并停止它来暂停应用程序。在以后的任何时间点,都可以从保存点恢复应用程序。
  • 存档服务:可以将保存点存档,以便能够将应用程序的状态重置为较早的时间点。

监控和控制应用服务

和其他的服务一样,需要对持续运行的流应用程序进行监控并将其集成到运营基础架构中,例如一个组件的监控服务及日志服务等。监控有助于预测问题并提前做出反应。通过日志服务,可以分析调查故障发生的根本原因,最后,易于控制运行中的应用程序访问的接口是一个重要的功能。

Flink与许多常用的日志记录和监视服务很好地集成在一起,并提供REST API来控制应用程序和查询信息。

  • Web UI:Flink具有Web UI,可以检查,监视和调试正在运行的应用程序。它还可以用于提交执行以执行或取消执行。
  • 日志记录:Flink实现流行的slf4j日志记录接口,并与日志记录框架log4j或logback集成。
  • 指标服务:Flink具有复杂的指标系统,用来收集并报告系统和用户定义的指标。指标可以导出到多个报告器,包括JMX,Ganglia,Graphite,Prometheus,StatsD,Datadog和Slf4j。
  • REST API:Flink提供了REST API来提交新应用程序,获取正在运行的应用程序的保存点或取消应用程序。REST API还提供了正在运行或已完成的应用程序的元数据和收集的指标。

你可能感兴趣的:(大数据技术之Flink)