Docker 安装 Cassandra 数据库(图文教程)
一则或许对你有用的小广告
欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论
- 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于
Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...
,点击查看项目介绍 ; - 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;
截止目前, 星球 内专栏累计输出 54w+ 字,讲解图 2476+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 1900+ 小伙伴加入学习 ,欢迎点击围观
本小节中,我们将通过 Docker 把本地的 Cassandra 测试环境搭建起来。
什么是 Cassandra ?
Apache Cassandra 是一个开源的分布式 NoSQL(Not Only SQL)数据库管理系统,专为处理大规模数据量和高写入频率的工作负载而设计。它最初由 Facebook 开发,后来贡献给了 Apache 软件基金会,成为了 Apache 的一个顶级项目。
Cassandra 结合了 Google Bigtable 的数据模型和 Amazon Dynamo 的完全分布式架构,提供了以下关键特性:
-
高可用性:Cassandra 是一个无单点故障的系统,它通过数据复制和一致性级别选择,确保即使在节点失败的情况下数据仍然可访问。
-
水平可扩展性:Cassandra 能够通过添加更多节点到集群中轻松扩展,无需停机,这使得它能够处理不断增长的数据量和用户负载。
-
分布式数据存储:数据在集群中的多个节点上分布存储,每个节点都是平等的,没有主从之分,这有助于提高性能和可靠性。
-
最终一致性:Cassandra 允许开发者选择数据的一致性和可用性之间的权衡,通过可配置的一致性级别,可以在强一致性和高可用性之间找到合适的平衡点。
-
数据模型:Cassandra 使用列族(column-family)的数据模型,允许以宽列的方式存储数据,非常适合存储半结构化或非结构化数据。
-
数据压缩和索引:Cassandra 支持数据压缩和创建二级索引,以提高存储效率和查询性能。
-
多数据中心复制:Cassandra 支持跨多个地理区域的数据中心复制,以实现数据的地理分布和灾难恢复。
Cassandra 被广泛应用于需要处理大量数据和高写入负载的场景,例如社交网络、物联网(IoT)、实时数据分析和推荐系统等。由于其强大的可扩展性和高可用性,Cassandra 成为了许多大型企业如 Netflix、Digg、Twitter 等的选择。
拉取镜像
打开命令行工具,执行如下命令,开始拉取 cassandra
最新的镜像:
docker pull cassandra:latest
拉取成功后,可执行 docker images
命令查看本地已下载的镜像,确认一下 cassandra
是否下载成功。
准备挂载的文件夹
在 E:/docker
路径下,创建一个 /cassandra
文件夹,用于等会启动容器时,将需要持久化的数据挂载到宿主机中,防止容器重启时数据丢失:
运行容器
前置工作完成后,执行如下命令,运行一个 cassandra
容器:
docker run --name cassandra -d -p 9042:9042 -v E:\docker\cassandra\data:/var/lib/cassandra cassandra:latest
解释一下各项参数的含义:
docker run
: 这是 Docker 用来启动一个新的容器的命令。--name cassandra
: 这个选项指定了容器的名称为 "cassandra"。给容器命名可以帮助你在将来更容易地识别和管理它。-d
: 这个标志表示在后台(守护进程模式)运行容器,不会阻塞你的终端会话。-p 9042:9042
: 这个选项进行了端口映射,将宿主机的 9042 端口映射到容器内的 9042 端口。这意味着你可以在宿主机上通过 9042 端口访问 Cassandra 容器提供的服务。Cassandra 默认使用 9042 端口作为 CQL shell 的接入点。-v E:\docker\cassandra\data:/var/lib/cassandra
: 这是一个卷(volume)映射,将宿主机上的目录E:\docker\cassandra\data
挂载到容器内的/var/lib/cassandra
目录。这个目录是 Cassandra 用来存储数据和日志的地方。通过这种方式,即使容器被删除,数据也会保留在宿主机上,因为数据存储在持久化的卷中。cassandra:latest
: 这指定了要使用的 Docker 镜像。在这里,镜像是 Cassandra 的官方镜像,并且使用了latest
标签,意味着拉取 Cassandra 的最新版本镜像。
执行完毕后,执行 docker ps
命令,可查看本地正在运行中的 Docker
容器,确认一下 cassandra
是否启动成功了:
打开 cqlsh 命令行
cassandra
容器运行成功后,执行如下命令,可进入到容器中:
docker exec -it cassandra /bin/sh
接着,执行如下命令,可打开 cqlsh
命令行工具:
cqlsh
科普: 什么是
cqlsh
?
cqlsh
是 Cassandra Query Language Shell 的缩写,它是一个命令行工具,允许你向 Cassandra 数据库发送查询、创建表、插入数据、检索数据等。
若如下图所示,提示 Connected to Test Cluster at 127.0.0.1:9042
, 则说明已经成功连接上了 cassandra
:
注意:如果执行
cqlsh
提示无法连接 cassandra, 如下图所示,我这边是先执行exit
退出容器,让后删除 cassandra 容器,重启再次运行一个 cassandra 容器,再次进入容器执行cqlsh
, 就连上了,遇到同样问题的小伙伴不妨试一试。
至此,本地的 cassandra
环境就安装完成了。下小节中,我们将通过 cqlsh
命令行工具,上手学习 cassandra
数据库的一些基本操作,如创建表、插入数据、更新数据、删除数据等。