2024-02-28(Kafka,Oozie,Flink)
1.Kafka的数据存储形式

一个主题由多个分区组成
一个分区由多个segment段组成
一个segment段由多个文件组成(log,index(稀疏索引),timeindex(根据时间做的索引))

2.读数据的流程
消费者的offset是一个针对分区的全局offset
可以根据这个offset找到segment段
接着需要将全局offset转换成segment的局部offset
根据局部offset,就可以从(.index稀疏索引)找到对应的数据位置
开始顺序读取
3.Oozie的概念
Oozie是用来管理Hadoop生态圈Job的工作流调度系统,运行于Java Servlet容器上的一个Java Web应用,Oozie是按照DAG(有向无环图)的顺序调度一系列的Map/Reduce或者Hive等任务。Oozie由hPDL(Hadoop Process Definition Language)定义(XML格式的语言)。使用场景包括:需要按照顺序进行一系列任务;并行处理的任务;定时和周期触发的任务;可视化作业流运行过程;运行结果或异常的通报。
4.Oozie的架构

Oozie Client:提供命令行(CLI),Java API,rest等方式,对Oozie的工作流流程的提交,启动,运行等操作。
Oozie Web:Oozie Server,本质是一个Java应用,可以使用内置的Web容器,也可以使用外置的Web容器。
Hadoop Cluster:底层执行Oozie编排流程的各个Hadoop生态圈组件。
Oozie各种任务的提交底层都是依赖于MR程序。
5.Oozie的基本原理
Oozie对于工作流的编排,是基于workflow.xml文件来完成的。用于预先将工作流执行规则定制于workflow.xml文件中,并在job.properties配置相关的参数,然后由Oozie Server向MR提交job来启动工作流。
流程节点:
ControlFlowNodes:控制工作流执行路径,包括start,end,kill,decision,fork,join。
Action Nodes:决定每个操作执行的任务类型,包括MapReduce,Java,hive,shell等。
举例:

6.Oozie工作流类型:
1)WorkFlow:规则相对简单,不涉及定时,批处理的工作流。顺序执行节点
缺点:没有定时和条件触发功能。

2)Coordinator
Coordinator将多个工作流Job组织起来,成为Coordinator Job,并制定触发时间和频率,还可以配置数据集,并发数等,类似于在工作流外部增加了一个协调器来管理这些工作流的工作流Job的运行。

3)Bundle
针对coordinator的批处理工作流。Bundle将多个coordinator管理起来,这样我们只需要一个Bundle提交即可。

