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提交即可。

6.Oozie官方自带了许多案例,里面封装了各种类型任务的配置模板

所以后续可以根据官方给的这些配置模板进行修改就好。

7.感觉很多中间件的使用就是配置好配置文件即可。在使用层面组件帮我们做了很多事

8.Oozie调度流程

1)根据官方自带的示例编写配置文件

job.properties  workflow.xml

2)把任务配置信息连同依赖的资源一起上传到hdfs指定的路径,这个路径在配置中有

3)利用Oozie的命令进行提交

9.Oozie任务串联

        在实际工作中,肯定会存在多个任务需要执行,并且存在上一个任务的输出的结果作为下一个任务的输入数据这样的情况,所以我们需要在workflow.xml配置文件当中配置多个action,实现多个任务之间的相互依赖关系。

比如:先执行一个shell脚本,执行完了之后再执行一个MR的程序,最后再执行一个hive程序。

其实就是依靠workflow.xml配置文件来控制好节点的流程

10.Oozie定时调度

        主要是通过coordinator来实现任务的定时调度,Coordinator模块主要通过xml来配置即可。

有两种调度方式:1)基于时间的定时任务调度;2)基于数据的任务调度。

11.Hue集成Oozie

背景:Oozie本身的开发不是很友好,不论是调度Hive程序还是调度MapReduce程序,都要编写大量的配置文件,然后做上传提交,再执行,比较麻烦。

Hue可以实现鼠标拖拽的办法来实现Oozie所支持的所有功能。

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Flink

12.Flink支持所有的流式计算

13.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 流式计算性能更高、可靠性更高。

14.什么是Flink

Apache Flink 是一个框架和分布式处理引擎,用于对无界和有界数据流进行有状态计算。Flink 被设计在所有常见的集群环境中运行,以内存执行速度和任意规模来执行计算。

15.什么是批处理和流处理

        批处理的特点是有界、持久、大量,批处理非常适合需要访问全套记录才能完成的计算工作,一般用于离线统计。流处理的特点是无界、实时,流处理方式无需针对整个数据集执行操作,而是对通过系统传输的每个数据项执行操作,一般用于实时统计。

        在 Spark 生态体系中,对于批处理和流处理采用了不同的技术框架,批处理由 SparkSQL 实现,流处理由 Spark Streaming 实现,这也是大部分框架采用的策略,使用独立的处理器实现批处理和流处理,而 Flink 可以同时实现批处理和流处理

        Flink 是如何同时实现批处理与流处理的呢?答案是,Flink 将批处理(即处理有限的静态数据)视作一种特殊的流处理

        上图为 Flink 技术栈的核心组成部分,值得一提的是,Flink 分别提供了面向流式处理的接口(DataStream API)和面向批处理的接口(DataSet API)。因此,Flink 既可以完成流处理,也可以完成批处理。Flink 支持的拓展库涉及机器学习(FlinkML)、复杂事件处理(CEP)、以及图计算(Gelly),还有分别针对流处理和批处理的 Table API。

16.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。

16.Flink on yarn的两种模式

1)Session模式(Session会话模式):在Yarn集群中启动了一个Flink集群,并重复使用该集群

特点:需要事先申请资源,启动JobManager和TaskManager

优点:不需要每次提交作业申请资源,而是使用已经申请好的资源,,从而提高执行效率

缺点:作业执行完之后,资源不会被释放,因此会一直占用系统资源

应用场景:适合作业提交比较频繁的场景,小作业比较多的场景

2)Per-Job模式(Job分离模式)(用的多):针对每个Flink任务都去启动一个独立的Flink集群,用完就关,不能重复使用该集群

特点:每次提交作业都需要申请一次资源

优点:作业运行完成,资源会立即释放,,不会一直占用系统资源

缺点:每次提交作业都需要申请资源,会影响执行效率,因为申请资源需要消耗时间

应用场景:适合作业比较少,大作业的场景。

17.Flink应用程序的编程模型

eg:

18.Flink中应用编程使用DataStream API,弃用DataSet API。

注意:在Flink1.12中,DataSteam既支持流处理也支持批处理。在后续开发中,把一切的数据源看作即可。(批也可以看成流)

Flink保姆级教程,超全五万字,学习与面试收藏这一篇就够了_flink 教程-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/707208.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

论文精读--GPT3

不像GPT2一样追求zero-shot,而换成了few-shot Abstract Recent work has demonstrated substantial gains on many NLP tasks and benchmarks by pre-training on a large corpus of text followed by fine-tuning on a specific task. While typically task-agnos…

Day04:APP架构小程序H5+Vue语言Web封装原生开发Flutter

目录 常见APP开发架构 APP-开发架构-原生态-IDEA APP-开发架构-Web封装-平台 APP-开发架构-H5&Vue-HBuilderX WX小程序-开发架构-Web封装-平台 WX小程序-开发架构-H5&Vue-HBuilderX 思维导图 章节知识点: 应用架构:Web/APP/云应用/三方服…

Leetcode—82. 删除排序链表中的重复元素 II【中等】

2024每日刷题(117) Leetcode—82. 删除排序链表中的重复元素 II 实现代码 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val…

在Golang中简化日志记录:提升性能和调试效率

最大化效率和有效故障排除:在Golang中简化日志记录 日志记录是软件开发的一个基本方面,有助于调试、监控和理解应用程序的流程。在Golang中,有效的日志记录实践可以显著提高性能并简化调试过程。本文探讨了优化Golang日志记录的技术&#xf…

