Flink
Bacon肖
从事大数据开发和架构设计,技术特长是Hadoop、Spark、Flink、Doris
展开
-
Flink面试总结
Flink概括Flink认为Batch是Streaming 的一个特例,所以Flink底层引擎是一个流式引擎,在上面实现了流处理和批处理。而窗口(window)就是从Streaming 到Batch的一个桥梁。Flink提供了非常完善的窗口机制,这是Flink最大的亮点之一(其他的亮点包括消息乱序处理,和checkpoint机制)。Window是一种切割无限数据集为有限块并进行相应计算的处理手段(跟keyBy一样,也是一种分组手段,只不过同一event可能被分到多个组)Flin.原创 2020-09-05 10:21:32 · 692 阅读 · 0 评论 -
企业级大数据技术框架
软件环境:Linux红帽6.4、Ambari、Hadoop、ZooKeeper、Spark、Flink、hive、kylin、Hbase、Phoenix、Flume、Kafka、kettle、canal、Azkaban、Oacle12C、MySQL 建设基于Hadoop的大数据管理平台,与各类业务系统和海量数据服务平台对接接口,获取海量数据,实现数据采集、数据分析、业务模型计算以及大数据分布式存储;基于各类业务模型,开发完成元数据管理、数据封装、数据接入、数据处理(数据清洗、数据标准化)、数据关联、数..原创 2020-09-02 09:16:04 · 410 阅读 · 0 评论 -
flink的实时数据同步
构建基于flink、kafka、MySQL、hbase的实时数仓,实现:(1)业务数据全量同步到数据仓库;(2)业务数据实时增量同步到数据仓库,使用Kafka+canal实现增量数据采集。数仓架构设计:(1)全量拉取模块,采用flink-jdbc,或者sqoop(2)增量实时同步模块,使用Kafka+canal实现增量数据采集。canal是通过模拟成为mysql 的slave节点的方式,监听mysql 的binlog日志来获取数据,binlog日志就是数据增删改的记录,canal解析binl原创 2020-09-01 16:16:05 · 4245 阅读 · 0 评论 -
Flink on Yarn的两种运行方式
Flink on Yarn(yarn session 和 flink run 两种模式)session:这种方式需要先向yarn申请一块空间后,再提交作业,资源永远保持不变。如果资源满了,下一个作业就无法提交,只能等到yarn中的其中一个作业执行完成后,释放了资源,那下一个作业才会正常提交,这种方式资源被限制在session中,不能超过。flink run:一个任务会对应一个job,每提交一个作业会根据自身的情况,向yarn申请资源,直到作业执行完成,并不会影响下一个作业的正常运行。这种方式就需要确保集原创 2020-09-01 16:14:17 · 1908 阅读 · 0 评论 -
flink 用户购买行为跟踪
需求: 电商公司出于提高用户的复购率、粘连度等目的经常会推出各种营销手段,运营部们希望数据中心能实时跟踪用户的购买行为作为推送各种优惠的依据,能实时把可以推送优惠券的用户推送给相关应用;分析:用户的购买行为可以用很多指标来衡量,例如:购买路径长度、购买次数、购买频率、感兴趣类日、感兴趣商品等等。 本项目以跟踪用户购买路径长度为例来做分析:用户在手机App上操作行为我们抽象为事件,通过跟踪用户事件来实时触发指定的操作,比如推送优惠券。在众多的事件中,购买路径长度是推送优惠券比较关注的一个...原创 2020-09-01 16:16:18 · 351 阅读 · 0 评论 -
flink training 打车实时计算项目
本文介绍一个开源的flink项目,主要提供了一些业务场景和flink api结合的case。重点是为Flink的状态和时间管理api提供直观的介绍,掌握了这些基础知识后,能够更好地理解和运用flink。GitHub地址:http://training.ververica.com/trainingData 建议clone到本地练习- 如何建立一个环境来开发Flink程序 - 如何实现流数据处理管道 - Flink管理状态 - 如何使用事件时间一致计算准确的分析 - 如何在连续流上构建事件...原创 2020-08-31 16:51:58 · 769 阅读 · 2 评论 -
Flink 搭建部署
1.1本地模式部署1.1.1 将压缩包解压[root@master root]# tar -zxvf flink-1.9.1-bin-scala_2.11.tgz -C /usr/local/官方下载地址:https://flink.apache.org/zh/downloads.html1.1.2 创建软连接(文件名太长操作不方便,就是改个名)[root@master local]# ln -s flink-1.9.1/ flink.1.3 配置环境变量[root@ma原创 2020-08-31 16:16:49 · 318 阅读 · 0 评论 -
Flink的提交/运行方式
Flink的多种提交/运行方式Flink具有多种提交方式,比如:常用的local模式,stantalone模式,yarn模式,k8s等。这里主要对比local,stantalone,yarn三种提交方式。 (1)Local 模式,JobManager 和 TaskManager 共用一个 JVM,只需要jdk支持,单节点运行,主要用来调试;(2)stantalone模式,Flink是Master/Slave架构,充当Master角色的是JobManager,充当Slave角色是TaskM..原创 2020-08-31 16:01:34 · 8696 阅读 · 2 评论 -
Flink 类型和序列化机制
序列化概念当两个进程在进行远程通信时,彼此可以发送各种类型的数据。无论是何种类型的数据,都会以二进制序列的形式在网络上传送。发送方需要把这个Java对象转换为字节序列,才能在网络上传送;接收方则需要把字节序列再恢复为Java对象。把Java对象转换为字节序列的过程称为对象的序列化。把字节序列恢复为Java对象的过程称为对象的反序列化。对象的序列化主要有两种用途:1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中;2) 在网络上传送对象的字节序列。序列化的好处:减少数据在内存、硬.原创 2020-08-31 12:11:32 · 4132 阅读 · 0 评论 -
flink 通过两阶段提交实现exactly-once
一、flink Exactly-Once与At-Least-Once 关于消息的消费、处理语义可以分为三类: 1. at most once : 至多一次,表示一条消息不管后续处理成功与否只会被消费处理一次,那么就存在数据丢失可能 2\. exactly once : 精确一次,表示一条消息从其消费到后续的处理成功,只会发生一次 3\. at least once :至少一次,表示一条消息从消费到后续的处理成功,可能会发生多次 在我们程序处理中通常要求能够满足exec原创 2020-08-31 11:44:27 · 706 阅读 · 0 评论 -
Flink 的背压机制(Back Pressure)
什么是 Back Pressure如果看到任务的背压警告(如 High 级别),这意味着 生成数据的速度比下游算子消费的的速度快。以一个简单的 Source -> Sink 作业为例。如果能看到 Source 有警告,这意味着 Sink 消耗数据的速度比 Source 生成速度慢。Sink 正在向 Source 施加反压。许多情况都会导致背压。例如,GC导致传入数据堆积,或者数据源在发送数据的速度上达到峰值。如果没有正确处理反压力,可能会导致资源耗尽,甚至在最坏的情况下,数据丢失。看一个简原创 2020-08-31 11:32:30 · 7456 阅读 · 0 评论 -
Flink MiniBatch的作用
在Blink的流式任务中,State相关的操作通常都会成为整个任务的性能瓶颈。实时计算部-查询和优化团队开发了MiniBatch功能,大幅降低了State操作的开销。假设数据流在短时间内累计有N条数据(分布在M个key上)开启minibatch的前后对比:操作state由2N次转变为2M次MiniBatch的一个典型场景-无限流上的GroupBy在Blink-SQL中,通常会使用无限流的GroupBy来完成去重或者聚合计算,一个简单的例子如下SELECT a, count(b) FROM原创 2020-08-31 11:25:49 · 1952 阅读 · 0 评论 -
Flink 清理 Checkpoint的原理和机制
本文涉及以下知识:Flink Checkpoint 目录的清除策略 生产环境应该选择哪种清除策略 生产环境必须定期脚本清理 Checkpoint 和 Savepoint 目录 RocksDB 增量 Checkpoint 实现原理 如何合理地删除 Checkpoint 目录? 通过解析 Flink Checkpoint 的元数据信息来合理清理 Checkpoint 信息1. 故障背景1.1 Flink Checkpoint 目录的清除策略如下图所示,红圈处的一行配置 env.getCh原创 2020-08-31 09:36:18 · 1948 阅读 · 1 评论 -
Flink的Process Function(低层次操作)和状态
Process Function(过程函数)ProcessFunction是一个低层次的流处理操作,允许返回所有(无环的)流程序的基础构建模块: 1、事件(event)(流元素) 2、状态(state)(容错性,一致性,仅在keyed stream中) 3、定时器(timers)(event time和processing time, 仅在keyed stream中)ProcessFunction可以认为是能够访问到keyed state和timers的FlatMapFunction,输原创 2020-08-31 09:23:24 · 843 阅读 · 0 评论 -
Flink CEP机制与原理
1 复杂事件1.1 引入在Flink RichFunction&state这篇博文中我们一起学习了下如何结合使用keyBy state和TreeSet在一条无界流中进行全局的分组求top n操作,可以解决一些实时看板相关的业务问题。在Flink BroadcastStream这篇博文中我们也学习到了如何使用广播流来处理监控规则经常变更的程序日志监控业务。那么现在我们又遇到了一个新的业务需求:判断一个用户在点击了商品之后是否立即进行了下单付款操作,如果是的话将用户名和点击时间以及下单付款时转载 2020-08-31 08:45:50 · 1702 阅读 · 0 评论 -
Flink1.11.0+Kafka2.3.0+MySQL8的快速安装部署
环境准备本实战演示环节需要安装到Linux虚拟机的服务,包括:Flink 集群:用来运行 Flink 任务。 Kafka 集群:用来作为数据源。 MySQL 数据库:用来作为结果表。虚拟机最好是CenOs7以上的版本,这样会支持docker,后续一些组件可以采用docker的方式部署特别说明如果我们平时是用本机window编写IDEA,可以不用着急安装虚拟机上面的FlinkFlink 集群安装下载 Flink 1.11.0安装包并解压(解压目录flink-1.11.0):h..原创 2020-07-10 16:27:39 · 1211 阅读 · 0 评论 -
Error:scalac: missing or invalid dependency detected while loading class file ‘ScalaCaseClassSeriali
一、问题描述用IDEA编写flink的scala程序,编译没有错误但是运行出错,日志如下:Error:scalac: missing or invalid dependency detected while loading class file 'ScalaCaseClassSerializer.class'. Could not access type SelfResolvingTypeSerializer in object org.apache.flink.api.common.typeuti原创 2020-07-10 15:27:14 · 1926 阅读 · 0 评论 -
Flink读取Kafka 消息并批量写入到 MySQL8.0
前言说明环境搭建可参考《kafka+flink集成实例》本实例主要实现功能如下:模拟消息生成->Kafka->Flink->Mysql其中Flink做数据流收集并定时批量写入到Mysql环境依赖本例使用Intellij IDEA作为项目开发的IDE。首先创建Maven project,group为’com.zuoan’,artifact id为‘flink-kafka-mysql’,version为‘1.0-SNAPSHOT’。整个项目结构如图所示:特..转载 2020-07-09 08:54:51 · 2104 阅读 · 2 评论