簡體   English   中英

使用Docker和連接器將kafka連接到spark,spark連接到cassandra,kafka連接到cassandra

[英]Using Docker and connectors to connect kafka to spark, spark to cassandra and kafka to cassandra

詳細信息:我們在 docker-compose 中使用wurstmeister/kafkastrapdata/elassandrabde2020/spark-master鏡像對KafkaCassandraSpark進行了wurstmeister/kafka

我們想要做的是使用連接器連接以下內容:

  • Kafka 流到 Spark 流

  • Spark 流到 Cassandra

  • Kafka 流到 Cassandra

問題是我們不知道它是否工作正常,因為這些技術對我們來說聽起來很新。

圖示:

在此處輸入圖片說明

重要文件:

docker-compose.yml

version: '2'
services:
  spark:
    container_name: spark
    image: bde2020/spark-master
    ports: 
      - 9180:8080
      - 9177:7077
      - 9181:8081
    links: 
      - elassandra
    volumes:
hosein:/var/lib/docker/volumes/data/python
      - /home/mostafa/Desktop/kafka-test/together/cassandra/mostafa-hosein:/var/lib/docker/volumes/data/python



  elassandra:
    image: strapdata/elassandra
    container_name: elassandra
    build: /home/mostafa/Desktop/kafka-test/together/cassandra
    env_file:
      - /home/mostafa/Desktop/kafka-test/together/cassandra/conf/cassandra.env
    volumes:
      - /home/mostafa/Desktop/kafka-test/together/cassandra/jarfile:/var/lib/docker/volumes/data/_data
    ports:
      - '7000:7000'
      - '7001:7001'
      - '7199:7199'
      - '9042:9042'
      - '9142:9142'
      - '9160:9160'
      - '9200:9200'
      - '9300:9300'

  zookeeper:
    image: wurstmeister/zookeeper
    container_name: zookeeper
    ports:
      - "2181:2181"

  kafka:
    build: .
    container_name: kafka
    links:
     - zookeeper
    ports:
      - "9092:9092"
    environment:
      KAFKA_ADVERTISED_HOST_NAME: localhost
      KAFKA_ADVERTISED_PORT: 9092
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_OPTS: -javaagent:/usr/app/jmx_prometheus_javaagent.jar=7071:/usr/app/prom-jmx-agent-config.yml
      CONNECTORS: elassandra
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    depends_on: 
      - elassandra

  kafka_connect-cassandra:
    image: datamountaineer/kafka-connect-cassandra
    container_name: kafka-connect-cassandra
    ports:
      - 8083:8083
      - 9102:9102
    environment: 
      - connect.cassandra.contact.points=localhost
      - KAFKA_ZOOKEEPER_CONNECT =  "zookeeper:2181"
      - KAFKA_ADVERTISED_LISTENERS= "kafka:9092"
      - connect.cassandra.port=9042
      - connector.class=com.datamountaineer.streamreactor.connect.cassandra.sink.CassandraSinkConnector
      - tasks.max=1
    depends_on:
      - kafka
      - elassandra

文件

FROM wurstmeister/kafka
ADD prom-jmx-agent-config.yml /usr/app/prom-jmx-agent-config.yml
ADD jmx_prometheus_javaagent-0.10.jar /usr/app/jmx_prometheus_javaagent.jar
COPY wait-for-it.sh /wait-for-it.sh
RUN chmod +x /wait-for-it.sh
CMD ["/wait-for-it.sh", "zookeeper:2181", "--", "start-kafka.sh"]

示例:作為示例,我已將CONNECTOR: elassandra添加到 kafka 容器的環境變量中,但我沒有遇到任何錯誤,也不確定它是否是有效的環境變量!

我們如何驗證環境變量並測試連接器是否正常工作?

如前所述, CONNECTORS不是 Kafka 容器的有效變量。 Kafka Connect 是一個獨立於 broker 的服務,因此需要是一個獨立的容器。

Kafka Connect 在端口 8083 公開了一個 REST API

需要使用curl 、 Postman 等方式執行 HTTP 請求,提供 Connectors; 它們不能僅從變量加載。

我沒有立即意識到 Datamountainer 容器所需的任何特定屬性,但它們構建在 Confluent 映像之上,您可以在此處找到所有這些環境變量 - https://github.com/confluentinc/cp-docker-圖像/blob/5.1.2-post/examples/cp-all-in-one/docker-compose.yml#L64-L86

這些用於 Kafka 容器,而不是 Kafka Connect,因為它們以KAFKA_

  - KAFKA_ZOOKEEPER_CONNECT =  "zookeeper:2181"
  - KAFKA_ADVERTISED_LISTENERS= "kafka:9092

這些用於連接器屬性(將通過 JSON 發布),而不是環境變量。

  - connect.cassandra.contact.points=localhost
  - connect.cassandra.port=9042
  - connector.class=com.datamountaineer.streamreactor.connect.cassandra.sink.CassandraSinkConnector
  - tasks.max=1

然后,不應在這些屬性中的任何地方使用localhost 如果你想讓 Connect 容器到達 Cassandra,你可以使用"connect.cassandra.contact.points": "elassandra""connect.cassandra.contact.points": "elassandra"服務名稱)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM