NIO4444
这个作者很懒,什么都没留下…
展开
-
Flink系列:windows窗口概念的理解
目录窗口固定窗口滑动窗口会话窗口窗口窗口就是将一个数据源(无论是无界的还是有界的)分割成有限的块进行处理的抽象。固定窗口固定窗口将时间分割成固定大小的时间段。滑动窗口固定窗口的变种,滑动窗口由固定长度和固定周期组成。如果周期小于长度,则窗口重叠。如果周期等于长度,那么窗口是固定的。如果周期大于长度,那么是一个抽样窗口,它只记录数据的子集。会话窗口会话由一系列事件组成,当这些事件由于超时不活动而终止。会话通过将一系列与时间相关..原创 2021-10-15 23:17:57 · 442 阅读 · 0 评论 -
Flink系列:任务的理解
目录任务类型任务与slot任务类型分为三种:source,transformation,sink一个 Flink 程序由多个Source +多个Transformation+多个Sink组成。其中多个Source中的任意一个Source,叫做任务 多个Transformation中的任意一个Transformation也叫做任务 多个Sink中的任意一个Sink也叫做任务,从这句话可以得知任务与slot一个slot中,同一个类型的任务,只能运行1个。比...原创 2021-04-05 23:39:26 · 482 阅读 · 1 评论 -
Flink系列:parallelism和Slot的理解
目录slot(taskmanager 具备的并发能力)例子(每个taskmanager 有3 个 TaskSlot)parallelism(taskmanager 实际使用的并发能力)flink-conf.yaml中配置以shell的方式-p指定程序的并行度在flink job程序内设置并行度每个算子指定并行度;slot(taskmanager 具备的并发能力)slot是一个TaskManager上任务能配置的最大并行度(默认为CPU核数) 系统创建一个Ta...原创 2021-04-05 23:38:20 · 499 阅读 · 1 评论 -
Flink系列: 解决No ExecutorFactory found to execute the application
目录现象原因引入缺少包现象flink1.11版本报错Exception in thread "main" java.lang.IllegalStateException: No ExecutorFactory found to execute the application. at org.apache.flink.core.execution.DefaultExecutorServiceLoader.getExecutorFactory(DefaultExecutorSer原创 2021-04-05 22:27:37 · 752 阅读 · 1 评论 -
Flink系列:join算子的使用方法
目录需求join用法实现相关:https://xdoctorx.blog.youkuaiyun.com/article/details/115290450(Union、connect(CoMap, CoFlatMap)算子的使用方法)需求使用join算子,连接2个Stream,将人员和城市关联起来join用法DataStream,DataStream → DataStreamdataStream.join(otherStream) .where(<key se原创 2021-03-29 00:38:43 · 778 阅读 · 1 评论 -
Flink系列:Union、connect(CoMap, CoFlatMap)算子的使用方法
目录需求Union、connect用法实现connectunion需求使用union、connect算子,输出一个窗口内每个单词的最大值Union、connect用法union:DataStream→ DataStream 连接2+以上的stream,dataStream.union(otherStream1, otherStream2, ...); 必须连接类型相同connect:DataStream,DataStream → Con...原创 2021-03-28 23:53:51 · 942 阅读 · 1 评论 -
Flink系列:Window Reduce、Aggregations算子的使用方法
目录需求Aggregations 、Reduce用法实现需求使用Aggregations on windows算子,输出一个窗口内每个单词的最大值Aggregations 、Reduce用法WindowedStream → DataStream实现package nio4444.connect;import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsCons...原创 2021-03-28 23:30:20 · 494 阅读 · 0 评论 -
Flink系列:WindowAll、Apply算子的使用方法
目录需求WindowAll用法实现相关:https://xdoctorx.blog.youkuaiyun.com/article/details/115287210(Flink系列:Window算子的使用方法)需求使用WindowAll算子,统计所有单词出现的次数总和(数据流最大延迟5s)WindowAll用法DataStream → AllWindowedStreamNOTE:有可能所有的数据流都集中在一个task上。实现package nio.原创 2021-03-28 21:40:25 · 1345 阅读 · 0 评论 -
Flink系列:Record has Long.MIN_VALUE timestamp no timestamp marker
目录问题可能的原因完整例子问题Record has Long.MIN_VALUE timestamp (= no timestamp marker). Is the time characteristic set to 'ProcessingTime', or did you forget to call 'DataStream.assignTimestampsAndWatermarks(...)'?可能的原因 缺少env.setStreamTimeCharact.原创 2021-03-28 21:20:23 · 2479 阅读 · 0 评论 -
Flink系列:Window、Apply算子的使用方法
目录需求Window用法实现相关:https://xdoctorx.blog.youkuaiyun.com/article/details/107132585(Flink系列:WindowFunction使用方法)需求使用Window算子,统计每秒单次出现的次数(数据流最大延迟5s)Window用法KeyedStream → WindowedStream。实现package nio4444.connect;import lombok.AllArgs..原创 2021-03-28 21:16:59 · 1725 阅读 · 0 评论 -
Flink系列:Aggregations算子的使用方法
目录需求Aggregations用法实现demo2需求使用Aggregations算子,统计单次出现分值Aggregations用法KeyedStream → DataStream每输入一个元素,都进行一次求和。NOTE:POJO class必须是public的,必须有public无参构造函数实现package nio4444.connect;import lombok.AllArgsConstructor;import lombok.D原创 2021-03-28 18:10:52 · 591 阅读 · 0 评论 -
Flink系列:org.apache.flink.api.common.InvalidProgramException: This type XXX cannot be used as key
目录背景原因背景使用Flink keyBy函数时,参数为POJO对象报错org.apache.flink.api.common.InvalidProgramException: This type XXX cannot be used as key原因POJO需要满足:class必须是public的 必须有public无参构造函数...原创 2021-03-28 18:08:54 · 660 阅读 · 0 评论 -
Flink系列:Reduce算子的使用方法
目录需求Reduce用法实现相关:Flink系列:KeyBy算子的使用方法https://xdoctorx.blog.youkuaiyun.com/article/details/115282824需求使用Reduce算子,不断更新单次出现的次数Reduce用法KeyedStream → DataStream输入一个元素,将当前元素与最后一个reduce计算的值组合并生成新值。实现package nio4444.connect;import lombo..原创 2021-03-28 17:05:39 · 1063 阅读 · 0 评论 -
Flink系列:KeyBy算子的使用方法
目录需求KeyBy用法实现需求使用KeyBy算子,统计将相同单次聚合在一起KeyBy用法DataStream → KeyedStream输入一个元素,将将相同单次聚合在一起。实现package nio4444.connect;import lombok.AllArgsConstructor;import lombok.Data;import org.apache.flink.api.common.functions.FilterFunctio.原创 2021-03-28 16:38:16 · 1759 阅读 · 0 评论 -
Flink系列:Filter算子的使用方法
目录需求Filter用法实现相关:Flink系列:map算子的使用方法:https://xdoctorx.blog.youkuaiyun.com/article/details/115279338需求使用Filter算子,输入年龄大于31岁的personFilter用法DataStream → DataStream输入一个输出,如果满足filter函数内的条件,则输出;否则忽略该输入。实现package nio4444.connect;i...原创 2021-03-28 16:17:00 · 1378 阅读 · 0 评论 -
Flink系列:flatmap算子的使用方法
目录需求flatMap用法实现结果相关:Flink系列:map算子的使用方法:https://xdoctorx.blog.youkuaiyun.com/article/details/115279338需求使用flatmap算子,将每次输入的字符串按单次分割输出flatMap用法DataStream → DataStream输入一个输出,输出N个元素(N>=0)实现package nio4444.connect;import org.apach..原创 2021-03-28 16:09:53 · 862 阅读 · 0 评论 -
Flink系列:map算子的使用方法
目录需求map用法实现需求使用map算子,将每个人的年龄age-1map用法DataStream → DataStream输入一个输出,输出一个元素实现package nio4444.connect;import lombok.AllArgsConstructor;import lombok.Data;import org.apache.flink.api.common.functions.MapFunction;import org.apache原创 2021-03-28 13:04:28 · 1290 阅读 · 0 评论 -
Flink系列:数据状态例子
目录需求实现需求实现了一个简单的计数窗口:我们把元组的第一个元素当作 key,该函数将出现的次数以及总和存储在 “ValueState” 中。 一旦出现次数达到 2,则将平均值发送到下游,并清除状态重新开始。请注意,我们会为每个不同的 key(元组中第一个元素)保存一个单独的值。实现package nio4444.state;import org.apache.flink.api.common.functions.RichFlatMapFunction;imp..原创 2021-03-25 00:46:39 · 353 阅读 · 1 评论 -
Flink系列:自定义周期性Watermark例子
目录应用场景实现方法基于数据相对延迟时间生成基于固定延迟时间生成基于数据标记字段生成应用场景数据源在一定程度上乱序,最大延迟3.5s实现方法基于数据相对延迟时间生成public class BoundedOutOfOrdernessGenerator implements WatermarkGenerator<MyEvent> { private final long maxOutOfOrderness = 3500; // 3.5..原创 2021-03-24 23:49:12 · 418 阅读 · 1 评论 -
Flink系列:HA高可用方案
目录HAstandalone方式Yarn集群方式HAJobManager高可用(HA),使用standalone或 YARN集群模式(Local模式为单点)。详情见:Flink部署方式优劣势对比standalone方式任何时候都有一个 Master JobManager ,并且多个Standby JobManagers 。Standby JobManagers可以在Master JobManager 挂掉的情况下接管集群成为Master JobManager。 这样原创 2021-03-16 22:59:09 · 431 阅读 · 0 评论 -
Flink系列:Flink部署方式优劣势对比
目录Local模式Standalone clusteron Yarn对比Local模式Standalone clusteron Yarn对比原创 2021-03-16 22:58:13 · 1764 阅读 · 1 评论 -
Flink系列:使用处理时间的优势、劣势
无法正确处理历史数据, 无法正确处理超过最大无序边界的数据, 结果将是不确定的,原创 2021-03-04 00:31:55 · 889 阅读 · 1 评论 -
Flink系列:Window、Triggers、Watermarks
Window通过沿时间边界对无界数据进行切片来管理无界数据时间边界:处理时间、事件时间Triggers精确指定输出时间的声明机制Watermarks提供了一种对在无界数据上操作的无序处理系统中的完整性进行自定义的手段。Whatresults are calculated? = transformations. Wherein event time are results calculated? = windowing. When...原创 2021-02-15 00:56:52 · 365 阅读 · 0 评论 -
Flink系列:处理延迟过程中时间的选择(Event time、Process time)
目录Event time VS Process timeProcess timeEvent timeEvent time VS Process timeProcess time在处理时间中指定分界线(例如,在水印通过窗口结束后,将窗口保持10分钟的处理时间),但使用Process time,程序容易受到pipeline本身的问题的影响(例如,工人崩溃,导致管道停止处理几分钟),这可能导致窗口实际上没有机会处理他们本来应该有的延迟数据。Event time...原创 2021-02-14 23:07:02 · 1212 阅读 · 0 评论 -
Flink系列:watermarks水印分类与水印的确定
目录Perfect watermarksHeuristic watermarksPerfect watermarks我们完全了解所有输入数据的情况,可以构造一个完美的水印。 在这种情况下,没有迟到的数据;所有的数据都是准时的。Heuristic watermarks对于许多分布式输入源来说,对输入数据是不完全了解的,在这种情况下,最好的选择是Heuristic watermarks。Heuristic watermarks使用有关输入的任何可用信息(分区、分区内排序(如果.原创 2021-02-14 18:08:22 · 509 阅读 · 0 评论 -
Flink系列:Event time VS Processing time
Event timeThis is the time at which events actually occurred.Processing timeThis is the time at which events are observed in the system.原创 2021-01-12 23:36:02 · 485 阅读 · 0 评论 -
Flink系列:事件时间乱序到达处理完整Demo例子
目录效果在192.168.40.159客户端输入idea程序输出基础程序StreamingWindowWatermarkXdoctorxMapFunctionXdoctorXAssignerWithPeriodicWatermarksXdoctorXWindowFunction效果在192.168.40.159客户端输入idea程序输出基础Flink系列:WindowFunction使用方法Flink系列:自定义Wi...原创 2020-07-05 18:03:26 · 1794 阅读 · 0 评论 -
Flink系列:WindowFunction使用方法
语法https://ci.apache.org/projects/flink/flink-docs-master/api/java/org/apache/flink/streaming/api/functions/windowing/WindowFunction.html分组分组的stream调用keyBy(…)和window(…)非分组的stream中window()换成了windowAll(…)触发器Trigger 每个 Window 都有一个...原创 2020-07-05 00:02:30 · 1213 阅读 · 1 评论 -
监控系统技术栈
数据采集:zabbix、filebeat、promethues数据传输:flink、logstash数据存储:elastic、kafka、mysql前端展示:Grafana、kibana、自研、告警通知:邮件、微信、电话原创 2020-06-18 20:09:45 · 687 阅读 · 0 评论 -
Flink系列:日志实时清洗系统架构
基础监控系统技术栈架构原创 2020-07-04 23:41:08 · 907 阅读 · 0 评论 -
Flink系列:日志实时报表分析系统架构
基础监控系统技术栈架构原创 2020-07-04 23:39:31 · 1399 阅读 · 0 评论 -
Flink系列:双数据流转换为单数据流
双数据流转换为单数据流操作的运算:cogroup, join和coflatmapJoin:只输出条件匹配的元素对。 CoGroup: 除了输出匹配的元素对以外,未能匹配的元素也会输出。 CoFlatMap:没有匹配条件,不进行匹配,分别处理两个流的元素。CoFlatMapstream1数据到来时,会调用flatMap1方法,stream2收到数据之时,会调用flatMap2方法...原创 2020-07-04 23:29:20 · 481 阅读 · 0 评论 -
Flink系列:DataStream unoin与connect的区别
共同点将2个流或多个流合成一个流区别union连接的2个流的类型必须一致,connect连接的流类型可以不一致,但是可以统一处理。原创 2020-07-04 23:17:01 · 414 阅读 · 0 评论 -
Flink系列:Kafka Producer 容错处理方法
注意不同版本的处理方式不同Kafka 0.9、Kafka0.10FlinkKatkaProducer09/FlinkKatkaProducer010提供At-least-once 的语义,还需要配置下面两个参数setLogFailuresOnly(false)setFlushOnCheckpoint(true)Kafka 0.11 Flink 开启 CheckPoint, 则FlinkKafkaProducer011提供 Exa...原创 2020-07-02 18:13:18 · 1475 阅读 · 0 评论 -
Flink系列:Kafka Consumer Offset 自动提交设置
开启Check Point时Checkpoint后,同步offset给kafka。未开启Check Point时enable.auto.commit: true auto.commit.interval.ms: 1500原创 2020-07-02 18:05:34 · 4796 阅读 · 1 评论 -
Flink系列:Kafka动态支持多个topic传入
//支持正则表达式FlinkKafkaConsumer consumer011 = new FlinkKafkaConsumer( Pattern.compile("topic[0-9]]"), new SimpleStringSchema(), parameterTool.getProperties());原创 2020-07-02 17:52:03 · 4892 阅读 · 0 评论 -
Flink系列:Kafka Consumer消费策略
消费策略setStartFromEarliest() 从最初的数据开始进行消费setStartFromGroupOffsets()默认消费策略读取上次消费者保存的 Offset 信息setStartFromLatest() 从最新的数据进行消费,忽略Offset 信息setStartFromSpecificOffsets(Map<KafkaTopicPartition, Long>) 可以在代码中指定每个分区开始读取...原创 2020-07-02 17:46:44 · 4111 阅读 · 0 评论 -
Flink系列:setParallelism 并行度使用方法示例Demo
并行度一个任务(Source、Transformation、Sink)的并行实例(线程〉数目称为该任务的并行度SlotsTask Manager为集群提供Slots,一个Task Manager节点的Slots数通常是CPU的核数。并行度优先级一个任务的并行度设置包含下面4个层面:• Operator Level (算子层面〉• Execution Environment Level (执行环境层面〉 • Client Level (客...原创 2020-07-02 16:53:37 · 4384 阅读 · 0 评论 -
Flink系列:事件Time时间乱序到达处理方法
到达时间无序kafka的数据,不一定按照时间产生的时间到达flink,为了解决这个问题,需要引入Watermark时间到达的3中情况顺序到达乱序到达并发到达Watermark如果指定多个Watermark,后面的将覆盖前面的。两种方法基于时间周期(推荐)周期性(默认100ms)生成和发送Watermark,定义一个最大允许乱序时间。基于特定事件如果发生特定事件,则生成和发送Watermark...原创 2020-06-30 19:26:19 · 6674 阅读 · 0 评论 -
Flink系列:事件Time时间分类(指定事件时间)
时间分类Stream数据中的Time(时间〉有下面3种:• Event Time 事件产生的时间• Ingestion Time 事件进入Flink的时间 • Processing Time 事件被处理时当前系统的时间流转图指定Stream数据中的Time/默认是处理时间为基础,可以修改:env.setStreamTimeCharacteristic(TimeCharacteristic.ProcessingTime)...原创 2020-06-30 18:35:13 · 2566 阅读 · 1 评论