使用docker和连接器将kafka连接到spark,spark连接到cassandra,kafka连接到cassandra

eqfvzcg8  于 2021-06-04  发布在  Kafka
关注(0)|答案(1)|浏览(409)

细节:我们已经靠岸了 Kafka , Cassandra 以及 Spark ,使用 wurstmeister/kafka , strapdata/elassandra 以及 bde2020/spark-master docker中的图像。
我们要做的是使用连接器连接以下各项:
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

dockerfile文件

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 但是我没有遇到任何错误,也不确定它是否是一个有效的环境变量!
如何验证环境变量并测试连接器是否正常工作?

fruv7luv

fruv7luv1#

如前所述, CONNECTORS 不是kafka容器的有效变量。kafka connect是一个独立于代理的服务,因此需要是一个独立的容器。
kafka connect在端口8083公开了restapi。
您需要使用 curl Postman 等提供连接器;它们不能仅从变量加载。
我不知道datamountainer容器需要什么特定属性,但它们是建立在合流图像之上的,您可以在这里找到所有这些环境变量-https://github.com/confluentinc/cp-docker-images/blob/5.1.2-post/examples/cp-all-in-one/docker-compose.yml#l64-l86型
这些是为Kafka容器,而不是Kafka连接,因为他们开始 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` 不应该在这些属性的任何地方使用;如果你想连接集装箱到达Cassandra,你会使用 `"connect.cassandra.contact.points": "elassandra"` (docker服务名称)

相关问题