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 可…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

【入坑系列】TiDB 强制索引在不同库下不生效问题
文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例
文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互
引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...
稳定币的深度剖析与展望
一、引言 在当今数字化浪潮席卷全球的时代,加密货币作为一种新兴的金融现象,正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而,加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下,稳定…...

【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)
前言: 双亲委派机制对于面试这块来说非常重要,在实际开发中也是经常遇见需要打破双亲委派的需求,今天我们一起来探索一下什么是双亲委派机制,在此之前我们先介绍一下类的加载器。 目录 编辑 前言: 类加载器 1. …...

恶补电源:1.电桥
一、元器件的选择 搜索并选择电桥,再multisim中选择FWB,就有各种型号的电桥: 电桥是用来干嘛的呢? 它是一个由四个二极管搭成的“桥梁”形状的电路,用来把交流电(AC)变成直流电(DC)。…...