自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(323)
  • 收藏
  • 关注

原创 Flink-UDF

Flink 的 Table API 和 SQL 提供了多种自定义函数的接口,以抽象类的形式定义。当前 UDF主要有以下几类:标量函数(Scalar Functions):将输入的标量值转换成一个新的标量值;表函数(Table Functions):将标量值转换成一个或多个新的行数据,也就是扩展成一个表;聚合函数(Aggregate Functions):将多行数据里的标量值转换成一个新...

2022-10-18 22:34:00 145

原创 Flink-基于Table的窗口、聚合操作

我们知道,窗口可以将无界流切割成大小有限的“桶”(bucket)来做计算,通过截取有限数据集来处理无限的流数据。在 DataStreamAPI 中提供了对不同类型的窗口进行定义和处理的接口,而在 Table API 和 SQL 中,类似的功能也都可以实现。1.窗口1.1分组窗口(Group Window,1.12版本之前)在 Flink 1.12 之前的版本中,Table API 和 ...

2022-10-17 15:31:00 193

原创 Flink-基于Table设置事件属性

基于时间的操作(比如时间窗口),需要定义相关的时间语义和时间数据来源的信息。在Table API 和 SQL 中,会给表单独提供一个逻辑上的时间字段,专门用来在表处理程序中指示时间。所以所谓的时间属性(time attributes),其实就是每个表模式结构(schema)的一部分。它可以在创建表的 DDL 里直接定义为一个字段,也可以在流转换成表时定义。一旦定义了时间属性,它就可以作为一个...

2022-10-11 14:31:00 139

原创 Flink-动态表和持续查询

在 Flink 中使用表和 SQL基本上跟其他场景是一样的;不过对于表和流的转换,却稍显复杂。当我们将一个 Table 转换成 DataStream 时,有“仅插入流”(Insert-Only Streams)和“更新日志流”(Changelog Streams)两种不同的方式,具体使用哪种方式取决于表中是否存在更新(update)操作。这种麻烦其实是不可避免的。我们知道,Table API...

2022-10-08 21:46:00 98

原创 Flink-Table API(概念、基础操作、流表转换)

在 Flink 提供的多层级 API 中,核心是 DataStream API,这是我们开发流处理应用的基本途径;底层则是所谓的处理函数(process function),可以访问事件的时间信息、注册定时器、自定义状态,进行有状态的流处理。DataStream API 和处理函数比较通用,有了这些 API,理论上我们就可以实现所有场景的需求了。不过在企业实际应用中,往往会面对大量类似的处...

2022-09-29 22:46:00 41

原创 Flink-状态一致性(如何保证exactly-once、flink+kafka端到端保证exactly-once)

当在分布式系统中引入状态时,自然也引入了一致性问题。一致性实际上是"正确性级别"的另一种说法,也就是说在成功处理故障并恢复之后得到的结果,与没有发生任何故障时得到的结果相比,前者到底有多正确?举例来说,假设要对最近一小时登录的用户计数。在系统经历故障之后,计数结果是多少?如果有偏差,是有漏掉的计数还是重复计数?1.一致性级别在流处理中,一致性可以分为3个级别:(1)at-most-o...

2022-09-21 00:01:00 36

原创 Flink-State Backends(状态后端)

状态后端(State Backends)每传入一条数据,有状态的算子任务都会读取和更新状态由于有效的状态访问对于处理数据的低延迟至关重要,因此每个并行任务都会在本地维护其状态,以确保快速的状态访问状态的存储、访问以及维护,由一个可插入的组件决定,这个组件就叫做状态后端(state backend)状态后端主要负责两件事:本地的状态管理,以及将检查点(checkpoint)状态写入远程存...

2022-09-20 23:55:00 28

原创 Flink-checkpoint配置及重启策略

Flink-checkpoint配置及重启策略val env = StreamExecutionEnvironment.getExecutionEnvironment env.setParallelism(1) //--------------- checkpoint配置 ---------------- env.enableCheckpointing(1000L...

2022-09-20 21:21:00 93

原创 Flink-容错机制-检查点原理和算法

一、一致性检查点(Checkpoints)Flink故障恢复机制的核心,就是应用状态的一致性检查点有状态流应用的一致性检查点,其实就是所有任务的状态,在某个时间点的一份拷贝(一份快照);这个时间点,应该是所有任务都恰好处理完一个相同的输入数据的时候二、从检查点恢复状态在执行流应用程序期间,Flink会定期保存状态的一致检查点如果发生故障,Flink将会使用最近的检查点来一致恢...

2022-09-08 22:54:00 29

原创 Flink-ProcessFunction

