Flink实战(1)-了解Flink

这篇具有很好参考价值的文章主要介绍了Flink实战(1)-了解Flink。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        😄伙伴们,好久不见!这里是 叶苍ii
        ❀  作为一名大数据博主,我一直致力于分享最新的技术趋势和实战经验。近期,我在参加Flink的顾客营销项目,使用了PyFlink项目进行数据处理和分析。
        ❀  在这个文章合集中,我将与大家分享我的实战经验,探索PyFlink项目的魅力。

2.1. 了解Flink框架

        了解集群结构/角色        

        了解程序结构:Source、Sink、算子、taskManager、Jobmanager、Task等概念

        了解编程模型:有界、无界、批处理

        了解编码模板

        先上图:

Flink实战(1)-了解Flink,flink,大数据,python

2.1.1. Flink简介

        Flink是一个开源的流处理和批处理框架,具有高吞吐量、低延迟和容错性等特点。

它支持事件驱动的流处理模型,可以处理实时数据流和批量数据集。

2.1.2. Flink、Spark、MR 区别

        MapReduce、Spark和Flink都是用于大数据处理的分布式计算框架,但它们在设计理念和功能上有一些区别。

设计理念:

  • MapReduce:MapReduce是一种简化的编程模型,主要关注数据的并行处理和分布式计算。它适合批处理任务,但对于迭代计算和实时处理等场景相对不够灵活。
  • Spark:Spark是一个通用的分布式计算引擎,提供了更丰富的API和功能,包括批处理、交互式查询、流处理和机器学习等。它通过内存计算和弹性数据集(Resilient Distributed Datasets,RDD)的概念,实现了高效的数据处理和迭代计算。
  • Flink:Flink是一个流式处理引擎,专注于实时数据处理和流式计算。它支持事件时间和处理时间,并提供了窗口操作、状态管理和容错机制等功能,使得实时数据处理更加灵活和可靠。

数据处理模型:

  • MapReduce:MapReduce采用了经典的Map和Reduce操作模型,适合处理离散的批量数据。它将数据切分成小块进行并行处理,并通过中间结果的合并来得到最终结果。
  • Spark:Spark引入了弹性数据集(RDD)的概念,它是一个可分布式计算的不可变数据集合。Spark提供了丰富的转换操作(如map、filter、reduce等)和动作操作(如count、collect等),可以在内存中高效地进行数据处理和迭代计算。
  • Flink:Flink支持流式处理和批处理,并提供了统一的编程模型。它将数据视为无限的流,可以对流进行窗口操作、状态管理和复杂的流处理逻辑。

执行引擎:

  • MapReduce:MapReduce使用了分布式文件系统(如HDFS)和资源管理器(如YARN)来管理任务的调度和执行。
  • Spark:Spark引擎通过自己的集群管理器(如Standalone、YARN或Mesos)来管理任务的调度和执行。它还提供了交互式Shell和图形化界面,方便开发者进行调试和监控。
  • Flink:Flink引擎具有自己的分布式运行时,可以独立地管理任务的调度和执行。它支持故障恢复和容错机制,可以保证数据处理的可靠性和一致性。

总体而言,MapReduce适用于简单的批处理任务,Spark适用于更广泛的数据处理场景,而Flink则专注于实时数据处理和流式计算。选择哪个框架取决于具体的需求和应用场景。

2.1.3. Flink集群角色:taskManager、Jobmanager、Task

        在Apache Flink中,提交任务和执行任务有几个关键组件:Client、TaskManager、JobManager和Task。

Flink实战(1)-了解Flink,flink,大数据,python

2.1.3.1. Client(客户端):

        代码由客户端获取并且做转换,之后提交给Jobmanger

2.1.3.2. JobManager(作业管理器):

相当于"管理者"

  • JobManager是Flink集群中的主节点,负责整个作业的管理和调度。它负责接收用户提交的作业,并将作业进行解析、优化和分配给TaskManager执行。
  • JobManager维护着整个作业的执行状态和元数据信息,并负责故障恢复和容错机制。它会监控TaskManager的健康状态,并在需要时重新分配任务或重启失败的任务。
  • JobManager还提供了Web界面和REST API,用于作业的监控、管理和查询。
2.1.3.3. TaskManager(任务管理器):

相当于"工作者"/“干活的人”,进行数据处理操作。

  • TaskManager是Flink集群中的工作节点,负责执行具体的任务。每个TaskManager可以运行多个任务,并且可以在不同的机器上进行分布式部署。
  • TaskManager负责接收来自JobManager的任务分配,并根据任务的需求进行资源分配和管理。它会将任务划分为多个子任务(Subtask),并通过线程池来执行这些子任务。
  • TaskManager还负责与其他TaskManager之间进行数据交换和通信,以支持任务之间的数据流转和协调。
2.1.3.4. Task(任务):
  • Task是Flink中最小的执行单元,它是作业中实际执行的计算任务。一个作业可以由多个Task组成,每个Task负责处理数据的一部分。
  • Task接收输入数据,并通过用户定义的操作(如map、filter、reduce等)对数据进行处理和转换。它还负责将处理结果发送给下游的Task或输出到外部系统。
  • Task之间通过网络进行数据交换和通信,以实现数据流的传递和协调。

