zoukankan      html  css  js  c++  java
  • flink架构原理

    行内大数据平台流计算:

    一个作业启动一个flink集群,各个作业的flink集群是隔离的,在web ui点击cancel后将job cancel掉,同时将集群终止,将作业终止。

    on k8s:一个tm一个slot。

    on yarn:一个tm可有多个slot。

    kafka topic

    TopicSchema:{"type":"object","properties":{"id":{"type":"number"},"username":{"type":"string"}}}

    以上提交作业到yarn上的流程:

    1、新建yarn目录

    2、将MySQL驱动器传到yarn

    3、将配置文件传到yarn

    4、设置开发模式

    5、启动flink并提交作业命令

    flink-1.7.1/bin/flink run -m yarn-cluster -yD hostname=wn18ddzxjap1002 -yD job.inst.id=103989 -yD security.kerberos.login.principal=5D7... -yD security.kerberos.login.keytab=/etc/security/keytabs/5D7....keytab -yD metrics.reporters=sla -yD metrics.reporter.sla.class=com.ksyun.dc.metrics.flink.CollectMetrics -yD metrics.reporter.sla.url=http://ops-platform.internal-bigdata.com:9080/api/metrics/streaming/batch -yD metrics.reporter.sla.interval='60 SECONDS' -ynm store_goods_amount_join_done -c com.ksyun.dc.streaming.framework.ApplicationOnScheduler -yn 1 -ys 1 -p 1 -yjm 1024 -ytm 3072 -yqu ksccd365...-yt /tmp/flink/yarnship/1180 -n -d /flink-1.7.1/framework/streaming-dist-1.0-SANPSHOT-fat.jar

    命令行参数:

    -c:指定程序入口类

    -p:指定多少个并发度

    -yD:动态自定义参数

    -m yarn-cluster -yn 1:使用yarn集群启动1个tm

    -yjm:指定jm的内存大小

    -ytm:指定tm的内存大小

    -ys:每个tm的slot数量

    -yqu:指定yarn资源队列

    -d:以detached模式运行

    flink list:查看进群上运行的job

    flink cancel:取消job

    flink list --all:查看所有job,包括cancel的

    flink命令行参考:

    https://my.oschina.net/u/3005325/blog/2998948

    flink架构

    flink运行时组件:作业管理器JobManager、任务管理器TaskManager、资源管理器Resource Manager、分发器Dispacher

    Flink:批处理和流处理结合的统一计算框架,提供数据分发和并行化计算的流数据处理引擎,支持批处理和流处理。

      Client:Client给用户提供向Flink系统提交用户任务(流式作业)的能力。

      TaskManager:业务执行节点,执行具体的用户任务,可以有多个,各个manager平等。

      JobManager:管理节点,管理所有的TaskManager,并决策用户任务在哪些TaskManager执行。JobManager在HA模式下可以有多个,但只有一个主JobMannager。

     

    一个slot是flink处理的最小单元。

    slot隔离的是内存,不是cpu。比如:

    4cpu设置8slot,16g内存设置4slot,平均每个slot独占4g,但如果有的slot计算量过大,则可能导致内存撑爆。具体一个tm包含多少个slot,可根据机器、计算复杂度而定。

    一个tm有多少个slot可在配置文件中配置,即numberOfTaskSlots配置项。而parallelism配置项即作业算子的并行度。

    slot和parallelism的区分:

    parallelism:表示这个算子任务可拆分成多少个子任务去运行。

    slot:表示同时可支持多少个子任务并行。

    设置并行度的权限大小关系:

    代码设置并行度setParallelism(1) > 命令行提交设置的并行度 > 配置文件默认的并行度

    每个算子在代码里都可分别设置并行度,source算子用socket读取数据时,并行度默认为1。

    flink的并行:

    数据并行:多个slot可同时处理数据,即多个子任务可同时运行。

    任务并行:多个任务可同时运行。

    作业并行:多个job同时在flink集群中运行(在行内大数据平台不支持这种并行,因为是采取的一个作业一个flink集群的模式,各个flink集群是隔离的)。

     

     

     

     

    one to one且相同并行度的子任务可合并为一个任务,中间用->表示。

    web ui中一个方框对应一个任务,一个->连接两个子任务。

  • 相关阅读:
    基于python内置方法进行代码混淆
    python-__getattr__ 和 __getattribute__
    python-flask学习
    python-创建进程的三种方式
    python-property、__get__、__set__
    call apply bind
    【算法】js实现最短时间走完不同速度的路程
    图片懒加载实现
    MoonLight可视化订单需求区域分析系统前端
    前端代码基本命名规范和格式规范
  • 原文地址:https://www.cnblogs.com/cing/p/12420782.html
Copyright © 2011-2022 走看看