linux部署cassandra
Cassandra数据库是一个高度可扩展、分布式的NoSQL数据库系统,最初由Facebook开发,用于处理大规模数据集并提供高可用性和高性能。随着其开源和广泛应用,Cassandra已经成为Apache软件基金会的一个顶级项目。以下是关于Cassandra数据库的详细介绍:
一、基本概述
- 类型:Cassandra是一个开源的分布式NoSQL数据库系统,集Google BigTable的数据模型与Amazon Dynamo的完全分布式架构于一身。
- 研发者:Facebook,后转为开源项目。
- 应用领域:计算机,特别是网络社交、云计算等领域。
二、主要特性
- 分布式架构:Cassandra采用分布式架构,数据被分散存储在多个节点中,每个节点都是平等的,没有单点故障,可以随时添加或删除节点。这种架构使得Cassandra能够轻松扩展到数百台服务器,支持线性扩展。
- 高可用性和容错性:Cassandra提供了多种机制来保障数据的可用性,包括数据复制、数据备份、自动故障转移等。每个分区都有一个主分区副本和多个备份分区副本,可以根据需要进行配置,以确保数据的高可用性和灾难恢复。
- 高性能:Cassandra的读写操作都非常快速,支持高吞吐量和低延迟读写操作。这使得它非常适用于需要处理大量数据和具有高并发访问的应用场景。
- 灵活的数据模型:Cassandra的数据模型非常灵活,支持多种数据类型,包括结构化数据、半结构化数据和非结构化数据。同时,它还支持复杂查询和数据聚合操作,包括分组、排序、聚合、联接等。
三、系统功能
- 模式灵活:Cassandra不需要事先定义数据库模式,可以在系统运行时随意添加或移除字段。
- 可扩展性:Cassandra是纯粹意义上的水平扩展,为给集群添加更多容量,可以指向另一台电脑,而不必重启任何进程、改变应用查询或手动迁移任何数据。
- 多数据中心支持:Cassandra支持多数据中心部署,可以调整节点布局来避免某个数据中心出现问题时影响整体服务的可用性。
四、应用场景
Cassandra由于其高可扩展性、高可用性和高性能的特点,被广泛应用于各种需要处理大规模数据和具有高并发访问的应用场景,如社交网络、在线广告、电子商务、物联网、日志管理等。
五、安全与性能优化
- 安全性:Cassandra提供了基于用户名和密码的安全认证机制,支持SSL/TLS协议来加密节点之间的通信,并提供数据加密和审计功能以确保数据的安全性。
- 性能优化:Cassandra的性能优化包括数据模型优化、数据分区优化、数据访问优化以及JVM和系统参数的优化等。通过合理的配置和优化,可以进一步提高Cassandra的性能和可靠性。
综上所述,Cassandra数据库是一个功能强大、灵活且高度可扩展的分布式NoSQL数据库系统,适用于各种需要处理大规模数据和具有高并发访问的应用场景。
六、部署
版本:apache-cassandra-3.11.5-bin.tar.gz
将下载下来的包上传至目标主机,解压 tar -xzvf apache-cassandra-3.11.5-bin.tar.gz -C /usr/local/
修改配置文件 cassandra.yaml
vim /usr/local/apache-cassandra-3.11.5/conf/cassandra.yaml
seeds、listen_address 、rpc_address修改为实际ip
创建数据、日志存放目录 mkdir -p /data/cassandra/{data,commitlog}
编写启停脚本
#!/bin/bash # Cassandra安装目录 CASSANDRA_HOME="/usr/local/apache-cassandra-3.11.5" # Cassandra 文件路径 CASSANDRA_PID_FILE="${CASSANDRA_HOME}/bin/cassandra" # Cassandra PID PIDS=$(ps ax | grep -i 'cassandra' | grep Dcassandra|grep java|grep -v grep|awk '{print $1}') # 检查Cassandra是否正在运行 is_cassandra_running() { if [ ! -z "$PIDS" ]; then echo "Cassandra server already running,pid is $PIDS" return 0 else echo "Cassandra service is not running" return 1 fi } # 启动Cassandra start_cassandra() { echo "Starting Cassandra..." ${CASSANDRA_PID_FILE} -R >/dev/null 2>&1 sleep 5s } # 停止Cassandra stop_cassandra() { echo "Stopping Cassandra..." kill -9 ${PIDS} } # 重启Cassandra restart_cassandra() { is_cassandra_running if [ $? -eq 0 ]; then stop_cassandra else start_cassandra fi } # 根据传入的参数执行相应的操作 case "$1" in start) is_cassandra_running if [ $? -eq 0 ]; then echo "Cassandra is already running." else start_cassandra fi ;; stop) is_cassandra_running if [ $? -eq 0 ]; then stop_cassandra else echo "Cassandra is not running." fi ;; restart) restart_cassandra ;; *) echo "Usage: $0 {start|stop|restart}" ;; esac
启动cassandra并登录
/usr/local/apache-cassandra-3.11.5/bin/cqlsh xxx.xxx.xxx.xxx -u 'cassandra' -p 'cassandra'
新建用户并退出
CREATE ROLE cassandra_hugegraph WITH SUPERUSER = true AND LOGIN = true AND PASSWORD = 'passwd';
quit;
新用户登录,禁用cassandra
ALTER ROLE cassandra WITH SUPERUSER = false AND LOGIN = false;
quit;