文章目录

  • 1. Flink Standalone Cluster安装
  • 1)Flink下载地址
  • 2)在虚拟机中进行解压安装
  • 3)修改配置文件
  • 4)在bin目录下启动Flink
  • 5)查看启动节点,检查是否启动成功
  • 6)进入Flink的Web UI界面
  • 7)测试Flink自带WordCount案例
  • 2. Zookeeper伪分布式安装
  • 1)下载并解压安装zookeeper-3.4.5-cdh5.3.6
  • 2)修改配置文件
  • 3)创建Zookeeper 保存数据的文件夹
  • 4)创建节点标识
  • 5)启动zookeeper
  • 6)进行连接
  • 7)查看启动状态
  • 8)完成伪分布式搭建
  • 3. Kafka单实例安装
  • 1)下载并解压安装kafka_2.11-0.11.0.2
  • 2)修改配置文件
  • 3)启动Kafka
  • 4.测试Flink从Kafka中读取数据
  • 1)Idea依赖配置
  • 2)测试代码在这里插入代码片
  • 3)启动Flink
  • 4)启动伪分布式Zookeeper
  • 5)启动单例模式Kafka
  • 6)在idea中启动程序
  • 7)在kafka中输入数据
  • 8)idea中接收到数据


环境准备:
CentOs 7
VM ware
jdk1.8.0_231
安装包:
flink-1.10.1-bin-scala_2.11.tgz
kafka_2.11-0.11.0.2.tgz
zookeeper-3.4.5-cdh5.3.6.tar.gz

1. Flink Standalone Cluster安装

1)Flink下载地址

http://archive.apache.org/dist/flink/flink-1.10.1/

2)在虚拟机中进行解压安装

[root@zyh001 software]# tar -zxvf flink-1.10.1-bin-scala_2.12.tgz -C /zyh/

3)修改配置文件

flink从kafka拉取数据实时计算写入mysql flink读取kafka数据进行统计_flink

[root@zyh001 conf]# vi flink-conf.yaml

flink从kafka拉取数据实时计算写入mysql flink读取kafka数据进行统计_zookeeper_02


[root@zyh001 conf]# vi masters


flink从kafka拉取数据实时计算写入mysql flink读取kafka数据进行统计_h5_03


[root@zyh001 conf]# vi slaves


flink从kafka拉取数据实时计算写入mysql flink读取kafka数据进行统计_zookeeper_04

4)在bin目录下启动Flink

[root@zyh001 bin]# ./start-cluster.sh

5)查看启动节点,检查是否启动成功

[root@zyh001 bin]# jps
出现以上节点即启动成功

flink从kafka拉取数据实时计算写入mysql flink读取kafka数据进行统计_kafka_05

6)进入Flink的Web UI界面

输入网址:http://IP地址:8081/

flink从kafka拉取数据实时计算写入mysql flink读取kafka数据进行统计_h5_06

7)测试Flink自带WordCount案例

[root@zyh001 flink-1.10.1]# cd examples/streaming/

flink从kafka拉取数据实时计算写入mysql flink读取kafka数据进行统计_kafka_07


[root@zyh001 bin]# vi input.txt


在bin目录下创建一个input.txt文件并输入单词


flink从kafka拉取数据实时计算写入mysql flink读取kafka数据进行统计_kafka_08


执行任务


[root@zyh001 bin]# ./flink run …/examples/streaming/WordCount.jar --input /zyh/flink-1.10.1/bin/input.txt --output /zyh/flink-1.10.1/bin/output.txt


flink从kafka拉取数据实时计算写入mysql flink读取kafka数据进行统计_zookeeper_09


查看结果:


[root@zyh001 bin]# cat output.txt


flink从kafka拉取数据实时计算写入mysql flink读取kafka数据进行统计_zookeeper_10

2. Zookeeper伪分布式安装

1)下载并解压安装zookeeper-3.4.5-cdh5.3.6

解压到指定目录
[root@zyh001 software]# tar -zxvf zookeeper-3.4.5-cdh5.3.6.tar.gz -C /zyh/

2)修改配置文件

①切换到zookeeper/conf目录下,复制模板配置文件
[root@zyh001 conf]# cp zoo_sample.cfg zoo1.cfg
②编辑zoo1.cfg配置文件

flink从kafka拉取数据实时计算写入mysql flink读取kafka数据进行统计_zookeeper_11


