整合Kafka+Flink

假设这样一个场景,无限的数据流从源端不断流入,就像自来水样,通过一个管道给Flink处理,Flink计算出想要的结果.

站在数据的角度,首先我们需要保证数据的来源能源源不断的涌入;

数据在处理的时候要保证不重,不丢,即便是有外界因素

计算的结果的准确性.

我想上面3个基本要求是对流式处理的基本要求.现在整合kafka+flink.

采用的基础框架是zk+yarn+hdfs+kafka0.9+flink1.6.

首先,可以构造一个链路获取数据,采用一个节点作为kafka的生产者不断产生"原料",新建了一个apche的话题,不断的输入数据.

kafka-console-producer.sh --broker-list datanode2:9092 -topic apache

其次,在idea里面新建一个客户端用来实时消费这些数据.

pom的依赖文件里面,需要加上org.slf4j的依赖用于日志输出.flink-streaming,flink-java和kafka-clients的版本需要对应,这里的flink选的是1.6.特别需要注意kafka-clients的选择

这里实现一个kafka的消费客户端通过flink去拉取生产端的数据并计算.采用的翻滚(Thumbling window)窗口的类型,每隔一分钟去统计数据.

kafka这里先采用的配置为从头开始计算.

这时候,客户端写好并启动后,可以看看kafka与flink对接的情况.

可以看到,kafka生产端流出来的数据,实时的打印到idea的客户端.由于采用的是翻滚窗口每隔一分钟统计结果.所以我将结果先落地在本地4个文件(1,2,3,4)当中,每隔一分钟有数据流经这个链条,统计结果会被刷新.从结果可以看到,druid从topic创建开始到现在一共出现了11次,数据没有丢失.这种场景是topic开始直到结束的统计.

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181216G15UKS00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券