一、Cassandra是什么
1.1、应用场景
1.1.1、互联网类应用
1.1.2、多活
1.1.3、业务灵活多变
1.1.4、写密集、统计和分析型工作
1.1.5、数据驱动的业务
1.2、名词解释
1.3、Cassandra vs. MongoDB vs. Couchbase vs. HBase
1.4、常用端口
二、架构简介
2.1. 核心结构
2.2. 核心组件
三、安装
3.1、yum安装
3.2、二进制包安装
3.3、docker安装
3.4、Docker创建Cassandra集群
四、常见配置
4.1、Cassandra开启远程连接
4.2、配置补全功能
4.3、安装Windows客户端
4.4、版本问题
五、参考文档
Cassandra([kəˈsændrə])是云原生和微服务化场景中最好的NoSQL数据库。
高可用性和可扩展的分布式数据库
Apache Cassandra™是一个开源分布式NoSQL数据库系统,可提供当今最苛刻的应用程序所需的高可用性、高性能和线性可伸缩性。它提供了跨云服务提供商、数据中心和地理位置的操作简便性和轻松的复制,并且可以在混合云环境中每秒处理PB级信息和数千个并发操作。
在Hadoop关联的项目中对Cassandra的解释是:A scalable multi-master database with no single points of failure.
可以看出,高可用性和高可伸缩性是Cassandra最闪亮的特点。没有单点故障。
Cassandra能够支持大并发低延时的访问需求,具备高可用和弹性扩容能力,适合日志、消息、feed流、订单、账单、网站等各种大数据量的互联网在线应用场景。
Cassandra原生支持多DC部署方式,实现更好的可用性和容灾能力。云数据库Cassandra可以很容易添加新的数据中心,不同的数据中心可以设定不同的副本数,既可以作为跨数据中心多活高可用,也可以作备份容灾或离线分析使用。
云数据库Cassandra的数据模型灵活,对表结构的变更是一个非常轻量级的操作,非常适用于初创型的业务需求,让您的数据库能更快地跟上业务改进的步伐。
Cassandra是为优异的写吞吐量而特别优化的,能够支持很高的多客户线程并发写性能和突发的峰值,这些特性使得Cassandra能够很好支持写多于读的场景,例如用户状态更新、社交网络、建议/评价以及应用统计等。
云数据库Cassandra可以支持数百个节点的集群规模,适合大数据量的存储。在一些需要应用大量数据对用户行为进行分析的场景中,可以通过整合多种数据来源,存储用户行为数据,构建用户画像,实时存储在Cassandra中,提供大数据风控、推荐等服务。
术语 | 说明 |
---|---|
cassandra | Cassandra是在线可靠的NoSQL分布式数据库服务,支持类SQL语法CQL,支持多地多活,提供了安全、容灾、监控、备份恢复等企业级能力。 |
CQL | CQL(Cassandra Query Language)是cassandra中提供的一种类SQL查询语言,具体用法可参考cassandra文档。 |
数据中心 | 云数据库Cassandra中,数据中心(Data Center,简称DC)是指在同一地域下,电力、网络隔离的一组节点。在多DC的部署架构下面,DC之间内网互通,同一DC内网络延时更小,不同DC之间故障隔离。 |
Partitioner | partitioner用来确定将数据均衡分布在节点上的策略。云数据库Cassandra中,默认使用Murmur3Partitioner。 |
副本数 | 副本数表示数据在集群中存了几“份”(副本),例如副本数为2表示每行数据在集群中保存了两个副本,每个副本都在不同的节点上面。云数据库Cassandra中,副本数由用户在创建keyspace时指定。 |
副本策略 | 副本策略用来确定将副本存放在哪个节点上面。云数据库Cassandra中,副本策略由用户在创建keyspace时指定。推荐您使用NetworkTopologyStrategy策略,可更便捷地将集群扩展至多个DC。 |
KeySpace | 一个KeySpace下包含若干个表,用户可以在keyspce这个级别指定副本策略。 |
Apache Cassandra™在高负载下提供了更高的性能,在许多用场景中都超过了它的NoSQL数据库竞争对手。
Apache Cassandra: 高度可伸缩、高性能的分布式数据库,设计用于处理许多商用服务器上的大量数据,提供高可用性,没有单点故障。
Apache HBase: 基于谷歌的BigTable的开源、非关系型、分布式数据库,是用Java编写的。它是Apache Hadoop项目的一部分,在HDFS上运行,为Hadoop提供类似于BigTable的功能。
MongoDB: 跨平台的面向文档的数据库系统,避开了传统的基于表的关系数据库结构,转而使用具有动态模式的类JSON文档,从而使数据在某些类型的应用程序中的集成更加容易和快捷。
Couchbase: 为交互式应用程序优化的分布式NoSQL面向文档的数据库。
Cassandra被设计用来处理跨多个节点的大数据工作负载,没有单点故障。Cassandra通过采用跨同构节点的对等分布式系统来解决故障问题,其中数据分布在集群中的所有节点中。每个节点使用点对点gossip通信协议频繁地交换自己和集群中其他节点的状态信息。每个节点上按顺序写入的提交日志被捕获写入活动,以确保数据的持久性。然后,数据被编入索引并写入内存结构,称为memtable,它类似于回写缓存。每次内存结构满了,数据就被写到一个SSTables数据文件的磁盘上。所有写操作都会自动分区并在整个集群中复制。Cassandra定期使用一个称为压缩的进程合并SSTables,丢弃用tombstone标记为要删除的过时数据。为了确保集群中的所有数据保持一致,需要使用各种修复机制。
Cassandra是一个分区的行存储数据库,其中行被组织成具有所需主键的表。Cassandra的体系结构允许任何授权用户连接到任何数据中心中的任何节点,并使用CQL语言访问数据。为了易于使用,CQL使用与SQL类似的语法并处理表数据。通常,集群中的每个应用程序都有一个键空间,由许多不同的表组成。
客户端读或写请求可以发送到集群中的任何节点。当客户端使用请求连接到某个节点时,该节点充当该特定客户端操作的协调器。协调器充当客户端应用程序和拥有所请求数据的节点之间的代理。协调器根据集群的配置方式确定环形中的哪些节点应该获得请求。
• Node
存储数据的地方。它是Cassandra的基础设施组件
• datacenter
相关节点的集合。数据中心可以是物理数据中心,也可以是虚拟数据中心。不同的工作负载应该使用单独的数据中心,无论是物理的还是虚拟的。复制由数据中心设置。使用单独的数据中心可以防止Cassandra事务受到其他工作负载的影响,并使请求彼此接近以降低延迟。根据复制因子,可以将数据写入多个数据中心。数据中心绝不能跨越物理位置。
• Cluster
一个集群包含一个或多个数据中心。它可以跨越物理位置。
• Commit log
为了持久性,所有数据写入之前都要首先写入提交日志(日志写入优先)。所有数据都刷新到SSTables之后,就可以对其进行归档、删除或回收。
• SSTable(Sorted String Table)
一个SSTable是一个不可变的数据文件,Cassandra定期将memtables写入其中。仅追加SSTables并按顺序存储在磁盘上,并为每个Cassandra表维护SSTables。
• CQL Table
按表行获取的有序列的集合。一张表由多列组成,并且有一个主键。
• Gossip
一种对等通信协议,用于发现和共享Cassandra集群中其他节点的位置和状态信息。Gossip息也由每个节点本地保存,以便在节点重新启动时立即使用。
• Partitioner
分区程序确定哪个节点将接收一段数据的第一个副本,以及如何跨集群中的其他节点分发其他副本。每一行数据都由一个主键唯一地标识,主键可能与其分区键相同,但也可能包含其他集群列。Partitioner是一个哈希函数,它从一行的主键派生标记。分区程序使用令牌值来确定集群中的哪些节点接收该行的副本。Murmur3Partitioner是新Cassandra集群的默认分区策略,几乎在所有情况下都是新集群的正确选择。
• Replication factor
整个集群中的副本总数。副本因子1表示在一个节点上每一行只有一个副本。副本因子2表示每一行有两个副本,其中每个副本位于不同的节点上。所有的副本都同样重要,没有主副本。你可以为每个数据中心定义副本因子。通常,应该将副本策略设置为大于1,但不超过集群中的节点数。
• Replica placement strategy
Cassandra将数据的副本存储在多个节点上,以确保可靠性和容错能力。副本策略决定将副本放在哪个节点上。数据的第一个副本就是第一个副本,它在任何意义上都不是唯一的。强烈建议使用NetworkTopologyStrategy策略,因为在将来需要扩展时,可以轻松扩展到多个数据中心。创建keyspace时,必须定义副本放置策略和所需的副本数。
• Snitch
snitch将一组机器定义为数据中心和机架(拓扑),副本策略使用这些数据中心和机架放置副本。
在创建集群时,必须配置一个snitch。所有的snitch都使用一个动态的snitch层,该层监视性能并选择最佳副本进行读取。它是默认启用的,建议在大多数部署中使用。在cassandra.yaml配置文件中为每个节点配置动态snitch阈值。
• cassandra.yaml
用于设置集群的初始化属性、表的缓存参数、调优和资源利用率的属性、超时设置、客户端连接、备份和安全性的主要配置文件。
官网:https://cassandra.apache.org/
下载:https://cassandra.apache.org/download/
安装过程:https://cassandra.apache.org/doc/latest/getting_started/installing.html
历史版本:http://archive.apache.org/dist/cassandra/
最新rpm版本:https://downloads.apache.org/cassandra/redhat
http://apache.mirror.digitalpacific.com.au/cassandra/
注意: 1、安装环境需要提前安装Java 1.8,可以使用命令“java -version”。 2、需要Python 3.6+ 或Python 2.7,用于cqlsh
参数文件:/etc/cassandra/conf/cassandra.yaml
docker run -d --name lhrcassandra -h lhrcassandra \
-p 9042:9042 \
--privileged=true lhrbest/lhrcentos76:8.2 \
/usr/sbin/init
docker exec -it lhrcassandra bash
将Cassandra仓库添加到yum源中:
cat > /etc/yum.repos.d/cassandra.repo <<"EOF"
[cassandra]
name=Apache Cassandra
baseurl=https://downloads.apache.org/cassandra/redhat/311x/
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://downloads.apache.org/cassandra/KEYS
EOF
执行yum install命令:
yum install -y cassandra
安装完以后就是cassandra服务了
# 以root用户启动cassandra
cassandra -R
使用-f选项告诉Cassandra保留在前台,而不是作为后台进程运行。如果一切顺利,您可以看到Cassandra服务器启动。
命令行直接输入cqlsh即可连接到本地cassandra数据库,就像直接输入mysql回车一样
[root@lhrcentos76 /]# cassandra -R
[root@lhrcentos76 /]#
[root@lhrcentos76 /]# ps -ef|grep cass
root 6970 0 6 09:20 pts/0 00:00:55 java -Xloggc:/var/log/cassandra/gc.log -ea -XX:+UseThreadPriorities -XX:ThreadPriorityPolicy=42 -XX:+HeapDumpOnOutOfMemoryError -Xss256k -XX:StringTableSize=1000003 -XX:+AlwaysPreTouch -XX:-UseBiasedLocking -XX:+UseTLAB -XX:+ResizeTLAB -XX:+UseNUMA -XX:+PerfDisableSharedMem -Djava.net.preferIPv4Stack=true -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=1 -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSWaitDuration=10000 -XX:+CMSParallelInitialMarkEnabled -XX:+CMSEdenChunksRecordAlways -XX:+CMSClassUnloadingEnabled -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintHeapAtGC -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationStoppedTime -XX:+PrintPromotionFailure -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=10M -Xms8052M -Xmx8052M -Xmn800M -XX:+UseCondCardMark -XX:CompileCommandFile=/etc/cassandra/conf/hotspot_compiler -javaagent:/usr/share/cassandra/lib/jamm-0.3.0.jar -Dcassandra.jmx.local.port=7199 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.password.file=/etc/cassandra/jmxremote.password -Djava.library.path=/usr/share/cassandra/lib/sigar-bin -XX:OnOutOfMemoryError=kill -9 %p -Dlogback.configurationFile=logback.xml -Dcassandra.logdir=/var/log/cassandra -Dcassandra.storagedir= -cp /etc/cassandra/conf:/usr/share/cassandra/lib/airline-0.6.jar:/usr/share/cassandra/lib/antlr-runtime-3.5.2.jar:/usr/share/cassandra/lib/asm-5.0.4.jar:/usr/share/cassandra/lib/caffeine-2.2.6.jar:/usr/share/cassandra/lib/cassandra-driver-core-3.0.1-shaded.jar:/usr/share/cassandra/lib/commons-cli-1.1.jar:/usr/share/cassandra/lib/commons-codec-1.9.jar:/usr/share/cassandra/lib/commons-lang3-3.1.jar:/usr/share/cassandra/lib/commons-math3-3.2.jar:/usr/share/cassandra/lib/compress-lzf-0.8.4.jar:/usr/share/cassandra/lib/concurrentlinkedhashmap-lru-1.4.jar:/usr/share/cassandra/lib/concurrent-trees-2.4.0.jar:/usr/share/cassandra/lib/disruptor-3.0.1.jar:/usr/share/cassandra/lib/ecj-4.4.2.jar:/usr/share/cassandra/lib/guava-18.0.jar:/usr/share/cassandra/lib/HdrHistogram-2.1.9.jar:/usr/share/cassandra/lib/high-scale-lib-1.0.6.jar:/usr/share/cassandra/lib/hppc-0.5.4.jar:/usr/share/cassandra/lib/jackson-annotations-2.9.10.jar:/usr/share/cassandra/lib/jackson-core-2.9.10.jar:/usr/share/cassandra/lib/jackson-databind-2.9.10.4.jar:/usr/share/cassandra/lib/jamm-0.3.0.jar:/usr/share/cassandra/lib/javax.inject.jar:/usr/share/cassandra/lib/jbcrypt-0.3m.jar:/usr/share/cassandra/lib/jcl-over-slf4j-1.7.7.jar:/usr/share/cassandra/lib/jctools-core-1.2.1.jar:/usr/share/cassandra/lib/jflex-1.6.0.jar:/usr/share/cassandra/lib/jna-4.2.2.jar:/usr/share/cassandra/lib/joda-time-2.4.jar:/usr/share/cassandra/lib/json-simple-1.1.jar:/usr/share/cassandra/lib/jstackjunit-0.0.1.jar:/usr/share/cassandra/lib/libthrift-0.9.2.jar:/usr/share/cassandra/lib/log4j-over-slf4j-1.7.7.jar:/usr/share/cassandra/lib/logback-classic-1.1.3.jar:/usr/share/cassandra/lib/logback-core-1.1.3.jar:/usr/share/cassandra/lib/lz4-1.3.0.jar:/usr/share/cassandra/lib/metrics-core-3.1.5.jar:/usr/share/cassandra/lib/metrics-jvm-3.1.5.jar:/usr/share/cassandra/lib/metrics-logback-3.1.5.jar:/usr/share/cassandra/lib/netty-all-4.0.44.Final.jar:/usr/share/cassandra/lib/ohc-core-0.4.4.jar:/usr/share/cassandra/lib/ohc-core-j8-0.4.4.jar:/usr/share/cassandra/lib/reporter-config3-3.0.3.jar:/usr/share/cassandra/lib/reporter-config-base-3.0.3.jar:/usr/share/cassandra/lib/sigar-1.6.4.jar:/usr/share/cassandra/lib/slf4j-api-1.7.7.jar:/usr/share/cassandra/lib/snakeyaml-1.11.jar:/usr/share/cassandra/lib/snappy-java-1.1.1.7.jar:/usr/share/cassandra/lib/snowball-stemmer-1.3.0.581.1.jar:/usr/share/cassandra/lib/ST4-4.0.8.jar:/usr/share/cassandra/lib/stream-2.5.2.jar:/usr/share/cassandra/lib/thrift-server-0.3.7.jar:/usr/share/cassandra/apache-cassandra-3.11.10.jar:/usr/share/cassandra/apache-cassandra-thrift-3.11.10.jar:/usr/share/cassandra/stress.jar: org.apache.cassandra.service.CassandraDaemon
root 7810 6244 0 09:34 pts/0 00:00:00 grep --color=auto cass
[root@lhrcentos76 /]#
[root@lhrcentos76 /]# nodetool status
Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns (effective) Host ID Rack
UN 127.0.0.1 70.75 KiB 256 100.0% 998e3685-a29a-4821-99f6-c6777d2b8c2d rack1
[root@lhrcentos76 /]#
[root@lhrcentos76 /]# tail -f /var/log/cassandra/system.log
INFO [MigrationStage:1] 2021-04-17 09:21:22,421 ColumnFamilyStore.java:421 - Initializing system_auth.role_permissions
INFO [MigrationStage:1] 2021-04-17 09:21:22,438 ColumnFamilyStore.java:421 - Initializing system_auth.roles
INFO [main] 2021-04-17 09:21:22,502 StorageService.java:1536 - JOINING: Finish joining ring
INFO [main] 2021-04-17 09:21:23,220 NativeTransportService.java:68 - Netty using native Epoll event loop
INFO [Service Thread] 2021-04-17 09:21:23,355 GCInspector.java:285 - ConcurrentMarkSweep GC in 778ms. Code Cache: 8832512 -> 13666368; Compressed Class Space: 3561480 -> 5361784; Metaspace: 31083568 -> 39731016; Par Eden Space: 641498248 -> 336863704; Par Survivor Space: 0 -> 30972656
INFO [main] 2021-04-17 09:21:23,423 Server.java:158 - Using Netty Version: [netty-buffer=netty-buffer-4.0.44.Final.452812a, netty-codec=netty-codec-4.0.44.Final.452812a, netty-codec-haproxy=netty-codec-haproxy-4.0.44.Final.452812a, netty-codec-http=netty-codec-http-4.0.44.Final.452812a, netty-codec-socks=netty-codec-socks-4.0.44.Final.452812a, netty-common=netty-common-4.0.44.Final.452812a, netty-handler=netty-handler-4.0.44.Final.452812a, netty-tcnative=netty-tcnative-1.1.33.Fork26.142ecbb, netty-transport=netty-transport-4.0.44.Final.452812a, netty-transport-native-epoll=netty-transport-native-epoll-4.0.44.Final.452812a, netty-transport-rxtx=netty-transport-rxtx-4.0.44.Final.452812a, netty-transport-sctp=netty-transport-sctp-4.0.44.Final.452812a, netty-transport-udt=netty-transport-udt-4.0.44.Final.452812a]
INFO [main] 2021-04-17 09:21:23,423 Server.java:159 - Starting listening for CQL clients on localhost/127.0.0.1:9042 (unencrypted)...
INFO [main] 2021-04-17 09:21:23,508 CassandraDaemon.java:564 - Not starting RPC server as requested. Use JMX (StorageService->startRPCServer()) or nodetool (enablethrift) to start it
INFO [main] 2021-04-17 09:21:23,508 CassandraDaemon.java:650 - Startup complete
INFO [OptionalTasks:1] 2021-04-17 09:21:32,986 CassandraRoleManager.java:372 - Created default superuser role 'cassandra'
[root@lhrcentos76 /]# cqlsh
Connected to Test Cluster at 127.0.0.1:9042.
[cqlsh 5.0.1 | Cassandra 3.11.10 | CQL spec 3.4.4 | Native protocol v4]
Use HELP for help.
cqlsh> SELECT cluster name, listen_address FROM system.local;
SyntaxException: line 1:15 no viable alternative at input 'name' (SELECT [cluster] name...)
cqlsh>
cqlsh> SELECT cluster_name, listen_address FROM system.local;
cluster_name | listen_address
--------------+----------------
Test Cluster | 127.0.0.1
(1 rows)
cqlsh> DESCRIBE CLUSTER;
Cluster: Test Cluster
Partitioner: Murmur3Partitioner
cqlsh> ?
Documented shell commands:
===========================
CAPTURE CLS COPY DESCRIBE EXPAND LOGIN SERIAL SOURCE UNICODE
CLEAR CONSISTENCY DESC EXIT HELP PAGING SHOW TRACING
CQL help topics:
================
AGGREGATES CREATE_KEYSPACE DROP_TRIGGER TEXT
ALTER_KEYSPACE CREATE_MATERIALIZED_VIEW DROP_TYPE TIME
ALTER_MATERIALIZED_VIEW CREATE_ROLE DROP_USER TIMESTAMP
ALTER_TABLE CREATE_TABLE FUNCTIONS TRUNCATE
ALTER_TYPE CREATE_TRIGGER GRANT TYPES
ALTER_USER CREATE_TYPE INSERT UPDATE
APPLY CREATE_USER INSERT_JSON USE
ASCII DATE INT UUID
BATCH DELETE JSON
BEGIN DROP_AGGREGATE KEYWORDS
BLOB DROP_COLUMNFAMILY LIST_PERMISSIONS
BOOLEAN DROP_FUNCTION LIST_ROLES
COUNTER DROP_INDEX LIST_USERS
CREATE_AGGREGATE DROP_KEYSPACE PERMISSIONS
CREATE_COLUMNFAMILY DROP_MATERIALIZED_VIEW REVOKE
CREATE_FUNCTION DROP_ROLE SELECT
CREATE_INDEX DROP_TABLE SELECT_JSON
cqlsh> EXPAND ON
Now Expanded output is enabled
cqlsh> SELECT * FROM system.local ;
@ Row 1
/*
* 提示:该行代码过长,系统自动注释不进行高亮。一键复制会移除系统注释
* -------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
*/
key | local
bootstrapped | COMPLETED
broadcast_address | 127.0.0.1
cluster_name | Test Cluster
cql_version | 3.4.4
data_center | datacenter1
gossip_generation | 1618622481
host_id | 998e3685-a29a-4821-99f6-c6777d2b8c2d
listen_address | 127.0.0.1
native_protocol_version | 4
partitioner | org.apache.cassandra.dht.Murmur3Partitioner
rack | rack1
release_version | 3.11.10
rpc_address | 127.0.0.1
schema_version | e84b6a60-24cf-30ca-9b58-452d92911703
thrift_version | 20.1.0
/*
* 提示:该行代码过长,系统自动注释不进行高亮。一键复制会移除系统注释
* tokens | {'-1059970518849949708', '-1106099899304641834', '-1238429254808839807', '-1325247140355966396', '-1358168815470669603', '-1410457747424463415', '-1475040429037141445', '-1550260593960270025', '-1707146254083980414', '-1724518984375653974', '-1800186084666956563', '-1819832382110306211', '-2023226054307100417', '-2288236013672226800', '-2360795295294848575', '-2371596229120040796', '-2392173588527051709', '-2399010299570666012', '-2479278827410348408', '-2690487134313788538', '-2710875722581040486', '-2727303159158988770', '-28181632715248606', '-2883420743930240679', '-2901682558827320880', '-2943144007383526208', '-296859040773112263', '-3002131937638094243', '-3047248886289394761', '-3115852767080762276', '-3266937861042506259', '-3312791910272571667', '-3357785440490409515', '-3374546614721247776', '-3467403156780876978', '-3501966610776086311', '-3505108955170264412', '-3596849082238810985', '-3726286346716991841', '-3787000030425614006', '-3790638530365272827', '-3886847532807427744', '-3970192681210920181', '-4097581544543754026', '-4110583549846157387', '-4142542546815909784', '-4155337642802549026', '-4179209352944864572', '-4239055494435505678', '-4300112337665982062', '-4313624938118543566', '-4412567971425010144', '-4533757503470496370', '-4577907438019113593', '-4604788521636221284', '-4872570692811385503', '-4872857528535125674', '-4966264742649267143', '-498993633262115712', '-498995602828931955', '-4995830356482600146', '-503815095989811774', '-5082288725331398838', '-5112237665430359330', '-5206605759990662384', '-5219704484069950972', '-5239762465467273427', '-5262538022691489049', '-5289215414862026523', '-5663645031476097178', '-5690075031493520796', '-5751861926394325815', '-5762485836695674620', '-5825958799148339067', '-5882218636658703061', '-5893336564090004861', '-5912970346841466266', '-5967672189313899876', '-6167833628704304174', '-6208068223559912337', '-633971104034032066', '-6418985479173057807', '-6562264968516243146', '-6663608525214124853', '-6722344809108989315', '-6797550961169275198', '-6806711979650264602', '-6823770508046782445', '-6999523480145132293', '-7029337319055480736', '-7285854535266130748', '-7294322189180666228', '-7424092485530662389', '-7476702472567874023', '-7480609565780832149', '-7488888303400249562', '-7659958287185057556', '-7698453725005033841', '-7706320468376462711', '-7815622138620555220', '-7985983715988657981', '-8088855995318421399', '-8112870702266152768', '-8171658063028398996', '-8189172598240847324', '-8287461069206404016', '-829960682812252396', '-840880703868778475', '-8481695722049140705', '-8482498229219545839', '-8521072465859182057', '-8521170518832417460', '-8562625666030321727', '-8584158896987685284', '-8612049351703672579', '-8621147430467891720', '-862379669770207358', '-8689977367267793991', '-8736640459750930800', '-8794805973459347081', '-8860305338174377185', '-8869313664359552011', '-8994723259923613376', '-8998619034114379730', '-9065013741479699232', '-9109989791718001004', '-9168117153989861361', '-92511083541618456', '-936809484769871908', '1021453340428248216', '103181100959683573', '1035759329018851214', '1137409327807411883', '1272742555186489540', '1392011403035246162', '1422172840665737761', '1445847746217749010', '146202792505278799', '1542652072547894287', '1650316910854127337', '1667367901741764640', '1707798887626747646', '176820103251969045', '1782730794015248394', '2081917393958604387', '21037199887699021', '2151721886036370446', '2215022010866573228', '2260448510118628141', '2279270351481061545', '2300740737891806952', '2349488077106068058', '2385045602202170545', '2407581662970272339', '2545662092543191882', '259019894134848516', '26167514532315983', '2617556006151940812', '2617617087730179070', '2687582421405705578', '2743804868413912702', '3020228346059974697', '3074005852523335049', '3196916651346312150', '3198624218045843073', '3276771480223445217', '3289388694606379464', '3429790339998608867', '3443481153596840996', '3496753914241833356', '361802490624215176', '3628536831941748115', '3671452387603830787', '3739816229800358797', '3791854370991820683', '3803887540420119541', '3839431476203924294', '3926753055366476793', '3939081789143208313', '3939422157986663435', '3960359415109292425', '3961729061350795036', '4159376400260616148', '4227878370342429431', '4337235045782771349', '4345672293170647530', '4434149811026271111', '4485232080699009201', '4858041750153597977', '4898961328818622224', '4921237588532151118', '5072436562143541597', '5104096915535183868', '5135268762733471127', '5234691067847685698', '5268547676667423253', '5503249240116844525', '5530614559979644822', '5650664518406569941', '5780652791710828317', '5867589962667953004', '5970642375134485315', '6135036457714129267', '6178444266261682807', '6187729250758977124', '6202686383047062207', '6209966173276482479', '6272739075155561189', '6295945125879555177', '6518988022671745385', '6617498274388913820', '6649560864260998555', '6656988463181445799', '6744140485331736790', '6817906325611738613', '6856715148617807304', '6884294742612441944', '6907946715397884970', '6934866864547495081', '7174530296748650134', '7242807834460185743', '7389834586868484164', '7528046363327969290', '7583339281433411638', '7613144889415005730', '7641995119108142254', '7667376389234525814', '7685381025685870433', '7788314208156820738', '7816442674471847321', '7827558661413299986', '7993772984660043650', '8031555205789640911', '8056228186704086402', '8115486383227060370', '8138054669683458311', '8140043868192999217', '8157146702817239374', '8219843195015409930', '8241285675619470637', '8263554485286518282', '8289550982323879723', '8323214680037760934', '8400056439041669425', '8425935122841575031', '8442319271367915751', '8636659126357397474', '8643729579992142031', '8864383007129181777', '8905517994562238626', '8990659912570626764', '9015436124239191354', '9035163537957452900', '9129326339791611964', '955319836509523839', '963383790975214336'}
*/
truncated_at | null
(1 rows)
cqlsh>
cqlsh> DESCRIBE KEYSPACES;
system_schema system_auth system lhrdb system_distributed system_traces
cqlsh> select * from system_schema.keyspaces;
keyspace_name | durable_writes | replication
--------------------+----------------+-------------------------------------------------------------------------------------
system_auth | True | {'class': 'org.apache.cassandra.locator.SimpleStrategy', 'replication_factor': '1'}
system_schema | True | {'class': 'org.apache.cassandra.locator.LocalStrategy'}
system_distributed | True | {'class': 'org.apache.cassandra.locator.SimpleStrategy', 'replication_factor': '3'}
system | True | {'class': 'org.apache.cassandra.locator.LocalStrategy'}
system_traces | True | {'class': 'org.apache.cassandra.locator.SimpleStrategy', 'replication_factor': '2'}
(5 rows)
cqlsh> SHOW VERSION;
[cqlsh 5.0.1 | Cassandra 3.11.10 | CQL spec 3.4.4 | Native protocol v4]
cqlsh>
到Apache Cassandra 的官方网站下载最新版本的 Cassandra然后解压,即可完成安装。示例:下载3.11.9版本(请先在官网上确认版本号),操作如下
wget http://archive.apache.org/dist/cassandra/3.11.9/apache-cassandra-3.11.9-bin.tar.gz
tar -zxf apache-cassandra-3.11.9-bin.tar.gz -C /usr/local/
cd /usr/local/apache-cassandra-3.11.9
export PATH=/usr/local/apache-cassandra-3.11.9/bin:$PATH
👉 该包属于跨平台的,也可以同时用于Windows环境。
https://hub.docker.com/_/cassandra
docker pull cassandra:3.11
docker run --name lhrcassandra311 -d cassandra:3.11
docker exec -it lhrcassandra311 bash
Docker Hub上已经提供了Cassandra的官方镜像,可以方便地创建单节点Cassandra实例或Cassandra集群。Cassandra采用去中心化的集群架构,没有master节点的概念;但是会有seed节点在新节点连入时通知当前集群。
下面的Docker Compose模板将为你创建一个包含3个节点的Cassandra集群,其中第一个容器“cassandra-1”为seed节点。
mkdir -p /cassandra/
cat > /cassandra/docker-compose.yml <<"EOF"
version: '2'
services:
cassandra-1:
image: cassandra:3.11
container_name: cassandra-1
environment:
- CASSANDRA_BROADCAST_ADDRESS=cassandra-1
ports:
- 7000
restart: always
cassandra-2:
image: cassandra:3.11
container_name: cassandra-2
environment:
- CASSANDRA_BROADCAST_ADDRESS=cassandra-2
- CASSANDRA_SEEDS=cassandra-1
ports:
- 7000
depends_on:
- cassandra-1
restart: always
cassandra-3:
image: cassandra:3.11
container_name: cassandra-3
environment:
- CASSANDRA_BROADCAST_ADDRESS=cassandra-3
- CASSANDRA_SEEDS=cassandra-1
ports:
- 7000
depends_on:
- cassandra-2
restart: always
EOF
注意修改镜像的版本。
现在,我们可以轻松利用 docker-compose 命令来启动Cassandra集群了
cd /cassandra/
docker-compose up -d
[root@docker35 cassandra]# docker-compose up -d
Building with native build. Learn about native build in Compose here: https://docs.docker.com/go/compose-native-build/
Creating network "cassandra_default" with the default driver
Creating cassandra-1 ... done
Creating cassandra-2 ... done
Creating cassandra-3 ... done
[root@docker35 cassandra]#
启动之后,我们可以方便地查看集群状态
[root@docker35 cassandra]# docker-compose ps
Name Command State Ports
---------------------------------------------------------------------------------------------------------------------
cassandra-1 docker-entrypoint.sh cassa ... Up 0.0.0.0:1049->7000/tcp, 7001/tcp, 7199/tcp, 9042/tcp, 9160/tcp
cassandra-2 docker-entrypoint.sh cassa ... Up 0.0.0.0:1048->7000/tcp, 7001/tcp, 7199/tcp, 9042/tcp, 9160/tcp
cassandra-3 docker-entrypoint.sh cassa ... Up 0.0.0.0:1047->7000/tcp, 7001/tcp, 7199/tcp, 9042/tcp, 9160/tcp
[root@docker35 cassandra]# docker exec -it cassandra-1 cqlsh cassandra-2 -e "DESCRIBE CLUSTER"
Cluster: Test Cluster
Partitioner: Murmur3Partitioner
修改/etc/cassandra/default.conf/cassandra.yaml
sed -i 's/start_rpc: false/start_rpc: true/g' /etc/cassandra/default.conf/cassandra.yaml
sed -i 's/rpc_address: localhost/rpc_address: 0.0.0.0/g' /etc/cassandra/default.conf/cassandra.yaml
sed -i 's/# broadcast_rpc_address: 1.2.3.4/broadcast_rpc_address: 1.2.3.4/g' /etc/cassandra/default.conf/cassandra.yaml
-- 远程测试9042端口
telnet 192.168.66.35 9042
-- 连接
cqlsh 172.17.0.17
cqlsh 172.17.0.17 9042
1、进入python2的环境变量下
2、执行
pip install pyreadline
执行报错:
C:\Users\lhrxxt>cqlsh 192.168.66.35 9042
File "D:\Program Files\apache-cassandra-3.4-bin\apache-cassandra-3.4\bin\\cqlsh.py", line 146
except ImportError, e:
^
SyntaxError: invalid syntax
原因:不支持Python 3,需要修改为python 2
解决:安装Python 2,修改文件D:\Program Files\apache-cassandra-3.4-bin\apache-cassandra-3.4\bin\cqlsh.bat,添加一行:set PATH=D:\Program Files\Python\Python27,如下:
重新执行即可。
C:\Users\lhrxxt>cqlsh 192.168.66.35 9042
Connection error: ('Unable to connect to any servers', {'192.168.66.35': ProtocolError("cql_version '3.4.2' is not supported by remote (w/ native protocol). Supported versions: [u'3.4.4']",)})
C:\Users\lhrxxt>cqlsh 192.168.66.35 9042 --cqlversion=3.4.4
Connected to Test Cluster at 192.168.66.35:9042.
[cqlsh 5.0.1 | Cassandra 3.11.10 | CQL spec 3.4.4 | Native protocol v4]
Use HELP for help.
WARNING: pyreadline dependency missing. Install to enable tab completion.
https://cassandra.apache.org/download/
https://cassandra.apache.org/doc/latest/architecture/index.html
https://www.datastax.com/products/compare/nosql-performance-benchmarks
https://docs.datastax.com/en/cassandra-oss/3.x/
https://docs.datastax.com/en/cassandra-oss/3.x/cassandra/architecture/archDataDistributeHashing.html
https://docs.datastax.com/en/cassandra-oss/3.x/cassandra/dml/dmlIntro.html
https://help.aliyun.com/document_detail/126637.html?spm=a2c4g.11186623.6.542.268a7f3bIk5dap
https://www.w3cschool.cn/cassandra/
本文结束。