7.Oozie官方自带了许多案例,里面封装了各种类型任务的配置模板
所以后续可以根据官方给的这些配置模板进行修改就好。
8.感觉很多中间件的使用就是配置好配置文件即可。在使用层面组件帮我们做了很多事
9.Oozie调度流程
1)根据官方自带的示例编写配置文件
job.properties workflow.xml
2)把任务配置信息连同依赖的资源一起上传到hdfs指定的路径,这个路径在配置中有
3)利用Oozie的命令进行提交
10.Oozie任务串联
在实际工作中,肯定会存在多个任务需要执行,并且存在上一个任务的输出的结果作为下一个任务的输入数据这样的情况,所以我们需要在workflow.xml配置文件当中配置多个action,实现多个任务之间的相互依赖关系。
比如:先执行一个shell脚本,执行完了之后再执行一个MR的程序,最后再执行一个hive程序。
其实就是依靠workflow.xml配置文件来控制好节点的流程。
11.Oozie定时调度
主要是通过coordinator来实现任务的定时调度,Coordinator模块主要通过xml来配置即可。
有两种调度方式:1)基于时间的定时任务调度;2)基于数据的任务调度。
12.Hue集成Oozie
背景:Oozie本身的开发不是很友好,不论是调度Hive程序还是调度MapReduce程序,都要编写大量的配置文件,然后做上传提交,再执行,比较麻烦。
Hue可以实现鼠标拖拽的办法来实现Oozie所支持的所有功能。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Flink
13.Flink支持所有的流式计算
14.Flink的发展
第 1 代:Hadoop MapReduc 批处理 Mapper、Reducer 2;
第 2 代:DAG 框架(Oozie 、Tez),Tez + MapReduce 批处理 1 个 Tez = MR(1) + MR(2) + ... + MR(n) 相比 MR 效率有所提升;
第 3 代:Spark 批处理、流处理、SQL 高层 API 支持 自带 DAG 内存迭代计算、性能较之前大幅提;
第 4 代:Flink 批处理、流处理、SQL 高层 API 支持 自带 DAG 流式计算性能更高、可靠性更高。
15.什么是Flink
Apache Flink 是一个框架和分布式处理引擎,用于对无界和有界数据流进行有状态计算。Flink 被设计在所有常见的集群环境中运行,以内存执行速度和任意规模来执行计算。
16.什么是批处理和流处理
批处理的特点是有界、持久、大量,批处理非常适合需要访问全套记录才能完成的计算工作,一般用于离线统计。流处理的特点是无界、实时,流处理方式无需针对整个数据集执行操作,而是对通过系统传输的每个数据项执行操作,一般用于实时统计。
在 Spark 生态体系中,对于批处理和流处理采用了不同的技术框架,批处理由 SparkSQL 实现,流处理由 Spark Streaming 实现,这也是大部分框架采用的策略,使用独立的处理器实现批处理和流处理,而 Flink 可以同时实现批处理和流处理。
Flink 是如何同时实现批处理与流处理的呢?答案是,Flink 将批处理(即处理有限的静态数据)视作一种特殊的流处理。

上图为 Flink 技术栈的核心组成部分,值得一提的是,Flink 分别提供了面向流式处理的接口(DataStream API)和面向批处理的接口(DataSet API)。因此,Flink 既可以完成流处理,也可以完成批处理。Flink 支持的拓展库涉及机器学习(FlinkML)、复杂事件处理(CEP)、以及图计算(Gelly),还有分别针对流处理和批处理的 Table API。
17.Flink的四种运行模式
1)local模式
原理:在本地模拟多线程去模拟Flink中的各个角色。

2)StandAlone独立集群模式
原理:

3)Standalone-HA高可用集群模式
原理:
前面的架构中存在Job Manager有单点故障的风险,Job Manager担任任务调度和资源分配,它出现故障很危险。因此:

4)Flink-On-Yarn
原理:
为什么使用flink on yarn:
a.公司资源有限,大多数有Hadoop系统,节约资源;
b.yarnd的资源可以按需使用,提高集群的资源利用率;
c.yarn的任务有优先级,根据优先级运行作业;
d.基于yarn调度系统,能够自动化的处理各个角色的failover(容错):
d.1) JobManager进程和TaskManagerj进程都由Yarn NodeManager 监控
d.2) 如果JobManager进程异常退出,则Yarn RecourseManager 会重新调度JobManager到其他机器
d.3) 如果TaskManager 进程异常退出,JobManager 会收到消息并重新向Yarn RecourseManager 申请资源,重新启动TaskManager。

18.Flink on yarn的两种模式
1)Session模式(Session会话模式):在Yarn集群中启动了一个Flink集群,并重复使用该集群

特点:需要事先申请资源,启动JobManager和TaskManager
优点:不需要每次提交作业申请资源,而是使用已经申请好的资源,,从而提高执行效率
缺点:作业执行完之后,资源不会被释放,因此会一直占用系统资源
应用场景:适合作业提交比较频繁的场景,小作业比较多的场景
2)Per-Job模式(Job分离模式)(用的多):针对每个Flink任务都去启动一个独立的Flink集群,用完就关,不能重复使用该集群

特点:每次提交作业都需要申请一次资源
优点:作业运行完成,资源会立即释放,,不会一直占用系统资源
缺点:每次提交作业都需要申请资源,会影响执行效率,因为申请资源需要消耗时间
应用场景:适合作业比较少,大作业的场景。
19.Flink应用程序的编程模型
eg:


