Flink流连接器【数据源/接收器】

一.预定义的源和接收器

Flink内置了一些基本数据源和接收器,它们始终可用。该预定义的数据源包括文件,目录和Socket,并可以加载集合和迭代器的数据。该预定义的数据接收器支持写入文件,输出信息和异常。

二.捆绑式连接器

连接器提供用于与各种第三方系统接口的代码。当前支持以下系统:

  • Apache Kafka(源/接收器)
  • Apache Cassandra(接收器)
  • Amazon Kinesis Streams(源/接收器)
  • Elasticsearch(接收器)
  • Hadoop文件系统(接收器)
  • RabbitMQ(源/接收器)
  • Apache NiFi(源/接收器)
  • Twitter Streaming API(源)
  • Google PubSub(源/接收器)

请记住,要在应用程序中使用这些连接器之一,通常需要其他第三方组件,例如,用于数据存储或消息队列的服务器。还请注意,列出的流连接器是Flink项目的一部分,幷包含在源代码版本中,但它们不包含在二进制发行版中。

三.Apache Bahir中的连接器

通过Apache Bahir发布了用于Flink的其他流连接器,包括:

  • Apache ActiveMQ(源/接收器)
  • Apache Flume(接收器)
  • Redis(接收器)
  • Akka(接收器)
  • Netty(源)

四.连接到Flink的其他方式

1.通过异步I/O进行数据获取
使用连接器不是Flink获取数据和输出数据的唯一方法。一个常见的模式是查询外部数据库或Web服务获取数据为一个Map或FlatMap 作为主要数据流的补充。Flink提供了一个用于异步I/O的API, 以使其更容易有效且强大地完成这种扩充。

2.可查询状态
当Flink应用程序将大量数据推送到外部数据存储时,这可能会成为I/O瓶颈。如果涉及的数据的读取次数少于写入的次数,则更好的方法是让外部应用程序从Flink中提取所需的数据。在可查询的状态界面,允许通过Flink管理的状态下进行按需查询。

五.数据源和接收器的容错保证

Flink的容错机制在出现故障时恢复程序并继续执行它们。此类故障包括机器硬件故障,网络故障,瞬时程序故障等。

仅当源参与快照机制时,Flink才能保证将一次准确的状态更新为用户定义的状态。下表列出了Flink和捆绑的连接器的状态更新保证。
在这里插入图片描述
为了保证端到端的一次精确记录传递(除了一次精确的状态语义),数据接收器需要参与检查点机制。下表列出了Flink以及捆绑的接收器的交付保证(假设仅一次状态更新):
在这里插入图片描述
备注:

  • exactly ones:精准一次
  • at most ones:最多一次
  • at least ones:最少一次
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章