Flink
文章平均质量分 57
星点xingdian
人生中最重要的是希望,有了希望之光,一切皆有可能!
展开
-
flink往mongo塞数据
mongo里塞数据,存在这个热点缓存问题。ip映射域名、有可能发http请求获取。这种是一对多。直接在mongo查。这种是一对一.spark streaming foreachpartition 几千/s;以下是我的改造方案, 可以试试这套flink任务1: mongo oplog —>hbase —>删redis缓存flink任务2 : 消费主流 查habse redis做缓存 如果主流是日志数据还得加flink状态缓存异步IO 一定程度上可以解决这种维表关联的问题 但是原创 2022-01-11 21:56:40 · 641 阅读 · 0 评论 -
Flink SQL一个案例
Flink Table & SQL 概述背景Flink SQL 是 Flink 实时计算为简化计算模型,降低用户使用实时计算门槛而设计的一套符合标准 SQL 语义的开发语言。DataStream 和 DataSet 两套 API,并没有做到事实上的批流统一,因为用户还是使用了2套API。正是因为 Flink Table & SQL 的加入,可以说 Flink 在某种程度上做到了事实上的批流一体。原理1、上图是一张经典的 Flink Table & SQL 实现原理图,原创 2021-06-25 17:29:21 · 822 阅读 · 1 评论 -
flink源码阅读-Flink intervalJoin 应用和原理
1.Flink中基于DataStream的join,只能实现在同一个窗口的两个数据流进行join,但是在实际中常常会存在数据乱序或者延时的情况,导致两个流的数据进度不一致,就会出现数据跨窗口的情况,那么数据就无法在同一个窗口内join。Flink基于KeyedStream提供的interval join机制,intervaljoin 连接两个keyedStream, 按照相同的key在一个相对数据时间的时间段内进行连接。2.代码示例将订单流与订单品流通过订单id进行关联,获得订单流中的会员id。其中原创 2020-12-12 18:51:19 · 527 阅读 · 1 评论 -
Flink 1.12 Release 文档
本文的 Release 文档描述了在 Flink 1.11 和 Flink 1.12 之间更改的重要方面,例如配置,行为或依赖项。如果您打算将 Flink 版本升级到 1.12,请仔细阅读这些说明。API移除掉 ExecutionConfig 中过期的方法移除掉了 ExecutionConfig#isLatencyTrackingEnabled 方法, 你可以使用 ExecutionConfig#getLatencyTrackingInterval 方法代替.移除掉了 ExecutionConfig原创 2020-12-11 23:19:39 · 945 阅读 · 0 评论 -
Flink+TensorFlow打造实时智能异常检测平台
Flink大数据流式计算1.前言随着互联网的迅速发展,各个公司都建立了自己的监控体系,用于提前发现问题降低损失,携程亦是如此。然而携程的监控体系存在以下三个问题:Flink 已经渐渐成为实时计算引擎的首选之一,从简单的实时 ETL 到复杂的 CEP 场景,Flink 都能够很好地驾驭。本文整理自携程实时计算负责人潘国庆在 QCon 全球软件开发大会(北京站)2019 的演讲,他介绍了携程如何基于 Flink 与 TensorFlow 构建实时智能异常检测平台,以解决规则告警系统准确率低、时效性低、规则原创 2020-12-08 23:53:10 · 1072 阅读 · 0 评论 -
Flink 如何选择状态后端
本文我们将深入探讨有状态的流处理,更确切地说是 Apache Flink 中不同的状态后端(state backend)。在以下部分,我们将介绍 Apache Flink 的 3 种状态后端,它们的局限性以及根据具体案例需求选择最合适的状态后端。在有状态的流处理中,当开发人员启用了 Flink 中的 checkpoint 机制,那么状态将会持久化以防止数据的丢失并确保发生故障时能够完全恢复。选择何种状态后端,将决定状态持久化的方式和位置。Flink 提供了三种可用的状态后端:MemoryStateBac原创 2020-12-07 23:13:31 · 579 阅读 · 0 评论 -
Flink维度关联的思路分析
在实际生产中,我们经常会有这样的需求,需要以原始数据流作为基础,然后关联大量的外部表来补充一些属性。例如,我们在订单数据中,希望能得到订单收货人所在省的名称,一般来说订单中会记录一个省的 ID,那么需要根据 ID 去查询外部的维度表补充省名称属性。在 Flink 流式计算中,我们的一些维度属性一般存储在 MySQL/HBase/Redis 中,这些维表数据存在定时更新,需要我们根据业务进行关联。根据我们业务对维表数据关联的时效性要求,有以下几种解决方案:实时查询维表关联预加载维表关联热存储关联其他原创 2020-12-06 12:18:26 · 922 阅读 · 0 评论 -
Flink 源码解析(十一)Credit以及背压问题
Credit漫谈在看上一部分的代码时,有一个小细节不知道读者有没有注意到,我们的数据发送端的代码叫做PartittionRequesetQueue.java,而我们的接收端却起了一个完全不相干的名字:CreditBasedPartitionRequestClientHandler.java。为什么前面加了CreditBased的前缀呢?1 背压问题在流模型中,我们期待数据是像水流一样平滑的流过我们的引擎,但现实生活不会这么美好。数据的上游可能因为各种原因数据量暴增,远远超出了下游的瞬时处理能力(回忆一原创 2020-12-02 22:24:25 · 842 阅读 · 0 评论 -
Flink 源码解析(十)数据在各个task之间exchange的过程
数据流转过程上一节讲了各层数据的抽象,这一节讲讲数据在各个task之间exchange的过程。1 整体过程看这张图:第一步必然是准备一个ResultPartition;通知JobMaster;JobMaster通知下游节点;如果下游节点尚未部署,则部署之;下游节点向上游请求数据开始传输数据.2 数据跨task传递本节讲一下算子之间具体的数据传输过程。也先上一张图:image_1cfmpba9v15anggtvsba2o1277m.png-357.5kB数据在task之间传递有如下几原创 2020-12-01 23:32:36 · 427 阅读 · 0 评论 -
Flink 源码解析(九)数据流转——Flink的数据抽象及数据交换过程
数据流转——Flink的数据抽象及数据交换过程本章打算讲一下flink底层是如何定义和在操作符之间传递数据的。1.1 flink的数据抽象1.1.1 MemorySegmentFlink作为一个高效的流框架,为了避免JVM的固有缺陷(java对象存储密度低,FGC影响吞吐和响应等),必然走上自主管理内存的道路。这个MemorySegment就是Flink的内存抽象。默认情况下,一个MemorySegment可以被看做是一个32kb大的内存块的抽象。这块内存既可以是JVM里的一个byte[],也可以原创 2020-11-30 22:28:15 · 844 阅读 · 0 评论 -
Flink 源码解析(八)checkpoint的生命周期
checkpoint的生命周期1.1我们结合源码来看看flink的checkpoint到底是如何实现其生命周期的:由于flink提供的SocketSource并不支持checkpoint,所以这里我以FlinkKafkaConsumer010作为sourceFunction。1.2.1 触发checkpoint要完成一次checkpoint,第一步必然是发起checkpoint请求。那么,这个请求是哪里发出的,怎么发出的,又由谁控制呢?还记得如果我们要设置checkpoint的话,需要指定chec原创 2020-11-29 09:15:43 · 552 阅读 · 0 评论 -
基于 Flink 的实时数仓建设实践(二)
实时平台初期架构在实时数据系统建设初期,由于对实时数据的需求较少,形成不了完整的数据体系。我们采用的是“一路到底”的开发模式:通过在实时计算平台上部署 Storm 作业处理实时数据队列来提取数据指标,直接推送到实时应用服务中。图1 初期实时数据架构但是,随着产品和业务人员对实时数据需求的不断增多,新的挑战也随之发生。数据指标越来越多,“烟囱式”的开发导致代码耦合问题严重。需求越来越多,有的需要明细数据,有的需要 OLAP 分析。单一的开发模式难以应付多种需求。缺少完善的监控系统,无法在对业务产原创 2020-11-28 23:16:08 · 248 阅读 · 0 评论 -
Flink 源码解析(七)Fault Tolerant与保证Exactly-Once语义
1 Fault Tolerant演进之路对于7×24小时不间断运行的流程序来说,要保证fault tolerant是很难的,这不像是离线任务,如果失败了只需要清空已有结果,重新跑一次就可以了。对于流任务,如果要保证能够重新处理已处理过的数据,就要把数据保存下来;而这就面临着几个问题:比如一是保存多久的数据?二是重复计算的数据应该怎么处理,怎么保证幂等性?对于一个流系统,我们有以下希望:最好能做到exactly-once处理延迟越低越好吞吐量越高越好计算模型应当足够简单易用,又具有足够的表达力从原创 2020-11-28 21:44:42 · 347 阅读 · 0 评论 -
Flink 常见问题总结
Flink 问题总结目录Flink 问题总结作业运行流程Watermark基础原理扩展State基础实践CheckPoint/SavePoint基础配置实践原理扩展Back Pressure基础处理原理扩展语义/exactly-once基础使用原理扩展资源管理Mechine Learning/AI基础作业运行流程新增的 operator 会被 transform 封装,例如 map(udf) -> OneInputTransformation,里面原创 2020-11-27 23:41:56 · 2356 阅读 · 0 评论 -
Flink 源码解析(六)从数据输入到数据处理 OneInputStreamOperator & AbstractUdfStreamOperator
从数据输入到数据处理——OneInputStreamOperator & AbstractUdfStreamOperatorStreamSource是用来开启整个流的算子,而承接输入数据并进行处理的算子就是OneInputStreamOperator、TwoInputStreamOperator等。整个StreamOperator的继承关系如上图所示(图很大,建议点开放大看)。OneInputStreamOperator这个接口的逻辑很简单:public interface OneInpu原创 2020-11-27 23:01:12 · 463 阅读 · 0 评论 -
Flink 源码解析 (五)数据源的逻辑——StreamSource与时间模型
StreamOperator的抽象与实现1 数据源的逻辑——StreamSource与时间模型StreamSource抽象了一个数据源,并且指定了一些如何处理数据的模式。public class StreamSource<OUT, SRC extends SourceFunction<OUT>> extends AbstractUdfStreamOperator<OUT, SRC> implements StreamOperator<OUT&g原创 2020-11-27 13:14:21 · 506 阅读 · 0 评论 -
Flink 源码解析 Standalone Session Cluster 启动流程深度分析之 Job Manager 启动(四)
1.任务的调度与执行关于flink的任务执行架构,官网的这两张图就是最好的说明:Flink 集群启动后,首先会启动一个 JobManger 和多个的 TaskManager。用户的代码会由JobClient 提交给 JobManager,JobManager 再把来自不同用户的任务发给 不同的TaskManager 去执行,每个TaskManager管理着多个task,task是执行计算的最小结构, TaskManager 将心跳和统计信息汇报给 JobManager。TaskManager 之间以流原创 2020-11-27 00:06:03 · 610 阅读 · 1 评论 -
flink实时数仓项目(一)
实时数仓的整体架构原创 2020-11-26 21:52:53 · 304 阅读 · 0 评论 -
Flink Forward k8s相关(1)--Flink部署方式
Container technology experiences an ever increasing adoption throughout many industries. Not only does this technology make your applications portable across different machines and operating systems, it also allows to scale applications in a matter of seco原创 2020-11-26 19:37:47 · 277 阅读 · 0 评论 -
flink-1.11-StandaloneSession模式源码解读之(三)
start-cluster.sh我们先来看看start-cluster.sh这个脚本```bin=`dirname "$0"`bin=`cd "$bin"; pwd`# 先调用config.sh读取配置文件. "$bin"/config.sh# Start the JobManager instance(s)# 启动JobManager,分为HA模式和单机模式shopt -s nocasematch# 这里的HIGH_AVAILABILITY就是flink.yaml中配置的high-原创 2020-11-25 23:38:33 · 309 阅读 · 0 评论 -
Flink 状态(State)在推荐场景中的应用
导语Flink 提供了灵活丰富的状态管理,可轻松解决数据之间的关联性。本文介绍了Flink 状态(State)管理在推荐场景中的应用,大家结合自己的应用场景与业务逻辑,选择合适的状态管理。背景Flink作为纯流式大数据实时计算引擎,较于Spark Streaming的微批处理引擎,不管是内存管理,多流合并,还是时间窗口,迭代处理上,Flink在实时计算场景更较适合。而Flink的State状态管理,更是让Flink在实时计算领域,更胜一筹。通过对Flink State状态的灵活妙用,可以完美实现大数原创 2020-11-25 00:12:32 · 1112 阅读 · 0 评论 -
FLINK LOCAL 模式启动过程源码阅读(二)
从StreamExecutionEnvironment跟进去可以看到,实现类里面有个LocalStreamEnvironment,这个就是local模式启动的入口从 StreamExecutionEnvironment.execute() 进去public JobExecutionResult execute() throws Exception { return execute(DEFAULT_JOB_NAME); }public JobExecutionResult execute(Stri原创 2020-11-24 23:58:38 · 200 阅读 · 0 评论 -
Flink 灵魂两百问
1、为何我使用 ValueState 保存状态 Job 恢复是状态没恢复?2、flink中watermark究竟是如何生成的,生成的规则是什么,怎么用来处理乱序数据3、消费kafka数据的时候,如果遇到了脏数据,或者是不符合规则的数据等等怎么处理呢?4、在Kafka 集群中怎么指定读取/写入数据到指定broker或从指定broker的offset开始消费?5、Flink能通过oozie或者azkaban提交吗?6、jobmanager挂掉后,提交的job怎么不经过手动重新提交执行?7、使用fli原创 2020-11-24 13:19:20 · 572 阅读 · 2 评论 -
Flink技术源码解析(一):源码研读准备
Flink技术源码解析(一):源码研读准备简介: 一、前言 Apache Flink作为一款高吞吐量、低延迟的针对流数据和批数据的分布式实时处理引擎,是当前实时处理领域的一颗炙手可热的新星。关于Flink与其它主流实时大数据处理引擎Storm、Spark Streaming的不同与优势。一、前言Apache Flink作为一款高吞吐量、低延迟的针对流数据和批数据的分布式实时处理引擎,是当前实时处理领域的一颗炙手可热的新星。关于Flink与其它主流实时大数据处理引擎Storm、Spark Streami原创 2020-11-24 08:19:20 · 892 阅读 · 0 评论 -
腾讯Oceanus实时计算平台架构设计
腾讯Oceanus实时计算平台架构设计—学习总结一、背景实时计算应用主要分为以下四类:(1)ETL:ETL应该是目前实时计算最普遍的应用场景。例如在TDBank的数据链路中,TDSort读取消息缓存系统Tube中的消息,通过流数据处理系统将消息队列中的数据进行实时分拣,并落地到HDFS接口机集群,并将最终分拣后的数据由加载到TDW中。(2) 监控系统: 监控系统需要能够对产品和服务进行多维度的监控,对指标数据进行实时的聚合和分析,并支持方便灵活的报警规则设置。(3)实时BI:及时运营策略。(4原创 2020-11-23 22:16:31 · 995 阅读 · 0 评论 -
Flink on YARN(一):一张图轻松掌握基础架构与启动流程
Flink on YARN(一):一张图轻松掌握基础架构与启动流程Flink 支持 Standalone 独立部署和 YARN、Kubernetes、Mesos 等集群部署模式,其中 YARN 集群部署模式在国内的应用越来越广泛。Flink on YARN 流程图Flink on YARN集群部署模式涉及YARN和Flink两大开源框架,应用启动流程的很多环节交织在一起,为了便于大家理解,在一张图上画出了Flink on YARN基础架构和应用启动全流程,并对关键角色和流程进行了介绍说明,整个启动流程原创 2020-11-23 17:50:40 · 529 阅读 · 0 评论 -
Flink on YARN(二):常见问题与排查思路
flink Apache Flink源码解析 DataStream API• 概述• Prerequisites• DataStream• KeyedStream• WindowedStream• AllWindowedStream• ConnectedStreams• SplitStream概述这篇文章是但不仅仅是官方文档的中文翻译,还有里面每一个方法对应的Transformation和运行时对Task的影响。Prerequisites• 关于算子想说的有很多,都在上一篇文章里,在原创 2020-11-23 17:18:16 · 595 阅读 · 0 评论 -
flink Flink在监控流计算中的应用
flink Flink在监控流计算中的应用问题导读:1、如何理解流计算?2、什么是Flink?3、Flink的关键技术点有哪些?4、使用Flink遇到哪些问题?随 着云计算的深入落地,大数据技术有了坚实的底层支撑,不断向前发展并日趋成熟,无论是传统企业还是互联网公司,都不再满足于离线批处理计算,而是更倾向于 应用实时流计算,要想在残酷的企业竞争中立于不败之地,企业数据必须被快速处理并输出结果,流计算无疑将是企业Must Have的大杀器。作为充电生态网的领军企业,特来电在流计算方面很早便开始布局原创 2020-11-23 13:07:50 · 743 阅读 · 2 评论 -
构建批流一体数据融合平台的一致性语义
文章首先将从数据融合角度,谈一下 DataPipeline 对批流一体架构的看法,以及如何设计和使用一个基础框架。其次,数据的一致性是进行数据融合时最基础的问题。如果数据无法实现一致,即使同步再快,支持的功能再丰富,都没有意义。另外,DataPipeline 目前使用的基础框架为 Kafka Connect。为实现一致性的语义保证,我们做了一些额外工作,希望对大家有一定的参考意义。最后,会提一些我们在应用 Kafka Connect 框架时,遇到的一些现实的工程问题,以及应对方法。尽管大家的场景、环境和原创 2020-11-23 07:46:23 · 273 阅读 · 0 评论 -
腾讯看点基于 Flink 的实时数仓及多维实时数据分析实践
腾讯看点基于 Flink 的实时数仓及多维实时数据分析实践当业务发展到一定规模,实时数据仓库是一个必要的基础服务。从数据驱动方面考虑,多维实时数据分析系统的重要性也不言而喻。但是当数据量巨大的情况下,拿腾讯看点来说,一天上报的数据量达到万亿级的规模,要实现极低延迟的实时计算和亚秒级的多维实时查询是有技术挑战的。本文将介绍信息流场景下,腾讯看点的实时数据仓库和多维实时数据分析系统的技术架构。1、可解决的痛点可以先看一下,多维实时数据分析系统可以解决哪些痛点。比如:• 推荐同学 10 分钟前上了一个推原创 2020-11-22 19:51:01 · 503 阅读 · 0 评论 -
解决Flink keyby 数据倾斜
上一篇我们使用keyby后发现数据严重倾斜https://blog.csdn.net/xingdianp/article/details/109953419大概看下问题所在,大量数据在一个subtask中运行这里我们使用两阶段keyby 解决该问题之前的问题如下图所示我们期望的是但我们的需要根据key进行聚合统计,那么把相同的key放在不同的subtask如何统计?我们看下图(只画了主要部分)1.首先将key打散,我们加入将key转化为 key-随机数 ,保证数据散列2.对打散后的数原创 2020-11-22 15:11:50 · 3617 阅读 · 1 评论