Flink API

南笙酒味 提交于 2020-02-08 19:08:54

一、Flink API

1、DataSet:对静态数据进行批处理操作、将静态数据抽象成分布式数据集,使用Flink各种操作符处理数据,支持 Java 、Scala、Python

2、DataStream:对数据流进行流处理操作,将流式的数据抽象成分布式数据流,用Flink 各种操作符处理数据流,支持 Java、Scala

3、Table API:对结构化数据进行查询操作,将结构化数据抽象成关系表。并通过类SQL的DSL对关系表进行各种查询操作,支持 Java、Scala.

二、反压机制

概念理解:通常是由于某段时间内源头数据量的暴涨,导致任务处理数据的速度远远小于源头数据的流入速度。

导致问题:这种情况会导致流任务的内存越积越大,可能导致资源耗尽甚至系统崩溃。

不同流计算引擎,处理方式不同:
storm:通过监控 process bolt 中接收队列负载情况来处理反压,即当超过高水位值,就将反压信息写到Zookeeper,

由zookeeper 的watch 通知worker 进入反压状态,最后spout 停止发送 tuple。

Spark Streaming:设置属性"spark.streaming.bachpressure.enabled" 进行自动反压,即动态控制数据接收速率来适配集群

数据处理能力。

Flink:不需要设置,自动处理反压,即每个组件都有对应的分布式阻塞队列,只有队列不满的情况,上游才发数据,

较慢的接受者会自动降低发送速率,如果队列满了(有界队列),发送者会阻塞。

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!