• Flink基础概念入门


        Apache Apache Flink 是一个开源的流处理框架,应用于分布式、高性能、高可用的数据流应用程序。可以处理有限数据流和无限数据,即能够处理有边界和无边界的数据流。无边界的数据流就是真正意义上的流数据,所以 Flink 是支持流计算的。有边界的数据流就是批数据,所以也支持批处理的。不过 Flink 在流处理上的应用比在批处理上的应用更加广泛,统一批处理和流处理也是 Flink 目标之一。Flink 可以部署在各种集群环境,可以对各种大小规模的数据进行快速计算。

    • 2010~2014Flink 起源于柏林理工大学的研究性项目 Stratosphere
    • 2014 年该项目被捐赠给 Apache 软件基金会
    • 2014 年 12 月 Flink 一跃成为 Apache 软件基金会的顶级项目之一

    在德语中,Flink 一词表示快速和灵巧,项目采用一只松鼠的彩色图案作为 logo,这不仅是因为松鼠具有快速和灵巧的特点,还因为柏林的松鼠有一种迷人的红棕色,而 Flink 的松鼠 logo 拥有可爱的尾巴,尾巴的颜色与 Apache 软件基金会的 logo 颜色相呼应,也就是说,这是一只 Apache 风格的松鼠

    Flink 有如下特点:

    • 批流一体:统一批处理和流处理
    • 分布式:Flink 程序可以运行在分布式环境下
    • 高性能
    • 高可用
    • 准确性:Flink 可以保证数据处理的准确性

    Flink 主要应用于流式数据分析场景

    • 实时 ETL

    Extraction-Transformation-Loading 的缩写,中文名称为数据抽取、转换和加载.

    集成流计算现有的诸多数据通道和 SQL 灵活的加工能力,对流式数据进行实时清晰、归并和结构化处理;同时,对离线数仓进行有效的补充和优化,并为数据实时传输提供可计算通道。

    • 实时报表

    实时化采集,加工流式数据存储;实时监控和展现业务、客户各类指标,让数据化运营实时化。

    • 监控预警

    对系统和用户行为进行实时监测和分析,以便及时发现危险行为。

    • 在线系统

    实时计算各类数据指标,并利用实时结果及时调整在线系统的相关策略,并应用于内容投放、智能推送领域。

    Flink 核心组成

    • Deploy 层:
      Flink 支持本地运行、能在独立集群或者在被 YARN 或 Mesos 管理的集群上运行,也能部署在云上
    • Core 层:
      Flink 的核心是分布式流式数据引擎,意味着数据以一次一个事件的形式被处理
    • API 层:
      DataStream、DataSet、Table、SQL API
    • 扩展库:Flink 还包括了用于复杂事件处理、机器学习、图像处理和 Apache Storm 兼容的专用代码库

    Flink 生态发展

    • 输入 Connectors(左侧部分)

      • 流处理方式:包含 Kafka、AWS kinesis(实时数据流服务)、RabbitMQ、NIFI(数据管道)、Twitter(API)

      • 批处理方式:包含 HDFS、HBase、Amazon S3(文件系统)、MapR FS(文件系统)、ALLuxio(基于内存的分布式文件系统)

    • 中间是 Flink 核心部分

    • 输出 Connectors(右侧部分)

      • 流处理方式:包含 Kafka、AWS kinesis(实时数据流服务)、RabbitMQ、NIFI(数据管道)、Cassandra(NoSQL 数据库)、ES、HDFS rolling file(滚动文件)

      • 批处理方式:包含 HBase、HDFS

    流处理引擎的技术选型

    计算框架对比图

    产品 模型 API 保证次数 容错机制 状态管理 延时 吞吐量
    storm Native(数据进入立即处理) 组合式 At-least-once Record ACKS Low Low
    Trident mirco-batching(划分为小批处理) 组合式 Exectly-once Record ACKs 基于操作(每次操作由一个状态) Medium Medium
    Spark streaming mirco-batching 声明式(提供封装后的高阶函数) Exectly-once RDD Checkpoint 基于 DStream Medium High
    Flink Native 声明式 Exectly-once Checkpoint 基于操作 Low Hign

    市面上的流处理引擎不止 Flink 一种,其他的比如 Storm、SparkStreaming、Trident 等,如何进行选型,给大家一些建议:

    • 流数据要进行状态管理,选择使用 Trident、Spark Streaming 或者 Flink
    • 消息传递需要保证 At-least-once(至少一次)或者 Exacly-once(仅一次)不能选择 Storm
    • 对于小型独立项目,有低延迟要求,可以选择使用 Storm,更简单
    • 如果项目已经引入了 Spark,实时处理需求可以满足的话,建议直接使用 Spark 中的 Spark Streaming
    • 消息投递要满足 Exactly-once(仅一次),数据量大、有高吞吐、低延迟要求,要进行状态管理或窗口统计,建议使用 Flink

    __EOF__

  • 本文作者: 女友在高考
  • 本文链接: https://www.cnblogs.com/javammc/p/16704487.html
  • 关于博主: 评论和私信会在第一时间回复。或者直接私信我。
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
  • 声援博主: 如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。
  • 相关阅读:
    Netty 学习(八):新连接接入源码说明
    定时任务动态管理-Scheduled
    港口视频管理监控系统
    Uboot spi-nor 设备信息定义及3地址模式和4地址模式的理解
    MacBook将iPad和iPhone备份到移动硬盘
    C++面向对象程序设计 - 构造函数
    Nacos注册中心8-Server端(处理注册请求)
    k8s的service mesh功能有那些
    基于ARIMA-BP组合模型的货运量预测研究
    Linux--FTP服务器功能--项目
  • 原文地址:https://www.cnblogs.com/javammc/p/16704487.html