一、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:不需要设置,自动处理反压,即每个组件都有对应的分布式阻塞队列,只有队列不满的情况,上游才发数据,

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

 

posted on 2020-02-08 17:41  风清_云淡  阅读(499)  评论(0编辑  收藏  举报