Flink入门概述

Flink简介

现有的开源计算方案,会把流处理和批处理作为两种不同的应用类型:流处理一般需要支持低延迟(毫秒级的延迟)、Exactly-once保证(数据只消费一次),而批处理需要支持高吞吐、高效处理。

Apache Flink是一个面向分布式数据流处理和批量数据处理的开源计算平台,提供支持流处理和批处理两种类型应用的功能,其中流处理输入数据流是无解的;批处理被作为一宗特殊的流处理,只是他的输入数据流被定义为有界的。

Flink组件栈

Deploy部署层

  1. Local(本地单JVM进程部署,主要用于本地调试)
  2. Cluster(集群部署方式)
  • Standalone
  • YARN:

生产环境常用模式,YARN是一种新的Hadoop资源管理器,可为上层应用提供统一的资源管理和调度,在集群的利用率、资源统一管理和数据共享等方面带来便捷。

  • Cloud(GCE/EC2)

Core核心层

Runtime层提供了支持flink计算的全部核心实现,比如:支持分布式流处理、jobGraph到ExecutionGraph的映射、调度等等,为上层API提供基础服务

API接口层

  • DataStream API:提供给面向流处理的接口
  • DataSet API:面向批处理的接口

Libraries

该层是flink自身提供的、满足特定应用场景的应用框架

  • CEP(事件处理模型)
  • Table(提供类似SQL的操作)
  • FlinkML(机器学习库)
  • Gelly(图像处理)

Flink优势

  • 支持高吞吐、低延迟、高性能的流处理
  • 支持高度灵活的窗口操作(滑动窗口、滚动窗口、session窗口)
  • 支持有状态计算的Exactly-once语义
  • 提供DataStream API和DataSet API

Apache

Flink

SparkStreaming

Storm

架构

架构介于Spark和Storm之间、主从结构与Spark相似、数据流可以被标识为一个有向图

主从模式、每个batch处理都依赖主、可以理解为时间维度上的Spark DAG(有向无环图) ,也就是时间维度很小的批处理Micro-Batch

主从模式、切高度依赖于Zookeeper,Zookeeper

保存了Storm集群的重要信息。处理过程中对主的依赖不大

容错

基于Chandy-Lamport分布式快照的CheckPoint机制

容错粒度:Medium

WAL(预写日志)与RDD血统机制

容错粒度:High

 

Records ACK

容错粒度:Medium

处理模型与延时

单条事件处理

亚秒级低延迟

一个事件窗口内的所有事件

秒级高延迟

每次传入的一个事件

亚秒级低延迟

数据处理保证

exactly-once

exactly-once

at least once

Flink基础概念

  • Flink程序的基础构建模块是流(Stream)和转换(transformations)
  • 每一个数据流起始于一个或多个source,并终止于一个或多个sink

                                   

                                          

时间窗口

  • 流上的聚合需要由窗口来划定范围,比如“计算过去的5分钟”或者最后100个元素的和“
  • 窗口通常被区分为不同的类型,比如滚动窗口(没有重叠),滑动窗口(有重叠)、会话窗口(由不活动的时隙所打断)

Flink分布式运行环境

基础架构

  • Flink是基于Matster-Slave风格的主从架构
  • Flink集群启动时,会启动一个JobManager进程、至少一个TaskManager进程

架构示意图

JobManager

  • Flink系统的协调者,负责接收Flink job,调度祖成Job的多个Task的执行
  • 手机Job的状态信息,并管理Flink集群中从节点TaskManager

TaskManager

  • 实际负责执行计算的Worker,在其上执行Flink Job的一组Task
  • 负责管理其所在节点上的资源信息,如内存、磁盘、网络,在启动的时候讲资源的状态想JobManager汇报

Client

  • 用户提交一个Flink程序时,会首先创建一个Client、该Client首先会对用户提交的Flink程序进行预处理,并提交到Flink集群
  • Client会将用户提交的Flink程序组装成一个JobGraph,并且是以JobGraph的形式提交的

Flink下载和安装

官网下载地址:https://flink.apache.org/downloads.html

选择相关版本进行下载,解压缩后的目录结构:

直接运行start-cluster.sh启动Flink。

Flink提供了界面管理,默认端口是8081,可以通过flink-conf.yaml进行配置。

Flink 开发环境搭建和入门

Flink官方提供的快速生成本地Flink开发的Maven工程:https://flink.apache.org/q/sbt-quickstart.sh

Flink常用算子简介

算子是在转换过程中的概念,可以理解成算法的实现

  • DataSet API

  • DataStream API

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值