每当我在dockercontainer中获得Spark工作时,我都会断开Bootstrap代理localhost:9092id:-1 rack:null的连接

问题描述

我得到的错误是:-

20/11/02 13:34:51 WARN NetworkClient: [Consumer clientId=consumer-spark-kafka-source-366ac503-c5a4-4338-869c-84786983aab3--188679505-driver-0-1,groupId=spark-kafka-source-366ac503-c5a4-4338-869c-84786983aab3--188679505-driver-0] Bootstrap broker localhost:9092 (id: -1 rack: null) disconnected

我的docker-compose.yml文件

 version: "3"
services:
  zookeeper:
    image: wurstmeister/zookeeper
    container_name: zookeeper
    ports:
    - 2181:2181

  kafka:
    image: wurstmeister/kafka
    container_name: kafka
    ports:
    - 9092:9092
    
    environment:
      KAFKA_LISTENERS: PLAINTEXT://:9092
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092
      KAFKA_broKER_ID: 1
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_CREATE_TOPICS: "kafkatutorial:1:1"
      ALLOW_PLAINTEXT_LISTENER: "yes"
      SSL: localhost:9092
    expose:
     - 9092
      
  spark:
   build:
    dockerfile: DockerFileSpark
    context: .

   
   environment:
      - SPARK_MODE=master
      - SPARK_RPC_AUTHENTICATION_ENABLED=no
      - SPARK_RPC_ENCRYPTION_ENABLED=no
      - SPARK_LOCAL_STORAGE_ENCRYPTION_ENABLED=no
      - SPARK_SSL_ENABLED=no
   
   ports:
      - '8080:8080'
   links:
    - kafka
   
   depends_on:
    - zookeeper
    - kafka
    

解决方法

  1. SSL: localhost:9092对于kafka容器不是有效的环境变量;您需要在两个侦听器变量中设置SSL,并向图像添加ssl证书

  2. 不清楚您的Spark代码在哪里运行,但是在容器中,localhost永远无法连接到外部服务。删除您Yaml中的links,然后使用代码连接到kafka:9092