2024-02-28(Kafka,Oozie,Flink)

news2024/11/18 23:23:20

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.coloradmin.cn/o/1475909.html

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

相关文章

Swagger接口文档管理工具

Swagger 1、Swagger1.1 swagger介绍1.2 项目集成swagger流程1.3 项目集成swagger 2、knife4j2.1 knife4j介绍2.2 项目集成knife4j 1、Swagger 1.1 swagger介绍 官网:https://swagger.io/ Swagger 是一个规范和完整的Web API框架,用于生成、描述、调用和…

textbox跨线程写入

实现实例1 实现效果 跨线程实现 // 委托,用于定义在UI线程上执行的方法签名 //public delegate void SetTextCallback(string text);public void textBoxText(string text){// 检查调用线程是否是创建控件的线程 if (textBox1.InvokeRequired){// 如果不是&#…

React UI框架Antd 以及 如何按需引入css样式配置(以及过程中各种错误处理方案)

一、react UI框架Antd使用 1.下载模块 npm install antd -S 2.引入antd的样式 import ../node_modules/antd/dist/reset.css; 3.局部使用antd组件 import {Button, Calendar} from antd; import {PieChartTwoTone} from ant-design/icons; {/* 组件汉化配置 */} import l…

Ant for Blazor做单个表的增删查改

Ant for Blazor做单个表的增删查改 2024年02月27日花了一天时间弄出来了,基本弄好了,vs2022blazor servernet8,引用的AntDesign版本是0.17.4 代码里的model和repository是用自己牛腩代码生成器生成的东西,sqlsugar的,记得在prog…

ROS 2基础概念#1:计算图(Compute Graph)| ROS 2学习笔记

在ROS中,计算图(ROS Compute Graph)是一个核心概念,它描述了ROS节点之间的数据流动和通信方式。它不仅仅是一个通信网络,它也反映了ROS设计哲学的核心——灵活性、模块化和可重用性。通过细致探讨计算图的高级特性和实…

面试数据库篇(mysql)- 12分库分表

拆分策略 垂直分库 垂直分库:以表为依据,根据业务将不同表拆分到不同库中。 特点: 按业务对数据分级管理、维护、监控、扩展在高并发下,提高磁盘IO和数据量连接数垂直分表:以字段为依据,根据字段属性将不同字段拆分到不同表中。 特点: 1,冷热数据分离 2,减少IO过渡争…

CSS——PostCSS简介

文章目录 PostCSS是什么postCSS的优点补充:polyfill补充:Stylelint PostCSS架构概述工作流程PostCSS解析方法PostCSS解析流程 PostCSS插件插件的使用控制类插件包类插件未来的CSS语法相关插件后备措施相关插件语言扩展相关插件颜色相关组件图片和字体相关…

Rocky Linux安装部署Elasticsearch(ELK日志服务器)

一、Elasticsearch的简介 Elasticsearch是一个强大的开源搜索和分析引擎,可用于实时处理和查询大量数据。它具有高性能、可扩展性和分布式特性,支持全文搜索、聚合分析、地理空间搜索等功能,是构建实时应用和大规模数据分析平台的首选工具。 …

车牌识别-只用opencv的方式

项目简述 本文描述如何只使用opencv将车牌中的车牌号提取出来,整个过程大致分为三个过程:车牌定位,车牌号元素分割,模式匹配。 在做完这个实验后,我感触是,只用opencv的方式能使用的场景有限,不…

2.27数据结构

1.链队 //link_que.c #include "link_que.h"//创建链队 Q_p create_que() {Q_p q (Q_p)malloc(sizeof(Q));if(qNULL){printf("空间申请失败\n");return NULL;}node_p L(node_p)malloc(sizeof(node));if(LNULL){printf("申请空间失败\n");return…

【八股文学习日记】集合概述

【八股文学习日记】集合概述 集合概述 Java 集合, 也叫作容器,主要是由两大接口派生而来:一个是 Collection接口,主要用于存放单一元素;另一个是 Map 接口,主要用于存放键值对。对于Collection 接口&#…

深入理解分库、分表、分库分表

前言 分库分表,是企业里面比较常见的针对高并发、数据量大的场景下的一种技术优化方案,所谓"分库分表",根本就不是一件事儿,而是三件事儿,他们要解决的问题也都不一样,这三个事儿分别是"只…

kali安装ARL灯塔(docker)

1、root身份进入容器 ┌──(root㉿Kali)-[~/桌面] └─# su root ┌──(root㉿Kali)-[~/桌面] └─# docker 2、先更新再克隆 ┌──(root㉿Kali)-[~/桌面] └─# apt-get update …

【Android安全】Windows 环境下载 AOSP 源码

准备环境 安装 git 安装 Python 硬盘剩余容量最好大于 800G 打开 Git Bash,用 git 克隆源代码仓库 git clone https://android.googlesource.com/platform/manifest.git //没有梯子使用清华源 git clone https://aosp.tuna.tsinghua.edu.cn/platform/manifest.git这…

mac苹果电脑系统最好用的清理软件CleanMyMac2024功能介绍及如何激活解锁许可证

CleanMyMac X的界面设计简洁大气,为用户提供了直观且易于操作的使用体验。 布局清晰:界面布局非常明朗,左侧是功能栏,右侧则是信息界面。这种布局方式使得用户能够迅速找到所需的功能选项,提高了操作效率。色彩搭配&a…

Linux磁盘设备LVM介绍和常用场景说明

Linux常见的物理设备数据备份和负载均衡模式 1. LVM技术说明2. 相关概念3. 常用命令3.1 安装lvm命令3.2 创建分区3.3 格式化成LVM3.4 其他格式化 4. 常用场景4.1 创建LVM并挂载4.2 LVM扩容4.2.1 xfs扩容4.2.2 ext4扩容 4.2 缩减逻辑卷lv4.3 缩减vg:(迁移…

LeetCode 刷题 [C++] 第54题.螺旋矩阵

题目描述 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。 题目分析 根据题意可知,我们不需要记录已经走过的路径,只需要通过调整矩阵的上下左右边界即可完成任务;首先创建出矩阵…

Unity中URP下实现水体(水面反射)

文章目录 前言一、原理1、法一:使用立方体纹理 CubeMap,作为反射纹理使用2、法二:使用反射探针生成环境反射图,所谓反射的采样纹理 二、实现水面反射1、定义和申明CubeMap2、反射向量需要什么3、计算 N ⃗ \vec{N} N 4、计算 V ⃗…

10_Vue

文章目录 Vue快速入门Vue的指令Vue的插值表达式V指令v-bind(单向绑定)v-model(双向绑定)v-on(事件监听)v-for(循环)v-text、v-htmlv-show(显示/隐藏)v-if&…

解压缩软件哪个好用?附详细操作步骤~

在日常生活和工作中,我们经常需要处理各种压缩文件,如ZIP、RAR、嗨格式压缩大师等。而要解压这些文件,就需要借助专门的解压缩软件。然而,在众多的解压缩软件中,究竟哪个更好用呢?本文将带您一起探寻&#…