③复制zoo1.cfg配置文件并修改


[root@zyh001 conf]# cp zoo1.cfg zoo2.cfg


flink从kafka拉取数据实时计算写入mysql flink读取kafka数据进行统计_flink_12


④复制zoo1.cfg配置文件并修改


[root@zyh001 conf]# cp zoo1.cfg zoo3.cfg


flink从kafka拉取数据实时计算写入mysql flink读取kafka数据进行统计_kafka_13

3)创建Zookeeper 保存数据的文件夹

在zookeeper目录下直接创建

[root@zyh001 zookeeper-3.4.5-cdh5.3.6]# mkdir-p tmp/zk1
 [root@zyh001 zookeeper-3.4.5-cdh5.3.6]# mkdir-p tmp/zk2
 [root@zyh001 zookeeper-3.4.5-cdh5.3.6]# mkdir-p tmp/zk3

flink从kafka拉取数据实时计算写入mysql flink读取kafka数据进行统计_h5_14

4)创建节点标识

在zookeeper/tmp目录下
 [root@zyh001 tmp]# echo 1 > zk1/myid
 [root@zyh001 tmp]# echo 2 > zk1/myid
 [root@zyh001 tmp]# echo 3 > zk1/myid
 查看是否写入成功
 [root@zyh001 tmp]# cat zk1/myid
 [root@zyh001 tmp]# cat zk2/myid
 [root@zyh001 tmp]# cat zk3/myid

flink从kafka拉取数据实时计算写入mysql flink读取kafka数据进行统计_kafka_15

5)启动zookeeper

启动
 [root@zyh001 zookeeper-3.4.5-cdh5.3.6]# bin/zkServer.sh start conf/zoo1.cfg
 [root@zyh001 zookeeper-3.4.5-cdh5.3.6]# bin/zkServer.sh start conf/zoo2.cfg
 [root@zyh001 zookeeper-3.4.5-cdh5.3.6]# bin/zkServer.sh start conf/zoo3.cfg
(停止命令)
 [root@zyh001 zookeeper-3.4.5-cdh5.3.6]# bin/zkServer.sh stop conf/zoo1.cfg
 [root@zyh001 zookeeper-3.4.5-cdh5.3.6]# bin/zkServer.sh stop conf/zoo2.cfg
 [root@zyh001 zookeeper-3.4.5-cdh5.3.6]# bin/zkServer.sh stop conf/zoo3.cfg

6)进行连接

连接其他zookeeper客户端
 [root@zyh001 zookeeper-3.4.5-cdh5.3.6]# bin/zkCli.sh -server 172.16.31.118:2181
 [root@zyh001 zookeeper-3.4.5-cdh5.3.6]# bin/zkCli.sh -server 172.16.31.118:2182
 [root@zyh001 zookeeper-3.4.5-cdh5.3.6]# bin/zkCli.sh -server 172.16.31.118:2183

7)查看启动状态

[root@zyh001 zookeeper-3.4.5-cdh5.3.6]# bin/zkServer.sh status conf/zoo1.cfg
 [root@zyh001 zookeeper-3.4.5-cdh5.3.6]# bin/zkServer.sh status conf/zoo2.cfg
 [root@zyh001 zookeeper-3.4.5-cdh5.3.6]# bin/zkServer.sh status conf/zoo3.cfg

flink从kafka拉取数据实时计算写入mysql flink读取kafka数据进行统计_zookeeper_16

8)完成伪分布式搭建

3. Kafka单实例安装

kafka需要zookeeper集群

1)下载并解压安装kafka_2.11-0.11.0.2

[root@zyh001 software]# tar -zxvf kafka_2.11-0.11.0.2.tgz -C /zyh/

2)修改配置文件

在Kafka/config目录下
 [root@zyh001 config]# vi server.properties
 listeners=PLAINTEXT://hostname:9092
 advertised.listeners=PLAINTEXT://hostname:9092

flink从kafka拉取数据实时计算写入mysql flink读取kafka数据进行统计_h5_17

3)启动Kafka

启动Kafka前需要先启动zookeeper
debug方式启动kakfa:
[root@zyh001 kafka_2.11-0.11.0.2]# bin/kafka-server-start.sh config/server.properties

flink从kafka拉取数据实时计算写入mysql flink读取kafka数据进行统计_h5_18


守护进程的方式启动kafka:

