在上一篇笔记中介绍了一个简单的场景,在这记录下如何取实现相关的操作呢,首先我们需要一个可以运行flink的环境吧。
一、相关配置
1、flink版本 flink-1.5.4
2、kafka版本 kafka-0.8
我们看一下版本的支持情况,可以到官网上面查询具体的信息
官方网站
二、flink环境搭建
首先将flink包上传到服务器上(本例/usr/local),执行相关解压命令,完成后就可以进行配置啦。
flink常见有三种搭建方式,Local模式,Standalone(HA)模式,Flink on yarn模式
1、Local模式
Local模式比较简单,直接运行脚本(./start-cluster.sh)即可。
运行结束后我们通过jps可以看到
2、Standalone模式
Standalone是在本地集群上调度执行,不依赖于外部调度机制例如YARN。此时需要对配置文件进行一些简单的修改。
到conf目录下,修改master和slave文件,对应设备同步修改。
master文件中输入当前节点的地址加端口号
如 127.0.0.1:8081
slave中输入,不需要输入端口号了
127.0.0.2
127.0.0.3
启动同样是(./start-cluster.sh)即可。
3、Flink on yarn
Flink on yarn更多用于实际生产环境,暂不做记录
启动完成后我们可以通过jps查看是否启动了,出现taskmamagerRunner和standalone就成功啦
三、flink离线模式消费kafka数据
1、创建Maven工程添加相关依赖
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-connector-kafka_2.11</artifactId>
<version>1.5.4</version>
</dependency>
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-avro</artifactId>
<version>1.5.4</version>
</dependency>
2、连接kafka消费
下面是flink消费kafka的代码
public static void main(String[] args) throws Exception {
//Settings.loadProperties();
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
env.setStreamTimeCharacteristic(TimeCharacteristic.EventTime);
env.setParallelism(1);
//kafka基本配置
Properties properties = new Properties();
properties.setProperty("zookeeper.connect", "zookeeper地址");
properties.put("bootstrap.servers", "kafka地址");
properties.put("group.id", "groupid");
properties.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
properties.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
properties.put("auto.offset.reset", "earliest");
//获取日志
FlinkKafkaConsumer08<String> kafkaSource = new FlinkKafkaConsumer08<>(
"topic",
new SimpleStringSchema(), properties);
DataStream<String> logSource = env.addSource(kafkaSource);
logSource.print();
env.execute("myflink");
}