【Flink】Flink作业提交流程及Java编程模型之WordCount
作业(Job)提交流程高层级抽象视角
Flink 的提交流程,随着部署模式、资源管理平台的不同,会有不同的变化。首先我们从一个高层级的视角,来做一下抽象提炼,看一看作业提交时宏观上各组件是怎样交互协作的。
具体步骤如下:
(1) 一般情况下,由客户端(App)通过分发器提供的 REST 接口,将作业提交给JobManager。
(2)由分发器启动 JobMaster,并将作业(包含 JobGraph)提交给 JobMaster。
(3)JobMaster 将 JobGraph 解析为可执行的 ExecutionGraph,得到所需的资源数量,然后向资源管理器请求资源(slots)。
(4)资源管理器判断当前是否由足够的可用资源;如果没有,启动新的 TaskManager。
(5)TaskManager 启动之后,向 ResourceManager 注册自己的可用任务槽(slots)。
(6)资源管理器通知 TaskManager 为新的作业提供 slots。
(7)TaskManager 连接到对应的 JobMaster,提供 slots。
(8)JobMaster 将需要执行的 ...
【Flink】Flink技术栈(Theory及集群部署)
流式计算什么是数据流?什么是数据集
批处理对应的是数据集
流处理对应的是数据流
无界数据流和有界数据流
有界数据流:明确定义开始和结束的数据流,计算之前获取的所有数据-mysql、日志文件
无界数据流:只有开始没有结束的数据流,获取数据立即处理,无法等待所有数据到达-socket、kafka
硬核Flink介绍基本介绍这里先贴上一个官方链接🔗保命: https://flink.apache.org/
第1代—Hadoop MapReduce
首先第一代的计算引擎,无疑就是 Hadoop 承载的 MapReduce。它将计算分为两个阶段,分别为 Map 和 Reduce。对于上层应用来说,就不得不想方设法去拆分算法,甚至于不得不在上层应用实现多个 Job 的串联,以完成一个完整的算法,例如迭代计算。
第2代—DAG框架(Tez) + MapReduce
由于这样的弊端,催生了支持 DAG 框架的产生。因此,支持 DAG 的框架被划分为第二代计算引擎。如 Tez 以及更上层的 Oozie。这里我们不去细究各种 DAG 实现之间的区别,不过对于当时的 Tez 和 Oozie ...
【计算机网络(上篇)】计算机网络基础
用MarkDown写出漂亮的数学公式,参考:
https://wangzhangfei.blog.csdn.net/article/details/108947641
https://blog.csdn.net/jyfu2_12/article/details/79207643
计算机网络7层结构
应用层 应用层(application-layer)的任务是通过应用进程间的交互来完成特定网络应用。应用层协议定义的是应用进程(进程:主机中正在运行的程序)间的通信和交互的规则。对于不同的网络应用需要不同的应用层协议。在互联网中应用层协议很多,如域名系统 DNS,支持万维网应用的 HTTP 协议,支持电子邮件的 SMTP 协议等等。我们把应用层交互的数据单元称为报文。
运输层 运输层(transport layer)的主要任务就是负责向两台主机进程之间的通信提供通用的数据传输服务。应用进程利用该服务传送应用层报文。“通用的”是指并不针对某一个特定的网络应用,而是多种应用可以使用同一个运输层服务。 由于一台主机可同时运行多个线程,因此运输层有复用和分用的功能。所谓复用就是指多个 ...
【Java温故知新(四)】JDBC优化方案|多线程|Maven
JDBC连接数据库的两种优化方案:
C3P0连接池
防SQL注入(使用preparedStatement预编译)
回顾JDBC
就跟Pymysql差不多,JDBC使用规范步骤 : 6大步.
JDBC规范(掌握四个核心对象):
1 DriverManager:用于注册驱动
2 Connection: 表示与数据库创建的连接
3 Statement: 操作数据库sql语句的对象
4 ResultSet: 结果集或一张虚拟表
1, 注册驱动
MySQL5.x版本Class.forName("com.mysql.jdbc.Driver");
MySQL8.x版本Class.forName("com.mysql.cj.jdbc.Driver");
2, 获取连接对象Connection conn = DriverManager.getConnection(url,username,password);
参数1: url路径地址 格式: jdbc:数据库名称://host:port/数据库名
MySQ ...
【Java温故知新(三)】异常|集合|可变参|Lambda|JDBC
异常异常体系
12345678Throwable //异常体系的最顶层类Error Exception 非RunTimeExceptionException RuntimeExceptionJava 把所有的非正常的情况分为两种:异常(Exception) 和错误(Error),他们都继承 Throwable 父类。Error 错误,一般指的是与虚拟机相关的问题,如系统崩溃、虚拟机错误、动态链接失败等,这种错误无法恢复或不可能捕获,将导致应用程序中断结束,所以应用程序不应该试图去 catch 捕获 Error对象。
JVM默认处理异常的方式: 直接打印在控制台, 抛出来, 后续代码不在执行
处理异常方式:方式一: 自己处理: try.catch.finally特点: 处理完后, 程序会继续向下执行.
12345678//格式try{//业务实现的代码} catch(Exception e) {e.printStackTrace()} finally{//回收资源,这里总会被执行。}
Demo( ...
【Java温故知新(二)】面向对象|API|工具类
抽象类抽象类的由来:
回顾昨天写的动物类代码, 我们在其中写了1个eat()方法, 方法中有一句”废话”: 动物会吃.不同的动物吃的内容是不一样的, 所以这句话写了也没有意义, 我们就思考, 能不能删掉呢?这样的方法就叫: 抽象方法, 有抽象方法的类, 就叫抽象类, Java中, 抽象用abstract表示.
抽象类的特点:
Java中, 抽象用 abstract关键字表示.
有抽象方法的类一定是抽象类(或者接口), 但是抽象类中不一定有抽象方法.
抽象类不能直接实例化. 问: 那抽象类怎么实例化呢? 答: 通过 抽象类多态 实现, 即: 创建该抽象类的子类对象即可.
抽象类的子类. 如果是普通类: 则必须重写该抽象类中所有的抽象方法. 如果是抽象类: 则可以不用重写父类中的抽象方法.
抽象类的成员特点: (即, 抽象类中能写啥, 不能写啥.)
专业版: 变量, 常量, 构造方法, 非静态方法, 静态方法, 抽象方法.简单记忆: 抽象类比普通类多一种抽象方法, 而且还可以不写.
问: 抽象类中的 抽象方法 和 非抽象方法有什么意义?
抽象方法: 强制要求子类必须完成某 ...
【Java温故知新(一)】数组|面向对象特征|两个关键字
数组相关
和Python中一样, Java中也是有用来同时存储多个同类型元素的容器的, 那就是: 数组. 在一个数组中,数据元素的类型是唯一的,即一个数组中的元素的类型相同。
定义数组
方式一: 动态初始化 (我们给定长度, 由系统给出默认初始化值)
12345格式一: 数据类型[] 数组名 = new 数据类型[长度];格式二: 数据类型 数组名[] = new 数据类型[长度];
解释: 上述两种定义方式只是写法不同, 并无其他区别
方式二: 静态初始化(我们给定初始化值, 由系统指定长度)
12345格式一: 数据类型[] 数组名 = new 数据类型[]{元素1, 元素2, 元素3}; 格式二: 数据类型[] 数组名 = {元素1, 元素2, 元素3};
解释: 上述两种定义方式只是写法不同, 并无其他区别.
数组中的默认值12345例如:int类型数组, 元素默认值是: 0double类型的数组, 元素默认值是: 0.0boolean类型的数组, 元素默认值是: falseString类型的数组, 元素默认值是: n ...
【富华保险】项目总结及标签计算全流程
首先梳理一下流程:
业务数据库 → HDFS → Hive数仓分层(ODS层) → ElasticSearch → 标签计算 → 读取元数据将计算结果写入到ElasticSearch
项目总结幕布: https://www.mubu.com/doc/lV4_0JwoCW
项目背景
行业特点:
1.实时需求较少、离线需求较多
2.指标计算对精度要求较高
为了能更好地分析历史用户的行为习惯,将用户标签化,利用大数据技术分析用户的偏好和行为,可以帮助保险公司更好地开展精准营销、产品定制、风险评估、理赔处理、客户服务等业务,从而更好地满足客户需求,提升业务效率和客户体验,为公司提高收益
标签体系一级标签: (行业)保险行业
二级标签: 子行业-三有保险用户画像
三级标签: 标签大类-投保客户类型、投保详情商业类型、理赔记录赔付类型、退保记录流式类型
四级标签: 标签的一个类别(对应一个计算任务):性别、身高、年龄、省市、区域、收入、民族、婚姻状况、教育程度、缴费期、购买保险的年龄、购买周期、保险类型、保单状态、保单持有日期等
五级标签: 四级标签对应的具体的值:标签规则就是标签计算的依 ...
【富华保险】DolphinScheduler技术栈
DolphinScheduler介绍DS是什么?
DolphinScheduler是分布式的工作流调度工具平台,是以DAG组织任务流,具有资源监控,任务监控、定时调度,可以调度30+类型的任务
开源官网
中文的官网:
https://dolphinscheduler.apache.org/zh-cn
ds的文档官网:
https://dolphinscheduler.apache.org/zh-cn/docs/1.3.5
DS架构
集群角色
MasterServer: ds的主节点角色
WorkerServer:ds的工作节点角色
ApiApplicationServer:提供API接口服务的角色
AlertServer:提供告警服务角色
LoggerServer:提供日志服务角色
DS配置
必装软件:
zookeeper
mysql
hadoop
修改配置:
common.properties
datasource.properties
install_config.conf
dolphinscheduler_env.sh
修改内容:
1234567 ...
【富华保险】项目简介及项目配置流程和启动
本项目涵盖两方面的内容:
保险数仓
保险用户画像
项目背景精算说明
整个保险行业中, 最为核心的技术就是精算, 精算简单来说, 就是根据不同年龄以及保额来计算需要收取多少保费的问题, 精算的出现改变了从早期的经验判断的方案来确定保费阶段, 让保险行业更加的专业化, 精细化 , 准确化
精算行业并不仅仅解决保费的问题, 包含有: 确保保费的费率, 应付意外损失的准备金、自留限额、未到期责任准备金和未决赔款准备金等方面, 都力求采用更精确的方式取代以前的经验判断
保险精算学主要研究事故的出险规律、损失的分布规律、保费的厘定、保险产品的设计、准备金的提取、偿付能力等保险具体问题
精算发展里程
发展里程说明:
1693年,英国大数学家、天文学家哈雷编制出第一张生命表,这就标志着精算学的诞生。
1757年,英国人简姆士·丹松首先提出应按保险人的年龄和保额收取保费,即提出保费的计算应考虑死亡率的大小。至此,精算思想正式进入人寿保险领域。
1764年,英国的爱德沃创办了世界上第一家人寿保险公司——伦敦公平人寿保险社,采用了简姆士·丹松的计算保费的思想和方法,并设立了专门的精算技术部门,承 ...