[root@zyh001 kafka_2.11-0.11.0.2]# bin/kafka-server-start.sh -daemon config/server.properties


查看端口

[root@zyh001 kafka_2.11-0.11.0.2]# netstat -tnlp | grep java


flink从kafka拉取数据实时计算写入mysql flink读取kafka数据进行统计_zookeeper_19


停止:

[root@zyh001 kafka_2.11-0.11.0.2]# bin/kafka-server-stop.sh


kafka会在zookeeper里保存集群信息
在开启的zookeeper窗口查看:

[zk: 172.16.31.118:2181(CONNECTED) 0] ls /


flink从kafka拉取数据实时计算写入mysql flink读取kafka数据进行统计_flink_20

4.测试Flink从Kafka中读取数据

1)Idea依赖配置

<dependencies>
    <dependency>
        <groupId>org.apache.flink</groupId>
        <artifactId>flink-scala_2.12</artifactId>
        <version>1.10.1</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.apache.flink/flink-streaming-scala -->
    <dependency>
        <groupId>org.apache.flink</groupId>
        <artifactId>flink-streaming-scala_2.12</artifactId>
        <version>1.10.1</version>
	</dependency>
	<!--        调用Kafka和zookeeper依赖-->
    <dependency>
        <groupId>org.apache.flink</groupId>
        <artifactId>flink-connector-kafka-0.11_2.12</artifactId>
        <version>1.10.1</version>
    </dependency>
</dependencies>
<build>
    <plugins>
        <!-- 该插件用于将Scala代码编译成class文件 -->
        <plugin>
            <groupId>net.alchim31.maven</groupId>
            <artifactId>scala-maven-plugin</artifactId>
            <version>4.4.0</version>
            <executions>
                <execution>
                    <!-- 声明绑定到maven的compile阶段 -->
                    <goals>
                        <goal>compile</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>3.3.0</version>
            <configuration>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
            </configuration>
            <executions>
                <execution>
                    <id>make-assembly</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

2)测试代码在这里插入代码片

import java.util.Properties
import org.apache.flink.api.common.serialization.SimpleStringSchema
import org.apache.flink.streaming.api.scala._
import org.apache.flink.streaming.connectors.kafka.FlinkKafkaConsumer011

object sourceTest {
  def main(args: Array[String]): Unit = {
    //创建执行环境
    val env = StreamExecutionEnvironment.getExecutionEnvironment
//从kafka中读取数据
    val properties = new Properties()
    properties.setProperty("bootstrap.servers","IP地址:9092")
    properties.setProperty("group.id","consumer-group")
    properties.setProperty("key.deserializer",
      "org.apache.kafka.common.serialization.StringDeserializer")
    properties.setProperty("value.deserializer",
      "org.apache.kafka.common.serialization.StringDeserializer")
    properties.setProperty("auto.offset.reset","latest")
    val stream3: DataStream[String] = env.addSource(new FlinkKafkaConsumer011[String]("sensor",
      new SimpleStringSchema(), properties))
    //进行扁平化,统计词汇
    val result: DataStream[(String, Int)] = stream3.flatMap(_.split(" "))
      .filter(_.nonEmpty)
      .map((_, 1))
      .keyBy(0) //分组
      .sum(1)
    result.print()
    env.execute("source test")
    }

3)启动Flink

[root@zyh001 bin]# ./start-cluster.sh

4)启动伪分布式Zookeeper

[root@zyh001 zookeeper-3.4.5-cdh5.3.6]# bin/zkServer.sh start conf/zoo1.cfg
 [root@zyh001 zookeeper-3.4.5-cdh5.3.6]# bin/zkServer.sh start conf/zoo2.cfg
 [root@zyh001 zookeeper-3.4.5-cdh5.3.6]# bin/zkServer.sh start conf/zoo3.cfg

5)启动单例模式Kafka

开启服务(daemon)
 [root@zyh001 kafka_2.11-0.11.0.2]# bin/kafka-server-start.sh -daemon config/server.properties
做测试,创建生产者
 [root@zyh001 kafka_2.11-0.11.0.2]# bin/kafka-console-producer.sh --broker-list zyh001:9092 --topic sensor

6)在idea中启动程序

7)在kafka中输入数据

flink从kafka拉取数据实时计算写入mysql flink读取kafka数据进行统计_h5_21

8)idea中接收到数据

flink从kafka拉取数据实时计算写入mysql flink读取kafka数据进行统计_h5_22