李孟聊人工智能
独立开源软件开发者,SolidUI作者。老程序员,老扑街作者,依然奋战在开源一线,依然继续写文章。
展开
-
湖仓一体架构
数据湖是指一个大型的基于对象的存储库,以数据的原始格式保存数据,并运行不同类型的分析(可视化、大数据处理、实时分析和机器学习),以指导做出更好的决策。原创 2023-04-09 20:11:36 · 1672 阅读 · 3 评论 -
Flink ResourceManager资源管理
文章目录一.基本概念1.1 相关组件1.2 逻辑层次1.3 两层资源调度二.机制与策略(Flink1.10)2.1 TaskManager有哪些资源?2.2 Slot有哪些资源?2.3 TaskManager管理2.4 Cluster -> Job 资源调度的过程2.5 Job -> Task 资源调度的过程2.6 资源调优一.基本概念1.1 相关组件一个 Flink Cluster 是由一个 Flink Master 和多个 Task Manager 组成的,Flink Master原创 2021-03-21 23:38:26 · 1510 阅读 · 5 评论 -
Flink 运行架构
Flink 调度Flink-执行逻辑一.角色作用ClientClient 为提交 Job 的客户端,可以是运行在任何机器上(与 JobManager 环境连通即可)。提交 Job 后,Client 可以结束进程(Streaming的任务),也可以不结束并等待结果返回。JobManagerJobManager 具有许多与协调 Flink 应用程序的分布式执行有关的职责:它决定何时调度下一个 task(或一组 task)、对完成的 task 或执行失败做出反应、协调 checkpoint、并原创 2021-02-14 13:04:51 · 3090 阅读 · 8 评论 -
Flink Asynchronous IO异步操作
文章目录一.简介二.原理2.1 API2.2 实现三.示例一.简介在流式处理的过程中, 在中间步骤的处理中, 如果涉及到一些费事的操作或者是外部系统的数据交互, 那么就会给整个流造成一定的延迟。在 Flink 的 1.2 版本中引入了 Asynchronous I/O,能够支持异步的操作,以提高 flink 系统与外部数据系统交互的性能及吞吐量。图片来源官网图中棕色的长条表示等待时间,可以发现网络等待时间阻碍了吞吐和延迟,为了解决同步访问的问题,异步模式可以并发地处理多个请求和回复,也就是说,你可原创 2021-01-23 18:12:38 · 915 阅读 · 0 评论 -
Flink报错Create BatchTableEnvironment failed
Flink DataSet Table相互之间转换报错Exception in thread "main" org.apache.flink.table.api.TableException: Create BatchTableEnvironment failed. at org.apache.flink.table.api.scala.BatchTableEnvironment$.create(BatchTableEnvironment.scala:308) at org.apache.flink.原创 2021-01-20 16:58:34 · 1117 阅读 · 0 评论 -
Flink报错 Could not instantiate the executor_ Make sure a planner module is on the classpath
用Flink Table 处理数据时候报错SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]Exception in thread "main" org.apache.flink.table.api.TableException: Could not instantiate the executor. Make sure a planner module is on the classpath at org.apac原创 2021-01-20 16:54:32 · 2772 阅读 · 0 评论 -
Flink DataStream/DataSet Table 之间的转换
文章目录一.简介二.示例2.1 将Table转换为DataStream2.2 将Table转换为DataSet2.3 DataStrearm 转换Table对象2.4 DataSet 转换Table对象一.简介DataStream/DataSet Table 之间互相转换:DataStream/DataSet 转换 TableTable 转换DataStream/DataSet二.示例2.1 将Table转换为DataStream有两种模式可以将 Table转换为DataStream原创 2021-01-20 16:52:05 · 1559 阅读 · 0 评论 -
Flink Window Evictor
一.简介Flink可在Window Function执行前/后,添加Evictor在原Window中剔除元素。Keyed Windowsstream .keyBy(...) <- keyed versus non-keyed windows .window(...) <- required: "assigner" [.trigger(...)] <- opti原创 2021-01-20 15:15:01 · 736 阅读 · 0 评论 -
Flink Window Trigger
一.简介在window操作时,有三个重要点:窗口分配器(assigner),决定着流入flink的数据,该属于哪个窗口。时间戳抽取器/watermark生成器,抽取时间戳并驱动着程序正常执行。trigger,决定着数据啥时候落地。flink 有很多内置的触发器,对于基于事件事件窗口触发器叫做EventTimeTrigger,其实,我们要实现基于事件时间的窗口随意输出,比如1000个元素触发一次输出,那么我们就可以通过修改这个触发器来实现。二.实现在window使用过程中,我们发现即使我们不原创 2021-01-14 12:22:20 · 867 阅读 · 1 评论 -
Flink AggregateFunction
一.aggregate 函数Flink的AggregateFunction是一个基于中间计算结果状态进行增量计算的函数,由于是迭代计算方式,所以,在窗口处理过程中,不用缓存整个窗口数据,所以效率执行比较高。该函数会将给定的聚合函数应用于每个窗口和键,对每个元素调用聚合函数,以递增方式聚合值,并将每个键和窗口的状态保持在一个累加器。@PublicEvolvingpublic interface AggregateFunction<IN, ACC, OUT> extends Function原创 2020-11-22 17:41:54 · 3296 阅读 · 0 评论 -
Flink Join
一.简介Flink DataStream API中内置有两个可以根据实际条件对数据流进行Join算子:基于间隔的Join和基于窗口的Join。语义注意事项创建两个流元素的成对组合的行为类似内连接,如果来自一个流的元素与另一个流没有相对应要连接的元素,则不会发出该元素。结合在一起的那些元素将其时间戳设置为位于各自窗口中最大时间戳。例如:以[5,10]为边界的窗口将产生连接的元素的时间戳为9。二.窗口Join2.1 翻滚窗口(Tumbling Window Join)执行滚动窗口连接(Tu原创 2020-10-30 20:35:39 · 1480 阅读 · 1 评论 -
Flink Checkpoint/Savepoint
一.CheckPoints为了使Flink的状态具有良好的容错性,Flink提供了检查点机制(Checkpoints)。通过检查点机制,Flink定期在数据流上生成checkpoint barrier ,当某个算子收到barrier时,即会基于当前状态生成一份快照,然后再将该barrier传递到下游算子,下游算子接收到该barrier后,也基于当前状态生成一份快照,依次传递直至到最后的Sink算子上。当出现异常后,Flink 就可以根据最近的一次的快照数据将所有算子恢复到先前的状态。开启检查点默原创 2020-10-22 14:45:46 · 860 阅读 · 2 评论 -
Flink 处理函数
文章目录一.简介二.函数三.时间服务和计时器3.1 简介3.2 示例四.副输出/侧输出(SideOutput)4.1 简介4.2 示例一.简介时间信息和Watermark对很多流式应用至关重要,无法用DataStream API转换来访问它们。DataStream API提供了一组相对底层的转换——处理函数。除了基本功能,它们还可以访问记录的时间戳和水位线,并支持注册在将来某个特点时间出发计时器。处理函数的副输出功能还允许将记录发送到多个输出流中。二.函数Flink提供了8种不同处理函数:P原创 2020-10-21 19:40:12 · 1183 阅读 · 0 评论 -
Flink StateBackend 状态后端示例
状态管理地址:Flink 状态管理文章目录一.简介二.MemoryStateBackend三.FsStateBackend四.RocksDBStateBackend五.设置一.简介Flink提供三种可用的状态后端:MemoryStateBackend,FsStateBackend,和RocksDBStateBackend。场景MemoryStateBackend:本地开发或调试。小状态场景。FsStateBackend:大状态,长窗口或大键值状态。高可用场景。RocksDB原创 2020-10-19 18:35:49 · 1203 阅读 · 2 评论 -
Flink 状态管理
一.简介函数里所有任务去维护并用来计算结果的数据都属于任务的状态。流计算分为无状态和有状态两种情况:无状态计算观察每个独立事件,并根据最后一个事件输出结果。有状态计算则会基于多个事件输出结果。状态可以分为两类:算子状态(operator state)。键值分区状态(keyed state)。state 一般指一个具体task/operator的状态。checkpoint表示一个Flink Job,在一个特定时刻的一份全局状态快照,即包含了所有task/operator的状态。二.算子状原创 2020-10-16 15:50:43 · 570 阅读 · 3 评论 -
Flink DataStream 转换
一.简介基本转换做一个概述,基于时间算子(窗口,水位线)以及其他一些特殊转换会在后面文章介绍。DataStream API的转换分为四大类:作用于单个事件的基本转换。针对相同键值事件的KeyedStream转换。将多条数据流合并为一条或将一条数据流拆分成多条流转换。对流中的事件进行重新组织的分发转换。二.基本转换map用一个数据元生成一个数据元。一个map函数,它将输入流的值加倍:DataStream<Integer> dataStream = //...dataS原创 2020-10-14 18:02:28 · 1074 阅读 · 1 评论 -
Dataflow Model总结
一.简介The Dataflow Model 是 Google Research 于2015年发表的一篇流式处理领域的有指导性意义的论文,它对数据集特征和相应的计算方式进行了归纳总结,并针对大规模/无边界/乱序数据集,提出一种可以平衡准确性/延迟/处理成本的数据模型。这篇论文的目的不在于解决目前流计算引擎无法解决的问题,而是提供一个灵活的通用数据模型,可以无缝地切合不同的应用场景。二.CLC与CAPCAPIn a distributed system (a collection of inter原创 2020-10-13 20:11:00 · 878 阅读 · 1 评论 -
Flink-Watermark
一.简介watermark是一种衡量Event Time进展的机制,它是数据本身的一种隐藏属性。通常基于Event Time的数据,自身都包含一个timestamp.watermark用来处理乱序事件,而正确的处理乱序事件,通常用watermark机制结合window来实现(https://blog.csdn.net/qq_19968255/article/details/108911958)。流处理从事件产生,到流经source,再到operator,中间是有一个过程和时间,虽然大部分情况下,流到op原创 2020-10-11 23:33:04 · 511 阅读 · 1 评论 -
Flink-Window介绍
一.简介Flink认为Batch是Streaming的一个特例,所以Flink底层引擎是一个流式引擎,在上面实现了流处理和批处理。而窗口(window)就是从Streaming到Batch的一个桥梁,Flink提供了非常完善的窗口的机制,这是我认为的Flink最大亮点之一(其他的亮点包括消息乱序处理和checkpoint机制)。本文介绍流处理中窗口概念。二.Window在流处理应用中,数据是连续不断的,因此我们不可能等到所有数据到了才开始处理。当然我们可以每来一个消息就处理一次,但是有时我们需要做一些原创 2020-10-03 17:59:42 · 533 阅读 · 0 评论 -
Flink 调度
一.调度Flink通过Task Slots来定义执行资源。每个TaskManager有一到task slot,每个task slot可以运行一条由多个并行task组成的流水线。这样一条流水线由多个连续的task组成,比如并行度n的MapFunction和并行度为n的ReduceFunction。需要注意的是Flink经常并发执行连续task,不仅在流式作业中到处都是,在批量作业中也很常见。一个由数据源、MapFunction和ReduceFunction组成的Flink作业,其中数据源和MapFunct原创 2020-09-30 16:39:11 · 1592 阅读 · 1 评论 -
Flink-执行逻辑
一.简介Flink是一个用于状态化并行流处理的分布式系统。分布式系统需要应对的常见挑战包括分配合管理集群计算资源,进程协调,持久且高可用的数据存储及故障恢复等等。Flink在已经有的集群基础设施和服务之上专注于它的核心功能——分布式数据流处理。Flink和很多集群管理器(Yarn、Kubernetes等)都能很好地集成;同时它也可以通过配置,作为独立集群来运行,Flink没有提供分布式持久化存储,而是利用现有的分布式文件系统(HDFS)。它依赖ZooKeeper来完成高可用性设置中领导选举工作。二.组原创 2020-09-27 16:13:13 · 876 阅读 · 0 评论 -
Flink SourceFunction/SinkFunction
一.简介Source 是Flink的输入,可以串行,并行,延迟,设置时间窗口等等。Sink是Flink的输出,设置任意源。Flink的编程模型就可以概况成接入Source,然后进行数据转换操作,再讲处理结果Sink出来。二.SourceFunction非并行class CustomNonParallelSourceFunction extends SourceFunction[Long] { var count = 0L var isRunning = true override原创 2020-09-22 11:17:50 · 1728 阅读 · 1 评论 -
Flink DataSet API
一.简介DataSet API,对静态数据进行批处理操作,将静态数据抽象成分布式数据集,用户可以方便地使用Flink提供的各种操作符对分布式数据集进行处理。Flink先将接入数据(如可以通过读取文本或从本地集合)来创建转换成DataSet数据集,并行分布在集群的每个节点上;然后将DataSet数据集进行各种转换操作(map,filter,union,group等)最后通过DataSink操作将结果数据集输出到外部系统。流程获得一个执行环境(ExecutionEnvironment)加载/创建初原创 2020-09-18 19:43:01 · 1088 阅读 · 0 评论 -
CDH5.16.2-Flink1.10.1-parcel制作
一.简介CDH除了能够管理自生所提供的一些大数据相关服务外,还允许将第三方服务添加到CDH集群(托管在CDH上)。你需要做的就是按照一定的规则流程制作相关程序包,最后发布到CDH上。虽然过程并不困难,但是手动操作尤其是一些关键配置容易出错,往往导致最终服务无法正常在CDH上安装运行。二.cm_exturl : https://github.com/cloudera/cm_ext.gitvalidator 验证csd和parcelvalidator(验证器) 重新编译 mvn clean packa原创 2020-07-28 20:58:59 · 1701 阅读 · 4 评论 -
cdh5.16 重新编译flink1.10
一.简介Flink 1.10.0 正式宣告发布!作为 Flink 社区迄今为止规模最大的一次版本升级,Flink 1.10 容纳了超过 200 位贡献者对超过 1200 个 issue 的开发实现,包含对 Flink 作业的整体性能及稳定性的显著优化、对原生 Kubernetes 的初步集成以及对 Python 支持(PyFlink)的重大优化。Flink 1.10 同时还标志着对 Blink[1] 的整合宣告完成,随着对 Hive 的生产级别集成及对 TPC-DS 的全面覆盖,Flink 在增强流式原创 2020-07-06 16:43:20 · 643 阅读 · 0 评论