Flink-10 Flink Java 3分钟上手 Docker容器化部署 JobManager TaskManager Kafka Redis Dockerfile docker-compose

简介: Flink-10 Flink Java 3分钟上手 Docker容器化部署 JobManager TaskManager Kafka Redis Dockerfile docker-compose

代码仓库

会同步代码到 GitHub

https://github.com/turbo-duck/flink-demo

本节内容

在学习和测试阶段,需要快速启动一套Flink供我们学习测试。使用常规的安装的方式太费劲了,利用Docker可以快速启动一套完整的系统,方便我们的进行测试!

这里放一些我平常常用的 docker-compose 的文件。供大家学习和测试!


这些都是我们之前要用到的内容:


Flink 部署

Kafka 部署

Redis 部署

Flink 单节点

1个 job manager

1个 task manager

version: '2'

services:
  jobmanager:
    image: 10.10.52.8/flink/flink
    expose:
      - "6123"
    ports:
      - "8081:8081"
    command: jobmanager
    environment:
      - JOB_MANAGER_RPC_ADDRESS=jobmanager

  taskmanager:
    image: 10.10.52.8/flink/flink
    expose:
      - "6121"
      - "6122"
    depends_on:
      - jobmanager
    command: taskmanager
    links:
      - "jobmanager:jobmanager"
    environment:
      - JOB_MANAGER_RPC_ADDRESS=jobmanager

启动方式

docker-compose up -d

查看日志

docker-compose logs -f

运行效果

Flink高可用

通过 zookeeper 做的高可用

  • 2个 job manager
  • 3个 task manager
  • 1个 zookeeper
version: '2'

services:
  zookeeper:
    image: zookeeper:3.5
    ports:
      - "2181:2181"

  jobmanager1:
    image: 10.10.52.8/flink/flink
    expose:
      - "6123"
    ports:
      - "8081:8081"
    command: jobmanager
    environment:
      - JOB_MANAGER_RPC_ADDRESS=jobmanager1
      - ZOOKEEPER_SERVERS=zookeeper:2181
      - HIGH_AVAILABILITY=zookeeper
      - HIGH_AVAILABILITY_ZOOKEEPER_QUORUM=zookeeper:2181
      - HIGH_AVAILABILITY_STORAGE_DIR=file:///flink/ha/

  jobmanager2:
    image: 10.10.52.8/flink/flink
    expose:
      - "6123"
    ports:
      - "8082:8081"
    command: jobmanager
    environment:
      - JOB_MANAGER_RPC_ADDRESS=jobmanager2
      - ZOOKEEPER_SERVERS=zookeeper:2181
      - HIGH_AVAILABILITY=zookeeper
      - HIGH_AVAILABILITY_ZOOKEEPER_QUORUM=zookeeper:2181
      - HIGH_AVAILABILITY_STORAGE_DIR=file:///flink/ha/

  taskmanager1:
    image: 10.10.52.8/flink/flink
    expose:
      - "6121"
      - "6122"
    depends_on:
      - jobmanager1
      - jobmanager2
    command: taskmanager
    links:
      - "jobmanager1:jobmanager1"
      - "jobmanager2:jobmanager2"
      - "zookeeper:zookeeper"
    environment:
      - JOB_MANAGER_RPC_ADDRESS=jobmanager1
      - ZOOKEEPER_SERVERS=zookeeper:2181
      - HIGH_AVAILABILITY=zookeeper
      - HIGH_AVAILABILITY_ZOOKEEPER_QUORUM=zookeeper:2181

  taskmanager2:
    image: 10.10.52.8/flink/flink
    expose:
      - "6121"
      - "6122"
    depends_on:
      - jobmanager1
      - jobmanager2
    command: taskmanager
    links:
      - "jobmanager1:jobmanager1"
      - "jobmanager2:jobmanager2"
      - "zookeeper:zookeeper"
    environment:
      - JOB_MANAGER_RPC_ADDRESS=jobmanager1
      - ZOOKEEPER_SERVERS=zookeeper:2181
      - HIGH_AVAILABILITY=zookeeper
      - HIGH_AVAILABILITY_ZOOKEEPER_QUORUM=zookeeper:2181

  taskmanager3:
    image: 10.10.52.8/flink/flink
    expose:
      - "6121"
      - "6122"
    depends_on:
      - jobmanager1
      - jobmanager2
    command: taskmanager
    links:
      - "jobmanager1:jobmanager1"
      - "jobmanager2:jobmanager2"
      - "zookeeper:zookeeper"
    environment:
      - JOB_MANAGER_RPC_ADDRESS=jobmanager1
      - ZOOKEEPER_SERVERS=zookeeper:2181
      - HIGH_AVAILABILITY=zookeeper
      - HIGH_AVAILABILITY_ZOOKEEPER_QUORUM=zookeeper:2181

启动方式

docker-compose up -d

查看日志

docker-compose logs -f

Flink多节点

可以不做高可用,直接 1个 JOB 对应 3个 TASK 节点。

但是如果JOB节点挂掉了,TASK节点将无法工作!!!

  • 1个 job manager
  • 3个 task manager
