Docker 安装 Cassandra 数据库(图文教程)

更新时间 2024-08-16 08:14:20

一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 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 数据库的一些基本操作,如创建表、插入数据、更新数据、删除数据等。