服务器数据恢复-异常断电导致服务器硬盘离线的数据恢复案例

服务器数据恢复环境: dell某型号服务器中有一组通过raid卡组建的raid10,该raid阵列中一共有4块磁盘。上层部署XenServer虚拟化平台,作为网站服务器使用。 服务器故障: 服务器异常断电导致服务器上的一台虚拟机不可用。需要恢复这…

Java Web(八)--Servlet(二)

Servlet API Servlet API 包含以下4个Java包: 1. javax.servlet:其中包含定义Servlet和Servlet容器之间契约的类和接口。 2. javax.servlet.http:主要定义了与HTTP协议相关的HttpServlet类,HttpServletRequest接口和HttpServl…

C语言第三十二弹---自定义类型:联合和枚举

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】 目录 1、联合体 1.1、联合体类型的声明 1.2、联合体的特点 1.3、相同成员的结构体和联合体对比 1.4、联合体大小的计算 1.5、联合的⼀个练习 2、枚举类型 …

网络初识(概念入门)

目录 1.局域网VS广域网 1.1局域网 1.2广域网 2.五元组 2.1 IP和端口 2.1.1 IP 2.1.2端口号 2.2协议 3.协议分层 4. TCP/IP五层模型 5.封装和分用 5.1封装 5.2分用 1.局域网VS广域网 1.1局域网 简单介绍:指在某一特定区域内由多台计算机组成的互联网组…

springboot-基础-添加model和controller的简单例子+常用注解含义

备份笔记。所有代码都是2019年测试通过的,如有问题请自行搜索解决! 上一篇:springboot-基础-eclipse配置helloword示例 目录 添加model和controller的例子注解开发使用RestController 大坑 Model ModelMap和ModelAndView的区别 添加model和c…

only office-用着确实很省心

小程一言 最近一直在使用各种办公软件进行学习笔记整理,但是在使用过程中,总感觉不是自己想要的一款软件,想要一款真正懂自己的软件,是一个选择的过程。最近在网上闲逛发现一款宝藏软件,好奇心驱使我去进行适用&#…

Apache POl

介绍 Apache POl是一个处理Miscrosoft Ofice各种文件格式的开源项目。简单来说就是,我们可以使用 POI 在 Java 程序中对Miscrosoft Office各种文件进行读写操作,一般情况下,POI都是用于操作 Excel 文件。 Apache POl 的应用场景 1.银行网银系统导出交易…

VScode打开keil5软件的内容

VScode想要打开keil5软件的内容,需要在此引入 具体可参考: VS Code环境下编辑、编译、下载Keil工程代码

《大模型时代-ChatGPT开启通用人工智能浪潮》精华摘抄

原书很长,有19.3w字,本文尝试浓缩一下其中的精华。 知识点 GPT相关 谷歌发布LaMDA、BERT和PaLM-E,PaLM 2 Facebook的母公司Meta推出LLaMA,并在博客上免费公开LLM:OPT-175B。 在GPT中,P代表经过预训练(…

排序算法之快速排序(挖坑法)

挖坑法的思想:记第一个数为key,要调整key的位置,使得左边的都要比key的小,右边的数都比key的大。 记录下关键字keybegin,把28那个位置挖坑holebegin 让end找到小于28(key)的数,把那…

开源现场总线协议栈(ethercat、ethernet/ip、opc ua、profinet、canopen、modbus)

ecat主站及其相关: 1.soem:GitHub - OpenEtherCATsociety/SOEM: Simple Open Source EtherCAT MasterSimple Open Source EtherCAT Master. Contribute to OpenEtherCATsociety/SOEM development by creating an account on GitHub.https://github.com/…

【Simulink系列】——Simulink与Matlab接口使用命令行进行仿真

声明:本系列博客参考有关专业书籍,截图均为自己实操,仅供交流学习! 一、Simulink与Matlab接口 1、Matlab工作区变量设置模块参数 Matlab工作区的变量可以作为模块的设置参数 2、Matlab工作区变量作为输入信号 使用From Worksp…

项目解决方案:海外门店视频汇聚方案(全球性的连锁店、国外连锁店视频接入和汇聚方案)

目 录 一、概述 二、建设目标及需求 2.1 建设目标 2.2 需求描述 2.3 需求分析 三、建设方案设计 3.1 系统方案拓扑图 3.2 方案描述 3.3 服务器配置推荐 四、产品功能 4.1 资源管理平台 (1)用户权限管理 (2&#xff09…

Linux的gdb调试

文章目录 一、编译有调试信息的目标文件二、启动gdb调试文件1、查看内容list/l:l 文件名:行号/函数名,l 行号/函数名2、打断点b:b文件名:行号/函数名,b 行号/函数名 与 查看断点info/i:info b3、删除断点d:…

nginx之重写功能 模块指令 防盗链

一 重写功能 rewrite Nginx服务器利用 ngx_http_rewrite_module 模块解析和处理rewrite请求, 此功能依靠 PCRE(perl compatible regular expression),因此编译之前要安装PCRE库,rewrite是 nginx服务器的重要功能之一,重写功…

2024年3月5-7日第12届生物发酵技术装备展-奥博仪表

参观企业介绍 潍坊奥博仪表科技发展有限公司成立于2002年3月,注册资金1000万元,已有20多年的发展历程,是一家专业从事流量仪表开发、生产与测控系统集成的高新技术企业和双软认证企业。 目前公司以仪表、通讯产品、自控系统、软件的研发、生…