我们之前学习的转换算子是无法访问事件的时间戳信息和水位线信息的。而这在一些应用场景下,极为重要。例如 MapFunction 这样的 map 转换算子就无法访问时间戳或者当前事件的事件时间。基于此,DataStream API 提供了一系列的 Low-Level 转换算子。可以访问时间戳、watermark 以及注册定时事件。还可以输出特定的一些事件,例如超时事件等。Process Fun...

2022-09-06 22:56:00 19

原创 Flink-状态管理

流式计算分为无状态和有状态两种情况。  无状态的计算观察每个独立事件,并根据最后一个事件输出结果。例如,流处理应用程序从传感器接收温度读数,并在温度超过 90 度时发出警告。  有状态的计算则会基于多个事件输出结果。以下是一些例子。所有类型的窗口。例如,计算过去一小时的平均温度,就是有状态的计算。所有用于复杂事件处理的状态机。例如,若在一分钟内收到两个相差 20 度以上的温度读数,...

2022-09-05 22:02:00 14

原创 Flink-窗口起始时间确定规则、闭窗时间计算规则

窗口何时开始看下TumblingEventTimeWindows这个类 @Override public Collection<TimeWindow> assignWindows( Object element, long timestamp, WindowAssignerContext context) { if (ti...

2022-08-18 16:14:00 77

原创 Docker-部署MySQL

Docker-MySQL使用官方镜像快速启动一个MySQL Server实例(MySQL8)如下FengZhen$ docker run --name mysql -e MYSQL_ROOT_PASSWORD=123456 -p 53306:3306 -d mysql:latest906b498c04db2bfe57349760941222ca063c3b169885969c95e56...

2022-07-29 15:30:00 17

原创 Docker-部署MongoDB

MongoDB拉取镜像FengZhen$ docker pull mongo启动容器FengZhen$ docker run -it --name mongo -d mongo:latest2c74df8288bf128657cee59e3433c27b541f93570ec081b1bcccf35ffa755af0FengZhen$ docker ps -lCONTAINE...

2022-07-29 15:28:00 20

原创 Docker-部署Springcloud应用

部署eureka注册中心部署eureka 注册中心。因为springboot自带Tomcat,所以直接打jar包,直接java -jar ....jar准备一个centos6带有jdk的容器docker pull centos:6docker run -it --name centos_micro -p 58889:8889 centos:6下载jdkhttp://www.ora...

2022-07-29 15:25:00 25

原创 Flink-时间语义与Watermark

1.时间语义Event Time:是事件创建的时间。它通常由事件中的时间戳述,例如采集的日志数据中,每一条日志都会记录自己的生成时间,Flink 通过时间戳分配器访问事件时间戳。Ingestion Time:是数据进入 Flink 的时间。Processing Time:是每一个执行基于时间操作的算子的本地统时间,与机器相关,默认的时间属性就是 Processing Time。2....

2022-07-26 22:15:00 22

原创 Flink-窗口函数(Window)

1.Window概念streaming 流式计算是一种被设计用于处理无限数据集的数据处理引擎,而无限数据集是指一种不断增长的本质上无限的数据集,而 window 是一种切割无限数据为有限块进行处理的手段。Window 是无限数据流处理的核心,Window 将一个无限的 stream 拆分成有限大小的”buckets”桶,我们可以在这些桶上做计算操作。2.Window类型2.1 Ti...

2022-07-19 22:45:00 34

原创 Record has Long.MIN_VALUE timestamp (= no timestamp marker). Is the time characteristic set to 'Proc...

问题:Caused by: java.lang.RuntimeException: Record has Long.MIN_VALUE timestamp (= no timestamp marker). Is the time characteristic set to 'ProcessingTime', or did you forget to call 'DataStream.ass...

2022-07-19 22:29:00 167

原创 Flink-Sink(Kafka、Redis、ES、JDBC)

Flink 没有类似于 spark 中 foreach 方法,让用户进行迭代的操作。虽有对外的输出操作都要利用 Sink 完成。最后通过类似如下方式完成整个任务最终输出操作。stream.addSink(new MySink(xxxx))官方提供了一部分的框架的 sink。除此以外,需要用户自定义实现 sink。5.0 Filepackage com.zhen.flink.ap...

2022-07-01 14:46:00 848

原创 Flink-富函数(Rich Functions)

4.富函数(Rich Functions)4.1 函数类(Function Classes)Flink 暴露了所有 udf 函数的接口(实现方式为接口或者抽象类)。例如MapFunction, FilterFunction, ProcessFunction 等等。下面例子实现了 FilterFunction 接口:class FilterFilter extends Filte...

2022-06-08 22:30:00 675

原创 Flink-Transform(转换)

书接上回。3.Transform 转换算子【代码示例统一放在最后边】3.1 mapval streamMap = stream.map { x => x * 2 }3.2 flatMapflatMap 的函数签名:def flatMap[A,B](as: List[A])(f: A ⇒ List[B]): List[B]例如: flatMap(List(1,2,3)...

2022-06-08 22:00:00 862

原创 Flink-Source(数据源)

1.Environment1.1 getExecutionEnvironment创建一个执行环境,表示当前执行程序的上下文。 如果程序是独立调用的,则此方法返回本地执行环境;如果从命令行客户端调用程序以提交到集群,则此方法返回此集群的执行环境,也就是说,getExecutionEnvironment 会根据查询运行的方式决定返回什么样的运行环境,是最常用的一种创建执行环境的方式。...

2022-06-06 23:09:00 571

原创 Flink-任务调度原理

任务调度图示客户端不是运行时和程序执行的一部分,但它用于准备并发送dataflow(JobGraph)给Master(JobManager),然后,客户端断开连接或者维持连接以等待接收计算结果。当Flink集群启动后,首先会启动一个JobManger和一个或多个的TaskManager。由Client提交任务给JobManager,JobManager再调度任务到各个TaskManage...

2022-06-01 22:13:00 619

原创 Flink-任务提交流程

运行时架构各组件的交互:上图是从一个较为高层级的视角,来看应用中各组件的交互协作。如果部署的集群环境不同(例如 YARN,Mesos,Kubernetes,standalone 等),其中一些步骤可以被省略,或是有些组件会运行在同一个 JVM 进程中。具体地,如果我们将 Flink 集群部署到 YARN 上,那么就会有如下的提交流程:Flink 任 务 提 交 后 , Clien...

2022-05-30 22:57:00 456

原创 Flink-运行时架构

运行时组件Flink 运行时架构主要包括四个不同的组件,它们会在运行流处理应用程序时协同工作:作业管理器(JobManager)、资源管理器(ResourceManager)、任务管理器(TaskManager),以及分发器(Dispatcher)。因为 Flink 是用 Java 和 Scala 实现的,所以所有组件都会运行在Java 虚拟机上。每个组件的职责如下:1.作业管理器...

2022-05-30 22:56:00 140

原创 Flink-初识(特点、与sparkstreaming的比较)

1.初识Flink 起源于 Stratosphere 项目,Stratosphere 是在 2010~2014 年由 3 所地处柏林的大学和欧洲的一些其他的大学共同进行的研究项目,2014 年 4 月 Stratosphere 的代 码 被 复 制 并 捐 赠 给 了 Apache 软 件 基 金 会 , 参 加 这 个 孵 化 项 目 的 初 始 成 员 是Stratosphere 系统的...

2022-05-18 21:49:00 219

原创 Docker-安装Prometheus、grafana

1.拉取镜像包docker pull prom/node-exporterdocker pull prom/prometheusdocker pull grafana/grafana2.启动node-exporter[方便测试Prometheus]docker run -d -p 9100:9100 \ -v "/home/fz/docker/node-expor...

2022-05-10 22:57:00 196

原创 ClickHouse-常见问题

1.分布式DDL某数据节点的副本不执行(1)问题:使用分布式 ddl 执行命令 create table on cluster xxxx 某个节点上没有创建表,但是 client 返回正常,查看日志有如下报错。<Error> xxx.xxx: Retrying createReplica(), because some other replicaswere created a...

2022-05-10 22:51:00 1303

原创 ClickHouse-监控及备份

1.监控概述ClickHouse 运行时会将一些个自身的运行状态记录到众多系统表中( system.*)。所以我们对于 CH 自身的一些运行指标的监控数据,也主要来自这些系统表。但是直接查询这些系统表会有一些不足之处:➢ 这种方式太过底层,不够直观,我们还需要在此之上实现可视化展示;➢ 系统表只记录了 CH 自己的运行指标,有些时候我们需要外部系统的指标进行关联分析,例如 ZooKee...

2022-05-10 22:49:00 298

原创 ClickHouse-物化视图

ClickHouse 的物化视图是一种查询结果的持久化,它确实是给我们带来了查询效率的提升。用户查起来跟表没有区别,它就是一张表,它也像是一张时刻在预计算的表,创建的过程它是用了一个特殊引擎,加上后来 as select,就是 create 一个 table as select 的写法。“查询结果集”的范围很宽泛,可以是基础表中部分数据的一份简单拷贝,也可以是多表 join 之后产生的结果或...

2022-05-09 22:42:00 592

原创 ClickHouse-数据一致性

  在生产环境中,数据一致性的重要性,不论如何强调都不过分。而 ClickHouse 在进行数据变更时,都会产生一个临时分区,而不会更改原始数据文件,对数据文件的修改操作会要等到数据合并时才进行。所以 ClickHouse 只能保证数据的最终一致性,而不能保证强一致性。很可能数据变更后,程序通过 ClickHouse 查到之前的错误数据。因此使用 ClickHouse ,要尽量避免数据的增删改...

2022-05-09 22:14:00 942

原创 ClickHouse-查询优化

一、单表查询【使用的频率高】1.prewhere代表wherePrewhere 和 where 语句的作用相同,用来过滤数据。不同之处在于 prewhere 只支持*MergeTree 族系列引擎的表,首先会读取指定的列数据,来判断数据过滤,等待数据过滤之后再读取 select 声明的列字段来补全其余属性。当查询列明显多于筛选列时使用 Prewhere 可十倍提升查询性能,Prewher...

2022-04-26 23:08:00 1799

原创 ClickHouse-语法优化规则

ClickHouse 的 SQL 优化规则是基于 RBO(Rule Based Optimization),下面是一些优化规则以下规则中使用了ClickHouse官方测试数据集,数据集使用步骤移步这里。1.COUNT优化在调用 count 函数时,如果使用的是 count() 或者 count(*),且没有 where 条件,则会直接使用 system.tables 的 total_r...

2022-04-21 23:10:00 239

原创 ClickHouse-官方数据集使用

参考:https://clickhouse.com/docs/en/getting-started/example-datasets/metrica/准备clickhouse官方数据集https://clickhouse-datasets.s3.yandex.net/hits/tsv/hits_v1.tsv.xzhttps://clickhouse-datasets.s3.yande...

2022-04-21 23:04:00 272

原创 ClickHouse-优化(建表、配置)

1.数据类型1.1时间字段的类型建表时能用数值型或日期时间型表示的字段就不要用字符串,全 String 类型在以 Hive为中心的数仓建设中常见,但 ClickHouse 环境不应受此影响。虽然 ClickHouse 底层将 DateTime 存储为时间戳 Long 类型,但不建议存储 Long 类型,因为 DateTime 不需要经过函数转换处理,执行效率高、可读性好。CREAT...

2022-04-20 22:58:00 1220

原创 ClickHouse-Explain执行计划

在 clickhouse 20.6 版本之前要查看 SQL 语句的执行计划需要设置日志级别为 trace 才能可以看到,并且只能真正执行 sql,在执行日志里面查看。在 20.6 版本引入了原生的执行计划的语法。在 20.6.3 版本成为正式版本的功能。1.基本语法EXPLAIN [AST | SYNTAX | PLAN | PIPELINE] [setting = value, ....

2022-04-20 21:59:00 300

原创 ClickHouse-分片集群

副本虽然能够提高数据的可用性,降低丢失风险,但是每台服务器实际上必须容纳全量数据,对数据的横向扩容没有解决。要解决数据水平切分的问题,需要引入分片的概念。通过分片把一份完整的数据进行切分,不同的分片分布到不同的节点上,再通过 Distributed 表引擎把数据拼接起来一同使用。Distributed 表引擎本身不存储数据,有点类似于 MyCat 之于 MySql,成为一种中间件,通过分布式...

2022-04-13 21:35:00 187

原创 ClickHouse-副本

副本的目的主要是保障数据的高可用性,即使一台 ClickHouse 节点宕机,那么也可以从其他服务器获得相同的数据。1.副本写入流程2.配置步骤(1)启动 zookeeper 集群(Node1-3)配置zookeeper环境(2)clickhouse准备两个节点Node1, Node2在 Node1 的/etc/clickhouse-server/config.d 目录下...

2022-04-12 21:27:00 231

原创 ClickHouse-SQL语法

1.insert基本与标准 SQL(MySQL)基本一致(1)标准insert into [table_name] values(…),(….)(2)从表到表的插入insert into [table_name] select a,b,c from [table_name_2]2.update和deleteClickHouse 提供了 Delete 和 Update 的能力,这...

2022-04-07 22:41:00 325

原创 ClickHouse-常用表引擎详解

表引擎是 ClickHouse 的一大特色。可以说, 表引擎决定了如何存储表的数据。包括:➢ 数据的存储方式和位置,写到哪里以及从哪里读取数据。➢ 支持哪些查询以及如何支持(不同引擎有些功能不能用)。➢ 并发数据访问。➢ 索引的使用(如果存在)。➢ 是否可以执行多线程请求。➢ 数据复制参数。表引擎的使用方式就是必须显式在创建表时定义该表使用的引擎,以及引擎使用的相关参数。特别注意...

2022-04-06 22:13:00 589

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除