AmosCloud

Library

Have a Question?

If you have any question you can ask below or enter what you are looking for!

Flink

Flink

是什么

  • Apache Flink 是一个框架和分布式处理引擎,用于在无边界和有边界数据流上进行有状态的计算。Flink 能在所有常见集群环境中运行,并能以内存速度和任意规模进行计算。

  • 与Spark相反的,Flink认为所有的计算都是流式计算,区别在于是否指定流的边界,有界流(批处理),无界流(动态数据的流式计算)

模块 Spark Flink
批处理 SparkCore,SparkContext,RDD Batch,ENV,DataSet
结构化运算 SparkSQL,SparkSession,Dataset Table,ENV,DataSetDataTable
流式计算 SparkStreaming,StreamingContext,DStream Stream,StreamENV,DataStream

Flink集群搭建

  1. 下载解压
  2. 修改配置文件

    • flink-conf.yaml
# 设置flink集群主机点启动的机器
jobmanager.rpc.address: bd0801
# 设置Flink集群任务提交使用的端口
jobmanager.rpc.port: 6123
# 设置每个从节点允许开放的任务插槽数量
taskmanager.numberOfTaskSlots: 4
# 设置任务提交时的默认并发度
parallelism.default: 1
# 设置主节点web端的访问端口
rest.port: 8081
  • masters
    设置需要在哪些机器启动主节点进程

  • workers
    设置需要在哪些机器启动从节点进程

  1. 分发安装包

  2. 添加环境变量

echo 'export FLINK_HOME=/opt/flink-1.14.4/' >> /etc/profile
echo 'export PATH=$FLINK_HOME/bin:$PATH' >> /etc/profile
source /etc/profile
  1. 启动集群

Flink核心概念

  • jobmanager 作业管理器
    Flink Standalone 中的主节点,用于接收客户端的请求
    客户端将任务jar提交给JM,并被分发到所有的TM执行

  • taskmanager 任务管理器
    Flink Standalone 中的从节点,用于接收jobmanager分发的任务,并占用对应的solt,启动任务进程

  • solt 插槽
    Flink使用了与Spark不同的资源管理方式,
    不直接在cpu和内存粒度上进行管理,而是提供了抽象的插槽的概念,每个从节点,具有固定的插槽数量
    启动任务会占用solt,solt耗尽,不能启动新的任务

  • 编程模型
    一个Flink任务,通常需要创建程序入口ExecutEnvironment类,并使用env对象,调用Source模块,创建数据抽象
    数据抽象,经过各种transformations
    最终调用Sink模块将数据输出

FlinkAPI