一键启动Debezium+Kafka+Flink

编写配置文件docker-compose.yml

version: "3.3"
services:
  database:
    image: debezium/postgres:11
    container_name: database
    ports:
      - "5432:5432"
    environment:
      - POSTGRES_PASSWORD=mima

  zookeeper:
    image: debezium/zookeeper:0.10
    container_name: zookeeper
    ports:
      - "2181:2181"
      - "2888:2888"
      - "3888:3888"
  kafka:
    image: debezium/kafka:0.10
    container_name: kafka
    ports:
      - "9092:9092"
    depends_on:
      - zookeeper
    links:
      - "zookeeper:zookeeper"
    environment:
      - BROKER_ID=1
      - ZOOKEEPER_CONNECT=zookeeper
      - ADVERTISED_HOST_NAME=kafka

  connector:
    image: debezium/connect:0.10
    container_name: connector
    expose:
      - "8083"
    depends_on:
      - kafka
      - database
    links:
      - "zookeeper:zookeeper"
      - "kafka:kafka"
      - "database:database"
    environment:
      - GROUP_ID=1
      - CONFIG_STORAGE_TOPIC=my-connect-configs
      - OFFSET_STORAGE_TOPIC=my-connect-offsets
  connector-config:
    image: curlimages/curl
    depends_on:
      - connector
    links:
      - "connector:connector"
    command: ["curl -i -X POST -H \"Accept:application/json\" -H \"Content-Type:application/json\" connector:8083/connectors/ -d '{ \"name\": \"connector\", \"config\": { \"connector.class\": \"io.debezium.connector.postgresql.PostgresConnector\", \"tasks.max\": \"1\", \"database.hostname\": \"database\", \"database.port\": \"5432\", \"database.user\": \"postgres\", \"database.password\": \"mima\",\"database.dbnam
e\":\"postgres\", \"database.server.name\": \"postgres\"} }'"]

  jobmanager:
    image: flink
    expose:
      - "6123"
    ports:
      - "8081:8081"
    command: jobmanager
    environment:
      - JOB_MANAGER_RPC_ADDRESS=jobmanager
  taskmanager:
    image: flink
    expose:
      - "6121"
      - "6122"
    depends_on:
      - jobmanager
    command: taskmanager
    links:
      - "jobmanager:jobmanager"
      - "zookeeper:zookeeper"
      - "kafka:kafka"
    environment:
      - JOB_MANAGER_RPC_ADDRESS=jobmanager

将kafka对外开放,方便调试

sed -i 's/ADVERTISED_HOST_NAME=kafka/ADVERTISED_HOST_NAME='$(ip a|grep 192.168|awk '{print $2}'|awk -F / '{print $1}')'/g' docker-compose.yml

其中192.168是根据自己的网络环境修改

启动

docker-compose up
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Flink是一个开源的流处理框架,而Kafka是一个分布式消息队列系统。在Flink中使用Kafka的Java API可以实现将Kafka中的数据作为输入源或将处理结果输出到Kafka中。 在Flink中使用Kafka Java API的步骤通常如下: 1. 引入Kafka的依赖:首先需要将Kafka的Java API的依赖添加到Flink的工程中。 2. 创建Kafka消费者:使用Kafka的Java API创建一个消费者实例,可以指定消费者的一些配置如Kafka的地址、消费者组ID等。通过调用消费者的`assign()`方法或`subscribe()`方法来指定要消费的Kafka主题。 3. 创建Flink的DataStream:使用Flink的DataStream API实例化一个用于接收Kafka数据的DataStream对象。可以使用`addSource()`方法来将Kafka消费者作为数据源。可以在创建DataStream时指定Kafka消息的反序列化方式、数据类型等。 4. 执行数据处理逻辑:可以在DataStream上应用各种Flink的算子,如map、filter、reduce等,对Kafka中的数据进行处理。 5. 创建Kafka生产者:使用Kafka的Java API创建一个生产者实例,可以指定生产者的一些配置。通过调用生产者的`send()`方法将处理后的结果数据发送到Kafka中。 6. 提交任务并启动Flink作业:将处理逻辑应用到Flink的任务上,并将任务提交给Flink集群进行执行。 通过以上步骤,就可以在Flink中使用Kafka的Java API进行数据的输入和输出。这种方式将Kafka作为Flink的一个数据源或数据目的,使得数据可以在流处理中被实时地处理和分析。同时,由于Kafka的分布式特性,也可以保证数据的可靠性和高吞吐量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值