Flink流计算编程--Kafka+Flink整合demo

本文详细介绍了如何将Flink与Kafka整合,从Kafka的消费者API、Flink的开发准备到集群环境配置,再到编写Flink程序消费Kafka数据的demo,最后验证数据消费的正确性。通过实例展示了Kafka的高吞吐和Flink计算能力的结合。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、简介

1.1、Kafka Consumer提供了2种API:high level与low level(SimpleConsumer)。
(1)high level consumer的API较为简单,不需要关心offset、partition、broker等信息,kafka会自动读取zookeeper中该consumer group的last offset。
(2)low level consumer也叫SimpleConsumer,这个接口非常复杂,需要自己写代码去实现对offset、partition、broker以及broker的切换,能不用就不用,那何时必须用?

1、Read a message multiple times
2、Consume only a subset of the partitions in a topic in a process
3、Manage transactions to make sure a message is processed once and only once

这里写图片描述

2、Flink的开发准备

Flink提供了high level的API来消费kafka的数据:flink-connector-kafka-0.8_2.10。注意,这里的0.8代表的是kafka的版本,你可以通过maven来导入kafka的依赖,具体如下:
这里写图片描述

例如你的kafka安装版本是“kafka_2.10-0.8.2.1”,即此版本是由scala2.10编写,kafka的自身版本是0.8.2.1.那此时你需要添加如下的内容到maven的pom.xml文件中:

<dependency>
        <groupId>org.apache.flink</groupId>
        <artifactId>flink-connector-kafka-0.8_2.10</artifactId>
        <version>${flink.version}</version>
</dependency>

注意:
$${flink.version}是个变量,自己调整下代码,例如可以直接写1.0.0。我的项目里采用的是添加了properties来控制${flink.version}:

<properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <flink.version>1.0.0</flink.version>
</properties>

3、集群环境准备

这里主要是介绍下Flink集群与kafka集群的搭建。
基础的软件安装包括JDK、scala、hadoop、zookeeper、kafka以及flink就不介绍了,直接看下flink的集群配置以及kafka的集群配置。
zookeeper–3.4.6
hadoop–2.6.0
kafka–2.10-0.8.2.1
flink–1.0.3

3.1、Flink集群配置(standalone且没有用zookeeper的HA)

3.1.1、环境变量
添加FLINK_HOME以及path的内容:

export FLINK_HOME=/usr/local/flink/flink-1.0.3
export PATH=.:${JAVA_HOME}/bin:${SCALA_HOME}/bin:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:${ZOOKEEPER_HOME}/bin:${KAFKA_HOME}/bin:${FLINK_HOME}/bin:$PATH
export CLASS_PATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib

3.1.2、修改conf/flink-conf.yaml
这里写图片描述

这几乎是最简单的配置方式了,主要注意要修改jobmanager.rpc.address为集群中jobManager的IP或hostname。检查点以及HA的参数都没有配置。

3.1.3、slaves文件
这里写图片描述

这个文件中存放的信息是taskmanager的hostname。

3.1.4、复制flink目录以及.bashrc文件到集群中其他的机器,并使bashrc生效

root@master:/usr/local/flink# scp -r flink-1.0.3/ root@worker1:/usr/local/flink/
root@master:/usr/local/flink# scp -r flink-1.0.3/ root@worker2:/usr/local/flink/

root
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值