flink介绍、安装以及基本使用
简介
flink主要解决大数据流式计算问题,举个例子,我们在一个系统中难免会遇到统计功能,例如淘宝里面每间商品每个月销量,微信里面每月支出收入等,当数据达到一定程度,光靠数据库里的sum group by是不现实的,多则千万条数据,更甚多个表关联后会达到数亿计的临时数据,实时的统计会使得数据库占用大量资源,这个时候就需要流式计算,针对实时的数据变更通过流式计算出统计的数据,相当于每时每刻都在增量的计算统计结果,查询统计时直接读取当前的结果即可。
而flink则提供了这么一个分布式平台,我们只需要使用flink提供的java包里的方法,定义好输入,怎么处理数据,输出结果,然后打包成jar,上传到flink集群,flink自会帮我们解析任务,拆分任务,分配给不同机器处理。

优点显而易见:低代码,我们不必自己每次都写一个庞大的程序去处理数据,只需要用它提供的方法定义流程即可;分布式,我们不必纠结一台机器能不能稳定提供计算的能力,它会自动帮我们分布到不同机器运行。
docker 安装flink
docker pull flink:scala_2.12-java8(注意,这里尽量不要用latest,因为默认最新一般都是java11版本,使用java8开发的jar包会启动失败)
启动jobmanager(master节点,管理程序,负责调度job运算)
docker run -d --name jm --network mynet -p 8081:8081 -e JOB_MANAGER_RPC_ADDRESS=jm flink:scala_2.12-java8 jobmanager
启动两个taskmanager(真正运算task的节点)
docker run -d --name tm1 --network mynet -e JOB_MANAGER_RPC_ADDRESS=jm flink:scala_2.12-java8 taskmanager
docker run -d --name tm2 --network mynet -e JOB_MANAGER_RPC_ADDRESS=jm flink:scala_2.12-java8 taskmanager
然后可以通过8081打开管理页面,查看集群状态。

下面为了更好模拟正常的集群,我们把每个taskmanager的task slot数改为2(默认是1):
进入容器,修改opt/flink/conf/flink-conf.yaml里的taskmanager.numberOfTaskSlots: 2 (注意,这里如果用-v 映射文件出来会导致容器启动失败,具体原因不明,建议启动容器后通过 cp 命令把修改好的配置覆盖进去)
然后重启两个taskmanager容器即可。
基本概念
我们先举一个简单的场景,有个生产者持续向kafka生产文本,我们想要持续统计出现单词的个数,然后输出到mysql,并且希望有两个节点同时进行统计提高效率。
jobmanager:集群的master节点,如简介所说,它负责解析用户开发的jar包,生成job流程,拆分不同的任务,并且分配去不同slot运行。上面的例子可以拆分成4个子任务,监听kafka数据源,统计A,统计B,输出mysql。
taskmanager:集群真正干活的节点。上面拆分的4个子任务会被安排到taskmanager节点执行。
taskslot:一个taskmanager可以有多个slot,每个slot都有自己独立的内存空间,上面拆分的子任务会分配到slot里执行,因此每个子任务都有自己的内存空间存储临时数据,互不干扰。一般情况下,建议与cpu核心数一样,充分利用cpu运算资源。
operation:算子,运算单元,一个子任务包含一个或多个算子,例如上面的统计单词个数,明显就是一个sum操作,就是一个算子。

一个job的过程一般存在4个基本的元素:
environment:获取环境,一般就是指的集群环境。
source:读取数据源,就是上面的从kafka获取数据。
transform:就是算子操作,真正运算逻辑。
sink:输出,上面的输出的mysql。
简单开发:
新建一个maven项目
引入flink相关maven包,引入log4j相关maven包,flink默认使用log4j,这里引入log4j的包只是本地启动调试的需要,不然logger初始化会失败
<dependencies>
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api&

本文介绍了Flink用于大数据流式计算的基本概念和优势,包括其解决实时统计问题的场景。详细讲述了如何使用Docker安装Flink集群,调整TaskManager的Task Slot,并提供了简单的批处理和流处理示例。此外,还讨论了Flink作业的线上运行流程和实战应用,如实时统计电商网站《奥特曼》相关商品销量。
最低0.47元/天 解锁文章
1512

被折叠的 条评论
为什么被折叠?



