- 博客(32)
- 收藏
- 关注
原创 Flink-状态编程
在 Flink 中,状态始终是与特定算子相关联的;算子在使用状态前首先需要“注册”,其 实就是告诉 Flink 当前上下文中定义状态的信息,这样运行时的 Flink 才能知道算子有哪些状态。状态的注册,主要是通过“状态描述器”(StateDescriptor)来实现的。状态描述器中最重 要的内容,就是状态的名称(name)和类型(type)。我们知道 Flink 中的状态,可以认为是加 了一些复杂操作的内存中的变量;
2022-10-23 22:16:39
3440
原创 Flink-多流转换
无论是基本的简单转换和聚合,还是基于窗口的计算,我们都是针对一条流上的数据进行处理的。而在实际应用中,可能需要将不同来源的数据连接合并在一起处理,也有可能需要将 一条流拆分开,所以经常会有对多条流进行处理的场景。本章我们就来讨论 Flink 中对多条流进行转换的操作。简单划分的话,多流转换可以分为“分流”和“合流”两大类。
2022-10-19 22:44:27
534
原创 Flink-处理函数
在处理函数中,我们直面的就是数据流中最基本的元素:数据事件(event)、状态(state) 以及时间(time)。这就相当于对流有了完全的控制权。处理函数比较抽象,没有具体的操作, 所以对于一些常见的简单应用(比如求和、开窗口)会显得有些麻烦;不过正是因为它不限定 具体做什么,所以理论上我们可以做任何事情,实现所有需求。所以可以说,处理函数是我们 进行 Flink 编程的“大招”,轻易不用,一旦放出来必然会扫平一切。
2022-10-16 20:10:45
1416
原创 Flink 中的窗口
更加高效的做法是,把无界流进行切分,每一段数据分别进行聚合,结果只输出一次。这 就相当于将无界流的聚合转化为了有界数据集的聚合,这就是所谓的“窗口”(Window)聚合 操作。在实际应用中,我们往往更关心一段 时间内数据的统计结果,比如在过去的 1 分钟内有多少用户点击了网页。在这种情况下,我们 就可以定义一个窗口,收集最近一分钟内的所有用户点击数据,然后进行聚合统计,最终输出 一个结果就可以了。在流处理中,我们往往需要面对的是连续 不断、无休无止的无界流,不可能等到所有所有数据都到齐了才开始处理。
2022-10-15 11:10:54
2114
原创 Flink 中的时间和窗口(时间语义、水位线)
在事件时间语义下,我们不依赖系统时间,而是基于数据自带的时间戳去定义了一个时钟, 用来表示当前时间的进展。于是每个并行子任务都会有一个自己的逻辑时钟,它的前进是靠数 据的时间戳来驱动的。但在分布式系统中,这种驱动方式又会有一些问题。因为数据本身在处理转换的过程中会 变化,如果遇到窗口聚合这样的操作,其实是要攒一批数据才会输出一个结果,那么下游的数 据就会变少,时间进度的控制就不够精细了。另外,数据向下游任务传递时,一般只能传输给 一个子任务(除广播外),这样其他的并行子任务的时钟就无法推进了。
2022-10-07 14:53:16
2319
原创 DataStreamAPI-输出算子
如果我们想将数据存储到我们自己的存储设备中,而 Flink 并没有提供可以直接使用的连接器,又该怎么办呢?与 Source 类似,Flink 为我们提供了通用的 SinkFunction 接口和对应的 RichSinkDunction 抽象类,只要实现它,通过简单地调用 DataStream 的.addSink()方法就可以自定义写入任何外 部存储。之前与外部系统的连接,其实都是连接器帮我们实现了 SinkFunction,现在既然没有 现成的,我们就只好自力更生了。
2022-10-06 16:14:54
715
原创 DataStreamAPI-转换算子
在前面的介绍我们可以发现,Flink 的 DataStream API 编程风格其实是一致的:基本上都 是基于 DataStream 调用一个方法,表示要做一个转换操作;方法需要传入一个参数,这个参 数都是需要实现一个接口。我们还可以扩展到 5.2 节讲到的 Source 算子,其实也是需要自定 义类实现一个 SourceFunction 接口。我们能否从中总结出一些规律呢?
2022-10-06 12:09:27
1151
原创 DataStream API(执行环境、源算子)
大多数情况下,前面的数据源已经能够满足需要。但是凡事总有例外,如果遇到特殊情况, 我们想要读取的数据源来自某个外部系统,而 flink 既没有预实现的方法、也没有提供连接器, 又该怎么办呢?那就只好自定义实现 SourceFunction 了。接下来我们创建一个自定义的数据源,实现 SourceFunction 接口。主要重写两个关键方法: run()和 cancel()。⚫ run()方法:使用运行时上下文对象(SourceContext)向下游发送数据;
2022-10-04 22:24:27
517
转载 Flink 运行时架构
要解答这个问题,我们需要先梳理一下其他框架分配任务、数据处理的过程。对于 Spark 而言,是把根据程序生成的 DAG 划分阶段(stage)、进而分配任务的。而对于 Flink 这样的流式引擎,其实没有划分 stage 的必要。因为数据是连续不断到来的,我们完全可以按照数据流图建立一个“流水线”,前一个操作处理完成,就发往处理下一步操作的节点。
2022-10-03 11:18:16
582
原创 Flink部署
可以看到,Flink 本地启动非常简单,直接执行 start-cluster.sh 就可以了。如果我们想要扩展成集群,其实启动命令是不变的,主要是需要指定节点之间的主从关系。Flink 是典型的 Master-Slave 架构的分布式数据处理框架,其中 Master 角色对应着 JobManager,Slave 角色则对应 TaskManager。
2022-10-03 09:42:53
2082
原创 Flink(初识Flink,快速上手)
Flink 是一个大数据流处理引擎,它可以为不同的行业提供大数据实时处理的解决方案。随着 Flink 的快速发展完善,如今在世界范围许多公司都可以见到 Flink 的身影。目前在全球范围内,北美、欧洲和金砖国家均是 Flink 的应用热门区域。当然,这些地区其实也就是 IT、互联网行业较发达的地区。Flink 在国内热度尤其高,一方面是因为阿里的贡献和带头效应,另一方面也跟中国的应用场景密切相关。中国的人口规模与互联网使用普及程度,决定了对大数据处理的速度要求越来越高,也迫使中国的互联网企业去追逐更
2022-10-02 17:13:01
7029
2
原创 集群监控Zabbix
第一章Zabbix入门Zabbix 概述Zabbix是一款能够监控各种网络参数以及服务器健康性和完整性的软件。Zabbix使用灵活的通知机制,允许用户为几乎任何事件配置基于邮件的告警。这样可以快速反馈服务器的问题。基于已存储的数据,Zabbix提供了出色的报告和数据可视化功能Zabbix 基础架构
2022-09-29 22:35:55
765
1
原创 数仓全流程调度
1)将azkaban-db-3.84.4.tar.gz,azkaban-exec-server-3.84.4.tar.gz,azkaban-web-server-3.84.4.tar.gz上传到hadoop102的/opt/software路径。进入/opt/module/azkaban/azkaban-exec 路径 ,分别在三台机器上,启动executor server。进入Hadoop102的/opt/module/azkaban/azkaban-web路径,启动webserver。
2022-09-25 16:04:12
915
原创 即席查询-Kylin&Presto
Presto是一个开源的分布式SQL查询引擎,数据量支持GB到PB字节,主要用来处理秒级查询的场景注意:虽然Presto可以解析SQL,但它不是一个标准的数据库。不是MySQL、Oracle的替代品,也非不能用户处理在线事务。
2022-09-25 15:29:05
529
原创 数仓笔记(五)-DWD层,DWS层
1)map结构数据定义2)array结构数据定义3)struct结构数据定义4)struct和array嵌套定义。6.1.3 启动日志表思路解析:启动日志表中每行数据对应一个启动记录,一个启动记录应该包含日志中的公共信息和启动信息。先将所有包含start字段的日志过滤出来,然后使用get_join_object函数解析每个字段
2022-09-18 21:48:49
954
原创 SpringBoot学习笔记
SpringBoot为SpringMVC提供了自动配置,大多场景我们都无需自己自定义配置自动配置的内容包括:内容协商视图解析器和BeanName视图解析器静态资源(包括webjars)自动注册Converter,GenericConverter,Formatter支持HttpMessageConverters自动住处MessageCodesResolver(国际化用)静态index.html页面支持自定义Favicon。
2022-09-18 18:26:08
393
原创 Hive(基本概念,配置,数据类型,DDL,DML)
1)hive简介Hive:有Facebook开源用于解决海量结构化日志的数据统计工具Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能2)Hive 本质:将HQL转化成MapReduce程序Hive处理的数据存储在HDFSHive分析数据底层的实现是MapReduce执行程序运行在Yarn上1)创建一个数据库,数据库在HDFS上的默认存储路径是/user/hive/warehouse/*.db。
2022-09-18 18:11:58
569
原创 数仓(二)—业务数据采集平台
电商的业务流程可以以一个普通用户的浏览足迹为例进行说明,用户点开电商首页开始浏览,可能会通过分类查询也可能通过全文搜索寻找自己中意的商品,这些商品无疑都是存储在后台的管理系统中的。当用户寻找到自己中意的商品,可能会想要购买,将商品添加到购物车后发现需要登录,登录后对商品进行结算,这时候购物车的管理和商品订单信息的生成都会对业务数据库产生影响,会生成相应的订单数据和支付数据。订单正式生成之后,还会对订单进行跟踪处理,直到订单全部完成。
2022-09-11 00:15:50
571
3
原创 Shell学习笔记
Shell是一个命令行解释器,它接收应用程序/用户命令,然后调用操作系统内核Shell还是一个功能相当强大的编程语言2)bash和sh的关系sh和bash都是linux的一种,bash命令是sh命令的超集,大多数sh脚本都可以在bash下运行3)centos默认的解析器是bash第二章 Shell脚本入门1)脚本格式脚本以#!/bin/bash 开头(指定解析器
2022-09-04 15:23:40
333
1
原创 电商数仓学习笔记(一)
数据仓库( Data Warehouse ),是为企业制定决策,提供数据支持的。可以帮助企业,改进业务流程、提高产品质量等。数据仓库的输入数据通常包括:业务数据、用户行为数据和爬虫数据等业务数据:就是各行业在处理事务过程中产生的数据。比如用户在电商网站中登录、下单、支付等过程中,需要和网站后台数据库进行增删改查交互,产生的数据就是业务数据。业务数据通常存储在MySQL、Oracle等数据库中。
2022-09-03 22:45:36
859
原创 Hadoop学习笔记(一)
Hadoop Distributed File System 是一个分布式文件系统NameNode(nn):存储文件的元数据,如文件名,文件目录结构,文件属性(生成时间,副本数、文件权限),以及每个文件的快列表和块所在的DataNode等DataNode(dn):在本地文件系统存储文件块数据,以及块数据的校验和Secondary NameNode(2nn) :每隔一段时间对NameNode元数据备份。
2022-09-02 16:17:30
948
原创 java报表技术-图形报表
java平台上的一个开放的图标绘制类库。完全使用java编写,可生成饼图、柱状图、散点图、时许图、甘特图等等多种图表,并且可以产生png和jpeg格式的输出,还可以与pdf或excel关联Highcharts是一个用纯js编写的一个图标库,能够很简单便携的在web网络或者web应用程序添加有交互性的图标,并且免费提供给个人学习、个人网站和非商业用途使用。HighCharts支持的图表类型有曲线图、区域图、柱状图、饼状图、散装点图和综合图标。......
2022-08-28 20:14:00
2020
原创 java报表数据可视化
说明:使用上面的方法导出数据时,必须要提前知道要到处数据再哪一行哪一个单元格,但是如果模板一旦发生调整,那么我们的java代码必须要修改,我们可以自定义导出的引擎,有了这个引擎即使模板修改了,我们的java代码也不用修改思路:在制作模板时,在需要插入数据的位置做上标记,在导出时,对象的属性要和标记做对应,如果对应匹配一样,就把值赋值到相应位置第一步:制作模板,将模板文件添加到项目中模板中添加了username、phone、birthday等用于标记,后台通过标记判断应该填入什么数据。...
2022-08-28 16:24:19
3607
2
原创 Linux基础学习
目录 linux目录结构VI/VIM编辑器1.一般模式2.编辑模式3.指令模式系统管理1.service服务管理2.systemctl3.系统运行级别4.关闭防火墙5.关机重启命令基本常用命令1.获取帮助信息2.文件目录类3.时间日期类4.用户管理命令5.文件权限类6.搜索查找类7.压缩和解压类8.磁盘查看和分区类9.进程管理类10.系统定时任务软件包管理1.RPM2.YUM目录结构:/bin 是Binary的缩写,存放着最经常使用的命令/sbin 存放的是系统管理员使用的系统管理程序/home 存放普通用
2022-07-11 16:29:25
104
1
原创 SSM整合模板
目录1、导入坐标以及补全包结构2、web.xml3、applicationContext.xml4、springmvc.xml其它配置文件内容大致包括以下几点(1)web.xmlspring 监听器ContextLoaderListenerspringmvc前端控制器dispatcherServlet乱码过滤器CharacterEncodingFilter(2)applicationContext.xml组件扫描(主要是service和mapper,不扫描controller)整合mybatis核心配置文件
2022-07-08 17:45:39
347
1
原创 MySQL简单入门
MySQL中的数据类型创建与使用数据库 修改数据库 创建表增删改 插入数据 更新数据 删除数据 基本的增删改 取别名DISTINCT 去重 空值参与运算 SELECT查询常数 显示表结构过滤数据 WHERE 运算符 算术运算符+ - * / % 比较运算符 等号运算符 = 安全等于 <=> 不等于运算符 <> 或 !=非符号类型的运算符 空运算符 IS NULL 或ISNULL最小值运算符
2022-04-05 21:37:38
838
1
原创 Spring-MVC笔记
SpringMVC是Spring的一个后续产品,是Spring的一个子项目SpringMVC 是 Spring 为表述层开发提供的一整套完备的解决方案。在表述层框架历经 Strust、WebWork、Strust2 等诸多产品的历代更迭之后,目前业界普遍选择了 SpringMVC 作为 Java EE 项目表述层开发的首选方案。
2022-04-01 00:00:17
931
原创 设计模式学习笔记(下)
结构型模式描述如何将类或对象按某种布局组成更大的结构。它分为类结构型模式和对象结构型模式,前者采用继承机制来组织接口和类,后者采用组合或聚合来组合对象。
2022-03-22 11:49:54
740
原创 设计模式学习笔记(上)
软件设计模式,是一套被反复使用,多数人知晓、经过分类编目的、代码设计经验总结。它描述了在软件设计过程中的一些不断重复发生的问题,以及该问题的解决方案。也就是说,它是解决特定问题的一系列套路,是前辈们代码设计经验的总结,具有一定的普遍性,可以反复使用。
2022-03-18 21:31:22
379
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人