2.10 Flink
对于实时数据的采集处理,大数据系统中还出现了一个流行度上升比较快的工具——Flink。它是一个基于流式的计算框架实现。说是基于流式,是因为Flink是基于事件驱动的,事件可以被理解为消息。这样就可以根据消息状态的改变触发对应的计算执行,从而达到流式计算的目的。
其核心架构原理图如图2-12所示。
图2-12 Flink核心架构原理图
从图2-12中可以看出,Actor系统可以被理解为消息状态管理的容器,通过Actor系统组件可实现Flink客户端与作业管理器(Job Manager)之间的任务状态更新等操作,以及作业管理器与任务管理器(Task Manager)之间的任务部署和状态值传递操作。作业管理器一般通过ZooKeeper服务来保证其高可用性。
企业选择Flink作为流处理工具一般有以下原因:
1)在高吞吐量和低延迟的业务场景下,真正地可以基于流处理方式进行数据处理。Flink支持在时间窗口、统计窗口、会话(Session)窗口以及数据驱动的窗口操作。这些窗口均可以通过灵活的触发条件来定制,以支持复杂的流计算模式、支持精准的一次性处理。这种数据处理方式要优于Spark Streaming的微批处理方式。
2)轻量级的容错性设计,允许系统拥有高吞吐量,同时还能提供强一致性的保障。
3)Flink在JVM(Java Virtual Machine,Java虚拟机)中实现了自己的内存管理,应用可以超出主内存的大小限制,并且会承受更少的垃圾收集开销。其自动优化的空间和灵活性都比较高。
Flink安装与配置的步骤如下。
1)在Apache网站下载Flink的对应组件flink-1.3.0-bin-hadoop2-scala_2.11.tgz,并确认Scala已经安装完毕。
2)解压缩并重命名Flink:
将参数名FLINK_HOME添加到系统环境变量,参数值是Flink的安装目录。
配置$FLINK_HOME/conf/flink-conf.yaml,修改必要的配置文件参数。其详细内容可参阅11.3.1节。
3)Flink运行验证。
启动Flink并验证相关服务:
利用jps命令查看Flink的相关服务是否存在。