18.Flink中应用编程使用DataStream API,弃用DataSet API。
注意:在Flink1.12中,DataSteam既支持流处理也支持批处理。在后续开发中,把一切的数据源看作流即可。(批也可以看成流)
Flink保姆级教程,超全五万字,学习与面试收藏这一篇就够了_flink 教程-CSDN博客
相关文章:
2024-02-28(Kafka,Oozie,Flink)
1.Kafka的数据存储形式 一个主题由多个分区组成 一个分区由多个segment段组成 一个segment段由多个文件组成(log,index(稀疏索引),timeindex(根据时间做的索引)) 2.读数据的流程 …...
Window下编写的sh文件在Linux/Docker中无法使用
Window下编写的sh文件在Linux/Docker中无法使用 一、sh文件目的1.1 初始状态1.2 目的 二、过程与异常2.1 首先获取标准ubuntu20.04 - 正常2.2 启动ubuntu20.04容器 - 正常2.3 执行windows下写的preInstall文件 - 报错 三、检查和处理3.1 评估异常3.2 处理异常3.3 调整后运行测试…...
第16章-DNS
目录 1. 域名 1.1 产生背景 1.2 概述 1.3 域名的树形层次化结构 2. DNS 2.1 概述 2.2 工作机制 3. DNS查询模式 3.1 递归查询: 3.2 迭代查询: 4. 相关知识点 4.1 集中式DNS 4.2 国内通用DNS 4.3 配置DNS代理 1. 域名 1.1 产生背景 ① IP…...
Leetcoder Day27| 贪心算法part01
语言:Java/Go 理论 贪心的本质是选择每一阶段的局部最优,从而达到全局最优。 什么时候用贪心?可以用局部最优退出全局最优,并且想不到反例到情况 贪心的一般解题步骤 将问题分解为若干个子问题找出适合的贪心策略求解每一个子…...
SpringBoot自动配置中bean的加载控制
🙈作者简介:练习时长两年半的Java up主 🙉个人主页:程序员老茶 🙊 ps:点赞👍是免费的,却可以让写博客的作者开心好久好久😎 📚系列专栏:Java全栈,…...
Linux系统运维脚本:根据菜单选择要登录到的Linux主机,方便维护多个linux服务器
目 录 一、要求 二、解决方案 (一)解决思路 (二)方案 三、脚本程序实现 (一)脚本代码和解释 1、定义hosts.txt文件 2、脚本代码 3、代码解释 (二)脚本验证 1…...
蓝桥杯练习题——二分
1.借教室 思路 1.随着订单的增加,每天可用的教室越来越少,二分查找最后一个教室没有出现负数的订单编号 2.每个订单的操作是 [s, t] 全部减去 d #include<iostream> #include<cstring> using namespace std; const int N 1e6 10; int d[…...
Java面试——Redis
优质博文:IT-BLOG-CN 一、Redis 为什么那么快 【1】完全基于内存,绝大部分请求是纯粹的内存操作,非常快速。数据存在内存中。 【2】数据结构简单,对数据操作也简单,Redis中的数据结构是专门进行设计的。 【3】采用单线…...
信号系统之复数傅立叶变换
1 实数DFT 傅里叶变换系列的所有四个成员(DFT、DTFT、傅里叶变换和傅里叶级数)都可以用实数或复数进行。由于DSP主要关心的是DFT,所以就以它为例。 可以根据以下方程定义离散傅里叶变换的实数版本: 一个 N 个样本时域信号 被分解…...
Unity - 相机画面为黑白效果
一、 在Hierarchy中创建一个Global Volume,并设置它为局部作用 二、 将场景出现的作用域范围缩小至相机所在位置,将相机包含即可。 三、添加覆盖组件Color Adjustments,并将Saturation直接拉为-100 。 此时,相机拍摄画面为黑白,场景视图中…...
哈啰Java 春招 24届
时长 1h 3. 为什么使用分布式ID,解决了什么问题 4. Leaf算法了解吗?讲一下原理和工作流程以及优缺点 5. 有没有可能导致id重复?该如何解决? 6. 项目中redis是如何运用的? 7. 项目中分布式锁是如何实现的? 8…...
《剑指 Offer》专项突破版 - 面试题 68 : 查找插入位置/ 69 : 山峰数组的顶部(C++ 实现)
目录 面试题 68 : 查找插入位置 面试题 69 : 山峰数组的顶部 面试题 68 : 查找插入位置 题目: 输入一个排序的整数数组 nums 和一个目标指 t,如果数组 nums 中包含 t,则返回 t 在数组中的下标;如果数组 nums 中不包含 t&#…...
赖迪思软件 lattice Diamond
问题1:工程编译好后,git上传,变更分支又切换回来,再次编译有时候失败,所以配置好的管脚变成默认的,生成的IP核变成名变粗(顶部文件,管脚配置显示IP核输入输出信号配置)。…...
ROS开发基础-Linux基础第四部(开发板设置本地IP)
一 、网线连接设备 使用网线连接jetson NX与机械臂,如下图所示: 二、 修改上位机IPV4 IP ①测试是否可连接。网线连接机械臂之后,在桌面打开终端输入命令“ping 192.168.1.18”,如不可正常通信,可按照下述步骤进行设置。 ②在U…...
TSINGSEE青犀AI智能分析网关V4智慧油田安全生产监管方案
一、方案背景 随着科技的不断发展,视频监控技术在油田行业中得到了广泛应用。为了提高油田生产的安全性和效率,建设一套智能视频监控平台保障安全生产显得尤为重要。本方案采用先进的视频分析技术、物联网技术、云计算技术、大数据和人工智能技术&#…...
C++基于多设计模式下的同步异步日志系统day3
C基于多设计模式下的同步&异步日志系统day3 📟作者主页:慢热的陕西人 🌴专栏链接:C基于多设计模式下的同步&异步日志系统 📣欢迎各位大佬👍点赞🔥关注🚓收藏,&am…...
Cypher语句查询neo4j数据库教程
文章目录 Cypher介绍执行Cypher语句查询总结 Cypher介绍 NodeMatcher和RelationshipMatcher能够表达的匹配条件相对简单,更加复杂的查询还是需要用Cypher语句来表达。 Py2neo本身支持执行Cypher语句的执行,可以将复杂的查询写成Cypher语句,…...
【ESP32 IDF快速入门】点亮第一个LED灯与流水灯
文章目录 前言一、有哪些工作模式?1.1 GPIO的详细介绍1.2 GPIO的内部框图输入模式输出部分 二、GPIO操作函数2.1 GPIO 汇总2.2 GPIO操作函数gpio_config配置引脚reset 引脚函数设置引脚电平选中对应引脚设置引脚的方向 2.3 点亮第一个灯 三、流水灯总结 前言 ESP32…...
再见,Visual Basic——曾经风靡一时的编程语言
2020年3月,微软团队宣布了对Visual Basic(VB)的“终审判决”:不再进行开发或增加新功能。这意味着曾经风光无限的VB正式退出了历史舞台。 VB是微软推出的首款可视化编程软件,自1991年问世以来,便受到了广大…...
【C++精简版回顾】18.文件操作
1.文件操作头文件 2.操作文件所用到的函数 1.文件io 1.头文件 #include<fstream> 2.打开文件 (1)函数名 文件对象.open (2)函数参数 /* ios::out 可读 ios::in 可…...
Linux应用开发之网络套接字编程(实例篇)
服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...
智慧医疗能源事业线深度画像分析(上)
引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...
MongoDB学习和应用(高效的非关系型数据库)
一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...
遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...
汽车生产虚拟实训中的技能提升与生产优化
在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...
定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...
多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验
一、多模态商品数据接口的技术架构 (一)多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如,当用户上传一张“蓝色连衣裙”的图片时,接口可自动提取图像中的颜色(RGB值&…...
Qt Http Server模块功能及架构
Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...
DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...
