假设这样一个场景,无限的数据流从源端不断流入,就像自来水样,通过一个管道给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开始直到结束的统计.
领取专属 10元无门槛券
私享最新 技术干货