0x04 - Cassandra & Spark:[1] 从 Cassandra 开始的大数据处理之路
从 Cassandra 开始的大数据处理之路
每每遇到数据量过大的场景后,如何对海量数据进行处理就成了一个头疼的问题。使用关系型数据库时往往会遇到数据量大,表格离散,分区分表繁琐,难以简单处理等问题。在对数据读写量有海量需求的时候,使用 Cassandra 这样的 NoSQL 分布式数据库或许是一个合理的解决方案。
Cassandra 是什么
所以 Cassandra 是什么呢?
NoSQL (Not Only SQL) 即为非关系型的数据库。
为了应对网络应用场景下的高并发和大规模数据应用,Cassandra 应运而生,是为了解决大数据应用难题而诞生的数据库解决方案之一。
但是抛开华丽的外表, Cassandra 也只是一种存储数据的方法而已,如何去使用,如何去利用这些数据才是我们应该关心的事。
Cassandra 的不同之处
Cassandra 是分布式系统,在存储空间不够时,只需要增加节点就可以扩充存储空间。 而在使用关系型数据库,例如 mysql 时,它的单表数据量是有瓶颈的,当数据量到达一定级别,就需要考虑分库分表或者分区等。而这一点在 Cassandra 这里,仅需要增加节点就可以解决了,非常方便。
Cassandra 可以动态增删表的字段,这在大型项目的部署上,是很大的效率提升。
Cassandra 作为分布式处理的数据库,IO 性能也是非常关键的考量要点之一,而比较高效的写入性能意味着 Cassandra 可以应对大量写入、统计和分析的应用场景。但相对应的,读取性能则需要进行一定程度的优化。
Cassandra 作为 NoSQL 数据库,其建表操作还有设计逻辑与传统关系型数据库有比较大的差异。由于没有 Join 操作,在建表时需要考虑各种各样的因素。不过在熟悉 NoSQL 的处理逻辑之后,这种处理方式在大数据环境下更加便于处理。
Open The Box 打开盒子
于是这里,简单了解过 Cassandra 以后,让我们部署一下 Cassandra 服务。
由于 Cassandra 是集群数据库,所以大部分情况都需要在云端进行操作。 Aliyun 的 Cassandra 服务就可以满足绝大部分的需求。
那么如果,我们需要在本地跑一个简单的测试用数据库,该怎么做呢?
首先是我的环境:
Object | Version |
---|---|
OS. | Ubuntu 20.04 |
JVM. | Open-JDK-1.8.0_292 |
Cassandra | apache-cassandra-3.11.10-bin.tar.gz |
在安装 Cassandra 前需要确认 Java 环境。
1 | java -version |
假如没有 JVM, 直接运行 Cassandra 会报以下的错误:
1 | Cassandra 3.0 and later require Java 8u40 or later. |
安装 JDK 的方法(JRE 也行,不过因为本人会做 JAVA 开发,因此会需要用上 JDK):
1 | sudo apt-get update |
在配置好环境以后,我们就可以开始安装 Cassandra 了:
1 | wget https://mirrors.bfsu.edu.cn/apache/cassandra/3.11.10/apache-cassandra-3.11.10-bin.tar.gz |
解压后的目录为 apache-cassandra-3.11.10-bin
, 现在让我们来试一试:
1 | cd apache-cassandra-3.11.10-bin/bin |
在一长串的处理,一箩筐的日志以后,假如没有报 error
,那么 Cassandra 的本地服务就已经启动了。
现在,让我们通过 cqlsh
来连接数据库。cqlsh
也在 bin
文件夹内
1 | ./cqlsh |
简单尝试一下:
1 | cqlsh > DESCRIBE KEYSPACES; |
那么到这里,Cassandra 的本地环境算是搭建完成了,需要远程连接云端 Cassandra 数据库的话,请这样写:
1 | ./cqlsh -u 'username' -p 'password' your.cassandra.server.com 8888 |
切记,Cassandra 默认只允许本地连接,如果需要远程连接,请到服务器端更改 cassandra/conf
下 cassandra.yaml
的配置。
如果遇到 Last error: Connection refused
,可以参看 这个帖子。
SQL 到 CQL
我会推荐直接查看 w3cSchool。如果有耐心读英文的话,官方文档 也是个不错的参考处。
施工中,或许会懒,将来兴许会有 CQL 的基本用法
以上,是鸽子宣言