我正在尝试使用PySpark和Docker构建一个容器化的小型批量数据处理管道,之后处理的数据将存储在Cassandra中。我正在使用一个docker-compose文件来为spark和Cassandra提取图像,我能够运行我的pyspark文件而没有错误,但是当我试图运行cassandra行时,例如创建keyspace和表,这就是为什么我试图在容器中使用cqlsh,之后我得到了以下错误
Connection error: ('Unable to connect to any servers', { \
'127.0.0.1:9042': ConnectionRefusedError(111, "Tried connecting to \
[('127.0.0.1', 9042)]. Last error: Connection refused")})
docker命令:-
docker compose up -d
docker ps
docker exec -it container-id cqlsh: I get the error after this command
我试过拉各种类型的Cassandra图像,它出现了同样的错误,我已经检查了几个来源,以确定如何使用容器中的气流来安排这一点无济于事
我使用了下面的docker-compose:-
version: '3'
networks:
app-tier:
driver: bridge
services:
spark:
image: docker.io/bitnami/spark:3.3
environment:
- SPARK_MODE=master
- SPARK_RPC_AUTHENTICATION_ENABLED=no
- SPARK_RPC_ENCRYPTION_ENABLED=no
- SPARK_LOCAL_STORAGE_ENCRYPTION_ENABLED=no
- SPARK_SSL_ENABLED=no
- SPARK_USER=spark
ports:
- '8080:8080'
volumes:
- ".:/opt/spark"
spark-worker:
image: docker.io/bitnami/spark:3.3
environment:
- SPARK_MODE=worker
- SPARK_MASTER_URL=spark://spark:7077
- SPARK_WORKER_MEMORY=1G
- SPARK_WORKER_CORES=1
- SPARK_RPC_AUTHENTICATION_ENABLED=no
- SPARK_RPC_ENCRYPTION_ENABLED=no
- SPARK_LOCAL_STORAGE_ENCRYPTION_ENABLED=no
- SPARK_SSL_ENABLED=no
- SPARK_USER=spark
networks:
- app-tier
cassandra:
image: 'bitnami/cassandra:latest'
#image: docker.io/bitnami/cassandra:4.1
#image: cassandra:latest
ports:
- '7000:7000'
- '127.0.0.1:9042:9042'
volumes:
#- 'cassandra_data:/bitnami'
- ".:/opt/cassandra"
environment:
- CASSANDRA_SEEDS=cassandra
- CASSANDRA_PASSWORD_SEEDER=yes
- CASSANDRA_PASSWORD=cassandra
networks:
- app-tier ```
1条答案
按热度按时间pxy2qtax1#
Docker容器在自己的网络中运行,因此当您连接到容器时,需要指定要连接的网络。
在本例中,您将网络命名为
app-tier
,因此在命令中使用--network app-tier
指定网络。此外,您还需要指定要连接的容器的名称。您可以从
docker ps
输出中找到容器的名称。如果你感兴趣,Apache Cassandra官方网站上的Quickstart Guide有在Docker中运行Cassandra的详细步骤。
最后,我强烈建议你先花一些时间学习Docker,这样你就能了解基本知识。否则,您将浪费大量时间遇到与Cassandra或Spark无关的其他简单问题。干杯!