Flink 笔记 DN

本文深入探讨了Apache Flink作为一个实时计算框架的优势,包括其高吞吐、低延迟、事件时间处理、有状态计算、灵活窗口操作、分布式快照容错以及独立内存管理等特性。此外,还介绍了Flink的单机模式配置步骤,并展示了如何运行官方的WordCount示例。
摘要由CSDN通过智能技术生成

Flink 笔记

Flink介绍

Flink近年来逐步被人们所熟知,不仅是因为Flink提供同时支持高吞吐、低延迟和exactly-once语义的实时计算能力,同时Flink还提供了基于流式计算引擎处理批量数据的计算能力,真正意义上实现了批流统一,同时随着阿里对Blink的开源,极大地增强了Flink对批计算领域的支持。众多优秀的特性,使得Flink成为开源大数据数据处理框架中的一颗新星,随着国内社区不断推动,越来越多的国内公司开始选择使用Flink作为实时数据处理技术。

在这里插入图片描述

Flink的优势

在这里插入图片描述
1)同时支持高吞吐、低延迟、高性能
Flink是目前开源社区中唯一一套集高吞吐、低延迟、高性能三者于一身的分布式流式数据处理框架。像Apache Spark也只能兼顾高吞吐和高性能特性,主要因为在Spark Streaming流式计算中无法做到低延迟保障;而流式计算框架Apache Storm只能支持低延迟和高性能特性,但是无法满足高吞吐的要求。而满足高吞吐、低延迟、高性能这三个目标对分布式流式计算框架来说是非常重要的。

2)支持事件时间(Event Time)概念
在流式计算领域中,窗口计算的地位举足轻重,但目前大多数框架窗口计算采用的都是系统时间(Process Time),也是事件传输到计算框架处理时,系统主机的当前时间。Flink能够支持基于事件时间(Event Time)语义进行窗口计算,也就是使用事件产生的时间,这种基于事件驱动的机制使得事件即使乱序到达,流系统也能够计算出精确的结果,保持了事件原本产生时的时序性,尽可能避免网络传输或硬件系统的影响。

3)支持有状态计算
Flink在1.4版本中实现了状态管理,所谓状态就是在流式计算过程中将算子的中间结果数据保存在内存或者文件系统中,等下一个事件进入算子后可以从之前的状态中获取中间结果中计算当前的结果,从而无须每次都基于全部的原始数据来统计结果,这种方式极大地提升了系统的性能,并降低了数据计算过程的资源消耗。对于数据量大且运算逻辑非常复杂的流式计算场景,有状态计算发挥了非常重要的作用。

4)支持高度灵活的窗口(Window)操作
在流处理应用中,数据是连续不断的,需要通过窗口的方式对流数据进行一定范围的聚合计算,例如统计在过去的1分钟内有多少用户点击某一网页,在这种情况下,我们必须定义一个窗口,用来收集最近一分钟内的数据,并对这个窗口内的数据进行再计算。Flink将窗口划分为基于Time、Count、Session,以及Data-driven等类型的窗口操作,窗口可以用灵活的触发条件定制化来达到对复杂的流传输模式的支持,用户可以定义不同的窗口触发机制来满足不同的需求。

5)基于轻量级分布式快照(Snapshot)实现的容错
Flink能够分布式运行在上千个节点上,将一个大型计算任务的流程拆解成小的计算过程,然后将tesk分布到并行节点上进行处理。在任务执行过程中,能够自动发现事件处理过程中的错误而导致数据不一致的问题,比如:节点宕机、网路传输问题,或是由于用户因为升级或修复问题而导致计算服务重启等。在这些情况下,通过基于分布式快照技术的Checkpoints,将执行过程中的状态信息进行持久化存储,一旦任务出现异常停止,Flink就能够从Checkpoints中进行任务的自动恢复,以确保数据在处理过程中的一致性。

6)基于JVM实现独立的内存管理
内存管理是所有计算框架需要重点考虑的部分,尤其对于计算量比较大的计算场景,数据在内存中该如何进行管理显得至关重要。针对内存管理,Flink实现了自身管理内存的机制,尽可能减少JVM GC对系统的影响。另外,Flink通过序列化/反序列化方法将所有的数据对象转换成二进制在内存中存储,降低数据存储的大小的同时,能够更加有效地对内存空间进行利用,降低GC带来的性能下降或任务异常的风险,因此Flink较其他分布式处理的框架会显得更加稳定,不会因为JVM GC等问题而影响整个应用的运行。

7)Save Points(保存点)
对于7*24小时运行的流式应用,数据源源不断地接入,在一段时间内应用的终止有可能导致数据的丢失或者计算结果的不准确,例如进行集群版本的升级、停机运维操作等操作。值得一提的是,Flink通过Save Points技术将任务执行的快照保存在存储介质上,当任务重启的时候可以直接从事先保存的Save Points恢复原有的计算状态,使得任务继续按照停机之前的状态运行,Save Points技术可以让用户更好地管理和运维实时流式应用。

Flink单机模式配置

实现步骤:

1.到flink官网(https://archive.apache.org/dist/flink/flink-1.9.1/)下载安装包:
flink-1.9.1-bin-scala_2.11.tgz

2.上传到服务器的/home/software目录下,解压
执行:tar -xvf flink-1.9.1-bin-scala_2.11.tgz

3.进入flink安装目录的conf目录,编辑flink-conf.yaml 文件,如下所示:(把localhost变为主机名)
在这里插入图片描述
4.编辑conf目录下的masters文件,如下所示:
在这里插入图片描述
5.启动flink单机环境。进入flink安装目录的bin目录执行:

./start-cluster.sh

然后通过jps查看,出现下面的两个进程表示成功
在这里插入图片描述
6.打开浏览器,输入flink的webui页面地址 http://192.168.150.137:8081
在这里插入图片描述

运行flink官方提供的wordcount示例

1.先通过nc启动本机端口的8000 Socket数据源
在这里插入图片描述
2.然后进入flink的bin目录,执行:
./flink run …/examples/streaming/SocketWindowWordCount.jar --port 8000
在这里插入图片描述
3.此时可以发现flink的webui控制台有监控到:
在这里插入图片描述
在这里插入图片描述
4.通过nc输入单词数据
在这里插入图片描述
5.去flink安装目录下的log目录下的flink-root-taskexecutor-0-hadoop01.out查看处理结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值