总结:

         在Flink中,TaskManager是执行具体任务的工作节点,负责任务的执行和资源管理;

         JobManager是整个作业的管理节点,负责作业的调度和故障恢复;

         Task是最小的执行单元,负责具体的数据处理和计算操作。这三个组件共同协作,实现了Flink的分布式计算和流式处理能力。

2.1.3.5. 举例:select city,sum(xxx) from table A group by city ;

Select(选择)操作

  • Select操作用于选择需要的字段或列,并可以进行一些简单的转换和计算。例如,从输入数据中选择特定的列,或者对某些列进行数值运算。
  • Select操作通常由一个或多个Task来执行。每个Task负责处理输入数据的一部分,并根据选择条件和转换规则进行相应的处理。

Sum(求和)操作:

  • Sum操作用于对某个字段或列进行求和计算。它通常结合Group By操作使用,将输入数据按照指定的字段进行分组,然后对每个分组内的数据进行求和。
  • 在Flink中,Sum操作也可以由一个或多个Task来执行。每个Task负责处理输入数据的一部分,并根据分组键进行数据分组和求和计算。

Group By(分组)操作:

  • Group By操作用于将输入数据按照指定的字段进行分组。它将具有相同分组键的数据划分到同一个组中,以便进行聚合操作(如求和、平均值等)。
  • 在Flink中,Group By操作通常涉及到数据重分区和洗牌操作,以确保具有相同分组键的数据被发送到同一个Task进行处理。

数据集:

A 1

A 2

B 3

A 1

B 3

A 1

        具体的任务划分和调度策略取决于Flink的配置和算法。

2.1.4. Flink程序结构

Flink程序的结构组件为Source、Transformation和Sink

Flink实战(1)-了解Flink,flink,大数据,python

2.1.4.1. Source

        Source(数据源):Source是Flink程序的起点,用于读取输入数据。

        从各种数据源(如文件、消息队列、Socket等)读取数据,并将其转化为Flink内部的数据流。

2.1.4.2. Transformation--》算子

        Transformation(转换操作):Transformation是对数据流进行处理和转换的操作。

        包括各种数据转换、过滤、聚合、分组等操作,用于对输入数据进行加工和处理。

        Flink提供了丰富的转换操作函数和算子,可以根据需求进行灵活的数据处理。

2.1.4.3. Sink

        Sink(数据接收器):Sink是Flink程序的终点,用于将处理后的数据输出到外部系统或存储介质。它可以将数据写入文件、数据库、消息队列等目标,或者发送给其他应用程序进行进一步处理。

2.1.5. 编程模型:有界、无界

        Flink是一个流式处理框架,它支持有界数据集(Batch)和无界数据流(Streaming)的处理。这使得Flink具备了灵活处理不同类型数据的能力。

  • 有界数据集(Batch Processing):有界数据集是指在处理之前已经存在的、有限大小的数据集合。在有界数据集模型中,Flink会将整个数据集加载到内存中进行处理。这种模型适用于离线批处理任务,如数据分析、报表生成等。Flink提供了丰富的转换操作和算子,可以对有界数据集进行高效的批处理。

Flink实战(1)-了解Flink,flink,大数据,python

  • 无界数据流(Stream Processing):无界数据流是指以连续、无限的方式产生的数据流。在无界数据流模型中,Flink会实时地处理数据流,并根据事件时间或处理时间进行窗口操作、聚合、过滤等实时计算。这种模型适用于实时数据处理场景,如实时监控、实时推荐等。Flink提供了强大的流处理功能,支持事件时间处理、状态管理、容错机制等。

Flink实战(1)-了解Flink,flink,大数据,python

        Flink编程模型的关键概念是“流”(Stream)和“转换”(Transformation)。在Flink中,数据被视为连续的流,通过一系列的转换操作来实现数据的加工和处理。转换操作可以包括数据转换、过滤、聚合、分组等操作,用于对输入数据进行处理。Flink提供了丰富的转换操作函数和算子,可以根据需求进行灵活的数据处理。

        无论是有界数据集还是无界数据流,Flink都提供了统一的编程接口和API,使得开发者可以使用相同的编程模型来处理不同类型的数据。这种统一的编程模型使得Flink非常适合在实时和离线场景中进行大规模数据处理和分析。

2.1.6. 编程固定模式:

  1. 创建执行环境
  2. 读取源数据
  3. 转换数据
  4. 输出转换结果
  5. 触发任务执行

了解完Flink,此合集的下集<搭建PyFLink环境>、<PyFLink的WordCount编程>,我们会继续讲解:

        (2)要搭建PyFlink环境,我们需要准备什么内容

        (3)PyFLink的WordCount编程文章来源地址https://www.toymoban.com/news/detail-794631.html

