`
gaojingsong
  • 浏览: 1222206 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

【流式处理框架Flink】

阅读更多

Apache Flink® is an open-source stream processing framework for distributed, high-performing, always-available, and accurate data streaming applications.

 

这几年大数据的飞速发展,出现了很多热门的开源社区,其中著名的有 Hadoop、Storm,以及后来的 Spark,他们都有着各自专注的应用场景。Spark 掀开了内存计算的先河,也以内存为赌注,赢得了内存计算的飞速发展。Spark 的火热或多或少的掩盖了其他分布式计算的系统身影。就像 Flink,也就在这个时候默默的发展着。

 

Flink 是一个针对流数据和批数据的分布式处理引擎。它主要是由 Java 代码实现。目前主要还是依靠开源社区的贡献而发展。对 Flink 而言,其所要处理的主要场景就是流数据,批数据只是流数据的一个极限特例而已。再换句话说,Flink 会把所有任务当成流来处理,这也是其最大的特点。Flink 可以支持本地的快速迭代,以及一些环形的迭代任务。并且 Flink 可以定制化内存管理。在这点,如果要对比 Flink 和 Spark 的话,Flink 并没有将内存完全交给应用层。这也是为什么 Spark 相对于 Flink,更容易出现 OOM 的原因(out of memory)。就框架本身与应用场景来说,Flink 更相似与 Storm。



 

Flink 几个最基础的概念,Client、JobManager 和 TaskManager。

Client 用来提交任务给 JobManager,

JobManager 分发任务给 TaskManager 去执行,

TaskManager 会心跳的汇报任务状态。

看到这里,有的人应该已经有种回到 Hadoop 一代的错觉。确实,从架构图去看,JobManager 很像当年的 JobTracker,TaskManager 也很像当年的 TaskTracker。然而有一个最重要的区别就是 TaskManager 之间是是流(Stream)。其次,Hadoop 一代中,只有 Map 和 Reduce 之间的 Shuffle,而对 Flink 而言,可能是很多级,并且在 TaskManager 内部和 TaskManager 之间都会有数据传递,而不像 Hadoop,是固定的 Map 到 Reduce。

 

 

Flink 中的调度简述

在 Flink 集群中,计算资源被定义为 Task Slot。每个 TaskManager 会拥有一个或多个 Slots。JobManager 会以 Slot 为单位调度 Task。但是这里的 Task 跟我们在 Hadoop 中的理解是有区别的。对 Flink 的 JobManager 来说,其调度的是一个 Pipeline 的 Task,而不是一个点。举个例子,在 Hadoop 中 Map 和 Reduce 是两个独立调度的 Task,并且都会去占用计算资源。对 Flink 来说 MapReduce 是一个 Pipeline 的 Task,只占用一个计算资源。类同的,如果有一个 MRR 的 Pipeline Task,在 Flink 中其也是一个被整体调度的 Pipeline Task。在 TaskManager 中,根据其所拥有的 Slot 个数,同时会拥有多个 Pipeline。

在 Flink StandAlone 的部署模式中,这个还比较容易理解。因为 Flink 自身也需要简单的管理计算资源(Slot)。当 Flink 部署在 Yarn 上面之后,Flink 并没有弱化资源管理。也就是说这时候的 Flink 在做一些 Yarn 该做的事情。从设计角度来讲,我认为这是不太合理的。如果 Yarn 的 Container 无法完全隔离 CPU 资源,这时候对 Flink 的 TaskManager 配置多个 Slot,应该会出现资源不公平利用的现象。Flink 如果想在数据中心更好的与其他计算框架共享计算资源,应该尽量不要干预计算资源的分配和定义。



 

 

Flink 有三种部署模式,分别是 Local、Standalone Cluster 和 Yarn Cluster。对于 Local 模式来说,JobManager 和 TaskManager 会公用一个 JVM 来完成 Workload。

  • 大小: 141.7 KB
  • 大小: 70.8 KB
0
0
分享到:
评论

相关推荐

    万字长文详解大数据流式计算框架 Flink 实战(中篇)1

    《万字长文详解大数据流式计算框架 Flink 实战(中篇)》是一篇深入探讨 Flink 流处理框架的教程,旨在帮助读者理解 Flink 的核心概念、API 使用、窗口与水印机制、状态管理和容错机制。本文将详细解析其中的关键...

    大数据流式处理-Flink书籍(英文原版)

    其中,事件时间和处理时间是理解Flink处理机制的关键,事件时间基于数据生成的时间,而处理时间则依赖于系统的处理时序。 接着,书中会详细介绍Flink的架构,包括数据源、转换操作、数据Sink和容错机制等核心组件。...

    flink流式处理框架的架构与应用

    Flink的应用场景丰富多样,包括实时优化电子商务搜索结果、为数据科学团队提供流式处理服务、网络和传感器监控及错误检测,以及业务智能基础设施中的ETL处理。Flink的实时处理能力使这些应用能够快速响应数据变化,...

    Flink+Kafka搭建流式处理框架(内涵docker部署脚本和k8s多副本部署脚本)

    flink搭配kafka,构建流式采集框架,提供了docker部署方式脚本和k8s多副本方式部署脚本

    分布式流式数据处理框架:功能对比以及性能评估.pptx

    本文将对当前主流的分布式流式数据处理框架进行功能对比和性能评估,涵盖Apache Spark、Apache Flink、Apache Storm、Apache Storm Trident、Apache Gearpump和Twitter Heron等多种框架。 首先,对于分布式流式数据...

    Flink流式计算实际生产项目代码

    Apache Flink,作为一个强大的开源流处理框架,已在大数据处理领域占据重要地位。本项目“Flink流式计算实际生产项目代码”聚焦于系统运维领域的流式处理,为初学者提供了一个宝贵的实践案例,帮助理解Flink在实际...

    flink框架入门介绍和示例程序

    Apache Flink是一款开源的流处理和批处理框架,它在大数据领域扮演着重要的角色。Flink的设计目标是提供低延迟、高吞吐量的数据处理能力,支持实时和历史数据的分析。它具备强大的状态管理、事件时间处理以及容错...

    迅雷2010Java笔试题哈尔滨站

    如果数据量极大,可以考虑使用更高效的数据处理框架,如Hadoop或Spark进行批处理,或使用流式处理框架Flink、Kafka等进行实时处理。 以上就是"迅雷2010Java笔试题哈尔滨站"中涉及的Java设计模式、事务管理、TCP/IP...

    Flink和Spark比较

    两个框架都可以基于内存计算框架进行实时计算,但 Flink 的流式处理模型使其在流式处理方面具有优势。Spark 则在批处理方面具有优势。选择哪个框架取决于具体的应用场景和需求。 Flink 和 Spark 发布历史 Apache ...

    flink入门文档.pdf

    Flink 是一个流式处理框架,支持实时流处理、批处理和交互式查询。Flink 的核心特点包括: * 批流一体:Flink 支持批处理和流处理,能够处理大规模数据。 * 高容错:Flink 具有高容错能力,能够容忍节点故障和网络...

    分布式流式数据处理框架:功能对比以及性能评估.pdf

    分布式流式数据处理框架在大数据领域扮演着至关重要的角色,它们能够实时地处理大量不断涌入的数据,为企业决策、在线分析等提供及时的支持。本报告主要对比了几个主流的分布式流处理框架,包括Apache Spark ...

    flink介绍PPT

    Apache Flink是一个开源的流处理框架,由Apache软件基金会开发,首个版本1.0.0于2016年3月发布,并已广泛用于生产环境。Flink以其低延迟、高吞吐量、有状态和分布式处理而闻名,是继Hadoop之后数据基础设施领域的一...

    透过源码看懂Flink核心框架的执行流程.pdf

    Flink是当前大数据处理领域非常受欢迎的一个开源分布式流处理框架,因其能够在毫秒级别处理数据而备受瞩目。本文将通过Flink官网提供的WordCount示例来深入分析其核心架构和执行流程,旨在帮助读者更好地理解Flink的...

    简单实用的分布式大数据处理框架,特点是零基础操作,支持批处理和流式处理

    简单实用的分布式大数据处理框架,特点是零基础操作,支持批处理和流式处理。项目目前由core、xmlbuilder、jsonbuilder、spark1、spark2、flink1和client七个模块组成。Magnet提供统一的配置接口,只需要配置一次就...

    Flink在企业落地实践.zip

    Apache Flink,作为一个高性能、分布式、实时的大数据处理框架,近年来在企业级应用中占据了重要地位。本资料集主要探讨了Flink如何在大型企业,尤其是以字节跳动为代表的企业中得到落地实践,深入解析其在实时数据...

    不仅仅是流计算 flink实践

    Apache Flink是一款开源的分布式流处理框架,设计用于处理大量的数据流,并支持高吞吐、低延迟和高可靠性的数据处理。随着大数据技术的迅速发展,Flink逐渐成为了大数据处理领域的一个重要力量。 Flink的一个核心...

    基于flink的分布式数据同步框架

    2. 流式数据处理:Flink支持持续的数据流处理,数据可以无限流入和流出,无需等待所有数据到达即可开始计算。 3. 有状态计算:Flink允许在计算过程中保存中间状态,使得即使在系统故障后也能恢复到一致的状态,确保...

Global site tag (gtag.js) - Google Analytics