docker安装flink

5.1、拉取flink镜像,创建网络

markdown 复制代码
docker pull flink
docker network create flink-network

5.2、创建 jobmanager

复制代码
# 创建 JobManager 
docker run \
 -itd \
 --name=jobmanager \
 --publish 8081:8081 \
 --network flink-network \
 --env FLINK_PROPERTIES="jobmanager.rpc.address: jobmanager" \
 flink:latest jobmanager 

5.3、创建 TaskManager

复制代码
# 创建 TaskManager 
 docker run \
  -itd \
  --name=taskmanager \
  --network flink-network \
  --env FLINK_PROPERTIES="jobmanager.rpc.address: jobmanager" \
  flink:latest taskmanager 

5.4、访问公网ip

http://localhost:8081/

访问 http://150.158.119.225/:8081/

5.5 修改Task Slots

默认的Slots num是1,我们可以修改为5:

修改的目录是jobmanager和taskmanager的/opt/flink/confflink-conf.yaml文件:

修改taskmanager.numberOfTaskSlots:即可。

注意:默认的docker容器中没有vi/vim命令,可以使用docker cp命令,复制出来修改,然后在复制回去,如下:

markdown 复制代码
docker cp taskmanager:/opt/flink/conf/flink-conf.yaml .
docker cp flink-conf.yaml taskmanager:/opt/flink/conf/

5.6、通过flinksql消费Kafka

Docker安装kafka 3.5

并且通过python,简单写一个生产者
Python生产、消费Kafka

顾名思义,用于连接flinksql和kafka。

进入flink

bash 复制代码
docker exec -it jobmanager /bin/bash

进入 flink的bin目录

bash 复制代码
cd /opt/flink/bin

查看flink版本:

bash 复制代码
flink --version

根据自己的flink版本,下载对应的 flink-sql-connector-kafka jar包

https://mvnrepository.com/artifact/org.apache.flink/flink-sql-connector-kafka

因为我是1.18.0,所以选择下图的版本包:

将下载的jar包,分别在jobmanager,taskmanager /opt/flink/lib目录下,注意,是两个都要放,如下图:

可以使用docker cp test.txt jobmanager:/opt/flink/lib命令,用户宿主机和docker容器文件传输。把test.txt换成对应的jar包即可

markdown 复制代码
docker cp test.txt jobmanager:/opt/flink/lib
docker cp test.txt taskmanager:/opt/flink/lib

5.8 flinksql消费kafka

java结合日志

复制代码
kafka.send("GatewayLog", JSONUtil.toJsonStr(gatewayLog));

GatewayLog是topic

yaml的服务配置

markdown 复制代码
spring:
  kafka:
    bootstrap-servers: "10.10.10.155:9092"
    consumer:
      group-id: "teleGatewayGroup"

我在本地生成了一条log,将使用flinksql处理这个数据。

进入jobmanager中,执行

bash 复制代码
cd /opt/flink/bin
sql-client.sh

Flink SQL执行以下语句:

复制代码
CREATE TABLE GatewayLog (
    platform VARCHAR,
    serviceId VARCHAR,
    targetServer VARCHAR,
    requestPath VARCHAR,
    requestMethod VARCHAR,
    schema VARCHAR,
    requestContentType VARCHAR,
    headers VARCHAR,
    requestBody VARCHAR,
    ip VARCHAR,
    startTime TIMESTAMP,
    endTime VARCHAR,
    executeTime VARCHAR,
    status VARCHAR,
    nickName VARCHAR,
    account VARCHAR,
    accountType VARCHAR,
    serviceName VARCHAR,
    orgCode VARCHAR
) WITH (
  'connector' = 'kafka',
  'topic' = 'GatewayLog',
  'properties.bootstrap.servers' = '150.158.119.225:9092',
  'properties.group.id' = 'flinKGroup',
  'scan.startup.mode' = 'earliest-offset',
  'format' = 'json'
);

select * from GatewayLog;

可以看到Flink在消费kafka数据,如下图:

中间缺少很多包。

flink-connector-kafka

复制代码
https://mvnrepository.com/artifact/org.apache.flink/flink-connector-kafka/3.1.0-1.18

依赖的kafka-clients

复制代码
https://mvnrepository.com/artifact/org.apache.kafka/kafka-clients/3.6.1

然后在Linux需要看权限问题。

markdown 复制代码
chmod -R 777 /lib 

把文件夹都改成777 所有人。

然后执行

sql最好先改成varchar,变成成功。

最后select * from table

执行成功。

相关推荐
梦想的颜色4 小时前
【Docker部署插件】:使用 Docker 部署生产级 Kafka 完整版教程
安全·docker·中间件·kafka·消息队列·docker-compose·后端开发
↘"LYong4 小时前
旧版 CentOS 安装 Docker 完整指南(附国内镜像加速)
linux·运维·docker
满意的星月6 小时前
基于微服务和Docker容器技术的PaaS云平台架构设计(微服务架构实施原理)
docker·微服务·架构
sukioe8 小时前
【无标题】
后端·docker·centos
考虑考虑9 小时前
kafka4安装
后端·kafka·自动化运维
HAPPY酷10 小时前
【ROS2】VMware + Docker 运行 Gazebo 崩溃与“假死”排查实录
qt·docker·容器
想你依然心痛14 小时前
嵌入式容器:Docker与BalenaOS在边缘设备上的实践——容器运行时与OTA
运维·docker·容器
不瘦80斤不改名14 小时前
HalfCart:基于LBS的1\.5km本地拼单系统全栈实践与踩坑复盘
python·docker·typescript·pycharm
@SmartSi14 小时前
新一代实时数据集成框架 Flink CDC 3.0 架构解析
flink·cdc
Tronlong创龙1 天前
SBC-TL3588 单板机 / EPC-TL3588 工控机 Docker 开发手册(二)
docker·开发板·嵌入式开发·硬件开发·工业控制