1.1.flink简介

1.1.1.flink是什么

Apache Flink是一个框架和分布式处理引擎,用于对无界和有界数据流进行状态计算。

1.1.2.为什么要用flink

  • 流数据更真实地反映了我们的生活方式
  • 传统的数据架构师基于有限数据集的
  • 我们的目标:

    1. - 低延迟(Spark Streaming的延迟是秒级,flink的延迟是毫秒级)
    2. - 高吞吐(阿里每秒钟使用flink处理4.6PB,双十一大屏)
    3. - 结果的准确性和良好的容错性(exactly-once

    1.1.3.流处理的发展和演变

    Storm —>Spark Streaming —>Flink

    1.1.4.flink的主要特点

    Flink的主要特点:

  • 时间驱动(Event-driven)

  • 基于流的世界观:在Flink的世界观中,一切都是由流组成的,离线数据是有界的流;实时数据是一个没有界的流:这就是所谓的有界流和无界流。(流批一体)
  • 支持事件时间(event-time)和处理时间(processing-time)语义
  • 精确一次(exactly-once)的状态一致性保证
  • 低延迟,每秒处理数百万个事件,毫秒级延迟(实际上就是没有延迟)
  • 与众多常用存储系统的链接(ES,HBase,MySQL,Redis…)
  • 高可用(Zookeeper),动态扩展,实现7*24小时全天候运行

    1.1.5.flink vs Spark Streaming

    流Stream和微批的区别:

  • 数据模型

    • Spark采用RDD模型,Spark Streaming的DStream实际上也就是一组组小批数据RDD的集合
    • Flink基本数据模型是数据流,以及事件(Event)序列(Integer、String、Long、POJO Class)
  • 运行时架构

    • Spark是批计算,将DAG划分为不同的Stage,一个Stage完成后才可以计算洗一个Stage
    • Flink是标准的流执行模式,一个事件在一个节点处理完后可以直接发往下一个节点进行处理

      1.2.flink-word-count代码

      Maven版本:apache-maven-3.8.5
      JDK版本:jdk-1.8
      IDEA版本:2021.3.3
      pom.xml文件内容: ```java <?xml version=”1.0” encoding=”UTF-8”?> <project xmlns=”http://maven.apache.org/POM/4.0.0

      1. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      2. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      4.0.0

      com.transwarp.io flink_learn01 1.0

      1.13.0 1.8 2.12 1.7.30 8 8 org.apache.flink flink-java ${flink.version} org.apache.flink flink-streaming-java${scala.binary.version} ${flink.version} org.apache.flink flink-clients${scala.binary.version} ${flink.version} org.apache.flink flink-table-api-java-bridge${scala.binary.version} ${flink.version} org.apache.flink flink-table-planner-blink${scala.binary.version} ${flink.version} org.apache.flink flink-streaming-scala${scala.binary.version} ${flink.version} org.apache.flink flink-table-common ${flink.version} org.apache.flink flink-cep${scala.binary.version} ${flink.version} org.apache.flink flink-csv ${flink.version} org.apache.flink flink-connector-kafka${scala.binary.version} ${flink.version} org.apache.bahir flink-connector-redis_2.11 1.0 mysql mysql-connector-java 8.0.21 org.apache.flink flink-connector-jdbc${scala.binary.version} ${flink.version} org.slf4j slf4j-log4j12 ${slf4j.version} org.apache.logging.log4j log4j-to-slf4j 2.14.0 org.apache.maven.plugins maven-assembly-plugin 3.3.0 jar-with-dependencies make-assembly package single org.apache.maven.plugins maven-compiler-plugin 8 8

``` Java代码:

1.3.flink运行架构