到了这里,关于Flink实战(1)-了解Flink的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 尚硅谷大数据Flink1.17实战教程-笔记01【Flink概述、Flink快速上手】

    尚硅谷大数据技术-教程-学习路线-笔记汇总表【课程资料下载】 视频地址:尚硅谷大数据Flink1.17实战教程从入门到精通_哔哩哔哩_bilibili 尚硅谷大数据Flink1.17实战教程-笔记01【Flink概述、Flink快速上手】 尚硅谷大数据Flink1.17实战教程-笔记02【Flink部署】 尚硅谷大数据Flink1.17实

    2024年02月09日
    浏览(45)
  • 【Flink实战】Flink 商品销量统计-实战Bahir Connetor实战存储 数据到Redis6.X

    🚀 作者 :“大数据小禅” 🚀 文章简介 :Flink 商品销量统计-实战Bahir Connetor实战存储 数据到Redis6.X 🚀 欢迎小伙伴们 点赞 👍、 收藏 ⭐、 留言 💬 Flink怎么操作Redis Flink怎么操作redis? 方式一:自定义sink 方式二:使用connector Redis Sink 核心是RedisMapper 是一个接口,使用时要

    2024年02月06日
    浏览(42)
  • 尚硅谷大数据Flink1.17实战教程-笔记02【Flink部署】

    尚硅谷大数据技术-教程-学习路线-笔记汇总表【课程资料下载】 视频地址:尚硅谷大数据Flink1.17实战教程从入门到精通_哔哩哔哩_bilibili 尚硅谷大数据Flink1.17实战教程-笔记01【Flink概述、Flink快速上手】 尚硅谷大数据Flink1.17实战教程-笔记02【Flink部署】 尚硅谷大数据Flink1.17实

    2024年02月11日
    浏览(38)
  • 尚硅谷大数据Flink1.17实战教程-笔记03【Flink运行时架构】

    尚硅谷大数据技术-教程-学习路线-笔记汇总表【课程资料下载】 视频地址:尚硅谷大数据Flink1.17实战教程从入门到精通_哔哩哔哩_bilibili 尚硅谷大数据Flink1.17实战教程-笔记01【Flink概述、Flink快速上手】 尚硅谷大数据Flink1.17实战教程-笔记02【Flink部署】 尚硅谷大数据Flink1.17实

    2024年02月16日
    浏览(43)
  • 【实战-01】flink cdc 实时数据同步利器

    cdc github源码地址 cdc官方文档 对很多初入门的人来说是无法理解cdc到底是什么个东西。 有这样一个需求,比如在mysql数据库中存在很多数据,但是公司要把mysql中的数据同步到数据仓库(starrocks), 数据仓库你可以理解为存储了各种各样来自不同数据库中表。 数据的同步目前对

    2023年04月08日
    浏览(51)
  • [Flink01] 了解Flink

    Flink入门系列文章主要是为了给想学习Flink的你建立一个大体上的框架,助力快速上手Flink。学习Flink最有效的方式是先入门了解框架和概念,然后边写代码边实践,然后再把官网看一遍。 Flink入门分为四篇,第一篇是《了解Flink》,第二篇《架构和原理》,第三篇是《DataStre

    2024年02月19日
    浏览(33)
  • 实战:大数据Flink CDC同步Mysql数据到ElasticSearch

    前面的博文我们分享了大数据分布式流处理计算框架Flink和其基础环境的搭建,相信各位看官都已经搭建好了自己的运行环境。那么,今天就来实战一把使用Flink CDC同步Mysql数据导Elasticsearch。 CDC简介 CDC 的全称是 Change Data Capture(变更数据捕获技术) ,在广义的概念上,只要

    2024年02月09日
    浏览(43)
  • 【大数据】Flink 内存管理(四):TaskManager 内存分配(实战篇)

    《 Flink 内存管理 》系列(已完结),共包含以下 4 篇文章: Flink 内存管理(一):设置 Flink 进程内存 Flink 内存管理(二):JobManager 内存分配(含实际计算案例) Flink 内存管理(三):TaskManager 内存分配(理论篇) Flink 内存管理(四):TaskManager 内存分配(实战篇) 😊

    2024年03月13日
    浏览(52)
  • 【flink番外篇】15、Flink维表实战之6种实现方式-维表来源于第三方数据源

    一、Flink 专栏 Flink 专栏系统介绍某一知识点,并辅以具体的示例进行说明。 1、Flink 部署系列 本部分介绍Flink的部署、配置相关基础内容。 2、Flink基础系列 本部分介绍Flink 的基础部分,比如术语、架构、编程模型、编程指南、基本的datastream api用法、四大基石等内容。 3、

    2024年01月21日
    浏览(65)
  • 尚硅谷大数据Flink1.17实战教程-笔记02【部署】

    尚硅谷大数据技术-教程-学习路线-笔记汇总表【课程资料下载】 视频地址:尚硅谷大数据Flink1.17实战教程从入门到精通_哔哩哔哩_bilibili 尚硅谷大数据Flink1.17实战教程-笔记01【Flink概述、Flink快速上手】 尚硅谷大数据Flink1.17实战教程-笔记02【Flink部署】 尚硅谷大数据Flink1.17实

    2024年02月09日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包