version: '2'

services:
  jobmanager:
    image: 10.10.52.8/flink/flink
    expose:
      - "6123"
    ports:
      - "8081:8081"
    command: jobmanager
    environment:
      - JOB_MANAGER_RPC_ADDRESS=jobmanager

  taskmanager1:
    image: 10.10.52.8/flink/flink
    expose:
      - "6121"
      - "6122"
    depends_on:
      - jobmanager
    command: taskmanager
    links:
      - "jobmanager:jobmanager"
    environment:
      - JOB_MANAGER_RPC_ADDRESS=jobmanager

  taskmanager2:
    image: 10.10.52.8/flink/flink
    expose:
      - "6121"
      - "6122"
    depends_on:
      - jobmanager
    command: taskmanager
    links:
      - "jobmanager:jobmanager"
    environment:
      - JOB_MANAGER_RPC_ADDRESS=jobmanager

  taskmanager3:
    image: 10.10.52.8/flink/flink
    expose:
      - "6121"
      - "6122"
    depends_on:
      - jobmanager
    command: taskmanager
    links:
      - "jobmanager:jobmanager"
    environment:
      - JOB_MANAGER_RPC_ADDRESS=jobmanager

Kafka 部署

注意!KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://10.10.5.68:9092 要修改为自己的IP!

version: "3"
services:
  zookeeper:
    image: 'bitnami/zookeeper:latest'
    ports:
      - '2181:2181'
    environment:
      - ALLOW_ANONYMOUS_LOGIN=yes
  kafka:
    image: 'bitnami/kafka:2.8.0'
    ports:
      - '9092:9092'
      - '9999:9999'
    environment:
      - KAFKA_BROKER_ID=1
      - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092
      # 注意这里的IP 改成自己的!!!
      - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://10.10.5.68:9092
      - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
      - ALLOW_PLAINTEXT_LISTENER=yes
      - KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE=true
      - KAFKA_CFG_LOG_RETENTION_HOURS=6
      - JMX_PORT=9999
    depends_on:
      - zookeeper

Redis 部署

version: "3"

services:
  redis:
    image: "redis:latest"
    container_name: "redis_container"
    ports:
      - "6379:6379"

目录
相关文章
|
4月前
|
人工智能 数据处理 API
阿里云、Ververica、Confluent 与 LinkedIn 携手推进流式创新,共筑基于 Apache Flink Agents 的智能体 AI 未来
Apache Flink Agents 是由阿里云、Ververica、Confluent 与 LinkedIn 联合推出的开源子项目,旨在基于 Flink 构建可扩展、事件驱动的生产级 AI 智能体框架,实现数据与智能的实时融合。
781 6
阿里云、Ververica、Confluent 与 LinkedIn 携手推进流式创新,共筑基于 Apache Flink Agents 的智能体 AI 未来
|
4月前
|
应用服务中间件 网络安全 nginx
手把手教你使用 Docker 部署 Nginx 教程
本文详解Nginx核心功能与Docker部署优势,涵盖镜像拉取、容器化部署(快速、挂载、Compose)、HTTPS配置及常见问题处理,助力高效搭建稳定Web服务。
1902 4
|
4月前
|
应用服务中间件 Linux nginx
在虚拟机Docker环境下部署Nginx的步骤。
以上就是在Docker环境下部署Nginx的步骤。需要注意,Docker和Nginix都有很多高级用法和细节需要掌握,以上只是一个基础入门级别的教程。如果你想要更深入地学习和使用它们,请参考官方文档或者其他专业书籍。
221 5
|
5月前
|
存储 Docker Python
docker 部署 sftp
本文介绍SFTP服务的部署与配置,包括users.conf用户配置规则、Docker容器运行命令及上传目录权限说明,重点解析atmoz/sftp镜像的chroot机制与子目录映射,确保用户登录后正确访问/upload目录,并提供Python脚本实现文件上传示例。
495 12
docker 部署 sftp
|
4月前
|
存储 NoSQL Redis
手把手教你用 Docker 部署 Redis
Redis是高性能内存数据库,支持多种数据结构,适用于缓存、消息队列等场景。本文介绍如何通过Docker快速拉取轩辕镜像并部署Redis,涵盖快速启动、持久化存储及docker-compose配置,助力开发者高效搭建稳定服务。
1346 7
|
4月前
|
存储 搜索推荐 数据库
🚀 RAGFlow Docker 部署全流程教程
RAGFlow是开源的下一代RAG系统,融合向量数据库与大模型,支持全文检索、插件化引擎切换,适用于企业知识库、智能客服等场景。支持Docker一键部署,提供轻量与完整版本,助力高效搭建私有化AI问答平台。
3252 8
|
4月前
|
存储 关系型数据库 MySQL
MySQL Docker 容器化部署全指南
MySQL是一款开源关系型数据库,广泛用于Web及企业应用。Docker容器化部署可解决环境不一致、依赖冲突问题,实现高效、隔离、轻量的MySQL服务运行,支持数据持久化与快速迁移,适用于开发、测试及生产环境。
767 4
|
9月前
|
缓存 NoSQL 关系型数据库
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?