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

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: 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"

目录
相关文章
|
7天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
28 2
|
12天前
|
关系型数据库 MySQL API
|
5天前
|
缓存 监控 开发者
掌握Docker容器化技术:提升开发效率的利器
在现代软件开发中,Docker容器化技术成为提升开发效率和应用部署灵活性的重要工具。本文介绍Docker的基本概念,并分享Dockerfile最佳实践、容器网络配置、环境变量和秘密管理、容器监控与日志管理、Docker Compose以及CI/CD集成等技巧,帮助开发者更高效地利用Docker。
|
7天前
|
监控 持续交付 Docker
Docker 容器化部署在微服务架构中的应用有哪些?
Docker 容器化部署在微服务架构中的应用有哪些?
|
7天前
|
监控 持续交付 Docker
Docker容器化部署在微服务架构中的应用
Docker容器化部署在微服务架构中的应用
|
9天前
|
运维 开发者 Docker
Docker Compose:简化容器化应用的部署与管理
Docker Compose:简化容器化应用的部署与管理
|
9天前
|
Cloud Native 持续交付 Docker
Docker容器化技术:从入门到实践
Docker容器化技术:从入门到实践
|
9天前
|
NoSQL Redis Docker
【赵渝强老师】使用Docker Compose管理容器
Docker Compose 通过 YAML 文件管理多个容器,简化复杂系统的部署和管理。本文介绍了 Docker Compose 的基本概念,并通过一个包含 Redis DB 和 Python Web 模块的示例,展示了如何使用 Docker Compose 部署和管理多容器应用。手动部署和 Docker Compose 部署的对比突显了 Docker Compose 在系统复杂度增加时的优势。
|
9天前
|
前端开发 开发者 Docker
深入探索Docker Compose:简化多容器应用的部署
深入探索Docker Compose:简化多容器应用的部署
34 0
|
9天前
|
数据中心 开发者 Docker
理解并实践Docker容器化技术
理解并实践Docker容器化技术