赞
踩
当您需要可伸缩性和高可用性而不影响性能时,Apache Cassandra数据库是正确的选择。线性可扩展性 和在商用硬件或云基础架构上经过验证的容错能力使它成为关键任务数据的理想平台。Cassandra对跨多个数据中心的复制提供了一流的支持,为您的用户提供了更低的延迟,并且能让您在区域性断电情况下也稳如老狗,生生不息。
Cassandra有以下特性:
容错:数据会自动复制到多个节点以实现容错。支持跨多个数据中心的复制。可以更换故障节点而不会造成停机。
高性能:Cassandra 在基准测试和实际应用程序中始终胜过流行的NoSQL替代方案,这主要是因为在基础架构方面有很多选择。
去中心化:没有单点故障。没有网络瓶颈。集群中的每个节点都是相同的
可扩展:一些最大的生产部署包括Apple的75,000个节点存储超过10 PB的数据,Netflix(2,500个节点,420 TB,每天超过1万亿个请求),中国搜索引擎Easou(270个节点,300 TB,超过8亿个)每天的请求数)和eBay(超过100个节点,250 TB)。
可靠性:Cassandra 适用于即使整个数据中心发生故障也不会丢失数据的应用程序。
可伸缩性:读写吞吐量都随着新机器的增加而线性增加,而不会造成停机或应用中断。
对于大多数用户而言,安装二进制tarball是最简单的选择。压缩包将所有内容解压缩到一个位置,二进制文件和配置文件位于它们自己的子目录中。tarball安装最明显的属性是它不需要root
权限,可以安装在任何Linux发行版上。
打包安装需要root
权限。如果要使用YUM安装Cassandra,请在CentOS和基于RHEL的发行版上安装RPM构建。如果要使用APT安装Cassandra,请在Ubuntu和其他基于Debian的发行版上安装Debian构建。请注意,YUM和APT方法都需要root
权限,并且将以cassandra
OS用户身份安装二进制文件和配置文件 。
1)验证安装的Java版本,例如:
$ java -version
openjdk version "1.8.0_222"
OpenJDK Runtime Environment (build 1.8.0_222-8u222-b10-1ubuntu1~16.04.1-b10)
OpenJDK 64-Bit Server VM (build 25.222-b10, mixed mode)
2)从Apache Cassandra下载 站点上的镜像之一下载二进制tarball 。例如,要下载3.11.6:
$ curl -OL https://mirror.bit.edu.cn/apache/cassandra/3.11.6/apache-cassandra-3.11.6-bin.tar.gz
3)打开压缩包
$ tar xzvf apache-cassandra-3.11.6-bin.tar.gz
4)启动Cassandra
有关如何配置安装的信息,请参阅配置Cassandra
$ cd apache-cassandra-4.0.0/
$ bin/cassandra
5)检查Cassandra的状态
$ bin/nodetool status
# 输出中的状态列应报告UN,代表“ Up / Normal”。
Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns (effective) Host ID Rack
UN 127.0.0.1 70.03 KiB 256 100.0% ac0d7d8c-4086-4fc1-b19b-a8a50708b5aa rack1
# 或者,通过以下方式连接到数据库:
$ bin/cqlsh
1)验证安装的Java版本,例如:
$ java -version
openjdk version "1.8.0_222"
OpenJDK Runtime Environment (build 1.8.0_222-8u222-b10-1ubuntu1~16.04.1-b10)
OpenJDK 64-Bit Server VM (build 25.222-b10, mixed mode)
2)将Cassandra的Apache存储库添加到文件中/etc/yum.repos.d/cassandra.repo
(作为root
用户)。最新的主版本是4.0,对应的发行版名称是40x
(后缀“ x”)。对于老版本使用311x
的C * 3.11系列,30x
3.0,22x
2.2和21x
2.1。例如,要添加版本4.0(40x
)的存储库:
[cassandra]
name=Apache Cassandra
baseurl=https://downloads.apache.org/cassandra/redhat/40x/
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://downloads.apache.org/cassandra/KEYS
3)从源更新包索引:
$ sudo yum update
4)使用YUM安装Cassandra:
$ sudo yum install cassandra
注意:cassandra
安装过程中将创建一个新的Linux用户。Cassandra服务也将以该用户身份运行。
5)启动Cassandra服务:
$ sudo service cassandra start
6)使用以下方法监视启动进度:
$ tail -f /var/log/cassandra/system.log
7)检查Cassandra的状态:
$ nodetool status
输出中的状态列应报告UN
,代表“正常/正常”。
或者,通过以下方式连接到数据库:
$ cqlsh
要在单个节点上运行Cassandra,存在的默认配置文件./conf/cassandra.yaml
就足够了,您无需更改任何配置。但是,当部署节点群集或使用不在同一主机上的客户端时,必须更改某些参数。
Cassandra配置文件可以在conf
tarball目录中找到。对于软件包,配置文件将位于中/etc/cassandra
。
Cassandra中的大多数配置都是通过可以在中设置的yaml属性完成的cassandra.yaml
。至少应考虑设置以下属性:
cluster_name
:集群的名称。seeds
:用逗号分隔的群集种子IP地址列表。storage_port
注意:您不一定需要更改此设置,但请确保没有防火墙阻止此端口。listen_address
:节点的IP地址,这是允许其他节点与此节点通信的地址,因此更改它很重要。或者,您可以设置listen_interface
告诉Cassandra使用哪个接口,以及连续使用哪个地址。仅设置一个,而不要同时设置两个。native_transport_port
:对于storage_port,请确保此端口未被防火墙阻止,因为客户端将在此端口上与Cassandra通信。以下yaml属性控制目录的位置:
data_file_directories
:数据文件所在的一个或多个目录。commitlog_directory
:提交日志文件所在的目录。saved_caches_directory
:保存的缓存所在的目录。hints_directory
:提示所在的目录。出于性能原因,如果您有多个磁盘,请考虑将提交日志和数据文件放在不同的磁盘上。
JVM级别的设置(例如堆大小)可以在中设置cassandra-env.sh
。您可以将任何其他JVM命令行参数添加到JVM_OPTS
环境变量。当Cassandra启动时,这些参数将传递给JVM。
正在使用的日志记录器是logback。您可以通过编辑更改日志记录属性logback.xml
。默认情况下,它将在INFO级别登录到一个名为的文件system.log
,在调试级别登录到一个名为的文件debug.log
。在前台运行时,它还将以INFO级别登录到控制台。
Cassandra的API是CQL,即Cassandra查询语言。要使用CQL,您将需要连接到集群,这可以完成:
cqlsh是用于通过CQL与Cassandra交互的命令行shell脚本。它随每个Cassandra软件包一起提供,可以在cassandra可执行文件旁边的bin /目录中找到。它连接到命令行上指定的单个节点。例如:
$ bin/cqlsh localhost
Connected to Test Cluster at localhost:9042.
[cqlsh 5.0.1 | Cassandra 3.8 | CQL spec 3.4.2 | Native protocol v4]
Use HELP for help.
cqlsh> SELECT cluster_name, listen_address FROM system.local;
cluster_name | listen_address
--------------+----------------
Test Cluster | 127.0.0.1
(1 rows)
cqlsh>
qlsh是用于通过CQL(Cassandra查询语言)与Cassandra交互的命令行shell脚本。它随每个Cassandra软件包一起提供,可以在cassandra可执行文件旁边的bin /目录中找到。cqlsh利用Python本机协议驱动程序,并连接到命令行上指定的单个节点。
用法:
cqlsh [options] [host [port]]
选项:
-C
--color
强制颜色输出
--no-color
禁用颜色输出
--browser
指定用于显示cqlsh帮助的浏览器。这可以是受支持的浏览器名称之一(例如firefox
),也可以是后跟浏览器路径%s
(例如 )。/usr/bin/google-chrome-stable %s
--ssl
连接到Cassandra时使用SSL
-u
--user
用于通过Cassandra进行身份验证的用户名
-p
--password
用于与Cassandra进行身份验证的密码,应与 --user
-k
--keyspace
要进行身份验证的密钥空间,应与 --user
-f
--file
从给定文件执行命令,然后退出
--debug
打印其他调试信息
--encoding
指定输出的非默认编码(默认为UTF-8)
--cqlshrc
指定一个非默认位置cqlshrc
的文件
-e
--execute
执行给定的语句,然后退出
--connect-timeout
以秒为单位指定连接超时(默认为2s)
--python /path/to/python
指定Python解释器的完整路径,以覆盖安装了多个解释器的系统上的默认值
--request-timeout
以秒为单位指定请求超时(默认为10s)
-t
--tty
强制tty模式(命令提示符)
除了支持常规的CQL语句外,cqlsh还支持许多不属于CQL的特殊命令。这些在下面详细说明。
用法:CONSISTENCY
设置要遵循的操作的一致性级别。有效的参数包括:
ANY
ONE
TWO
THREE
QUORUM
ALL
LOCAL_QUORUM
LOCAL_ONE
SERIAL
LOCAL_SERIAL
用法:SERIAL CONSISTENCY
设置要执行的操作的串行一致性级别。有效的参数包括:
SERIAL
LOCAL_SERIAL
串行一致性水平仅由条件更新(INSERT
,UPDATE
和DELETE
用IF
条件)。对于那些,串行一致性级别定义了串行阶段(或“ paxos”阶段)的一致性级别,而正常一致性级别定义了“学习”阶段的一致性,即,将保证哪种类型的读取都可以看到正确的更新远。例如,如果条件写入的一致性级别为QUORUM
(并且成功),则QUORUM
保证可以看到该写入。但是,如果该写入的常规一致性级别为ANY
,则只能SERIAL
保证一致性级别为的读取才能看到它(即使具有一致性的读取ALL
也不能保证足够)。
打印正在使用的cqlsh,Cassandra,CQL和本机协议版本。例:
cqlsh> SHOW VERSION
[cqlsh 5.0.1 | Cassandra 3.8 | CQL spec 3.4.2 | Native protocol v4]
除集群名称外,还打印cqlsh连接到的Cassandra节点的IP地址和端口。例:
cqlsh> SHOW HOST
Connected to Prod_Cluster at 192.0.0.1:9042.
Pretty打印特定的跟踪会话。
用法:SHOW SESSION
用法示例:
cqlsh> SHOW SESSION 95ac6470-327e-11e6-beca-dfb660d92ad8
Tracing session: 95ac6470-327e-11e6-beca-dfb660d92ad8
activity | timestamp | source | source_elapsed | client
-----------------------------------------------------------+----------------------------+-----------+----------------+-----------
Execute CQL3 query | 2016-06-14 17:23:13.979000 | 127.0.0.1 | 0 | 127.0.0.1
Parsing SELECT * FROM system.local; [SharedPool-Worker-1] | 2016-06-14 17:23:13.982000 | 127.0.0.1 | 3843 | 127.0.0.1
...
读取文件的内容,并以CQL语句或特殊的cqlsh命令执行每一行。
用法:SOURCE
用法示例:
cqlsh> SOURCE '/home/thobbs/commands.cql'
开始捕获命令输出并将其附加到指定文件。捕获到的输出不会在控制台上显示。
用法:
CAPTURE '<file>';
CAPTURE OFF;
CAPTURE;
也就是说,必须在字符串文字内给出要附加到的文件的路径。相对于当前工作目录解释路径。支持使用tilde速记符号('~/mydir'
)来引用$HOME
。
仅捕获查询结果输出。仅cqlsh命令的错误和输出仍将显示在cqlsh会话中。
要停止捕获输出并再次在cqlsh会话中显示它,请使用。CAPTURE OFF
要检查当前的捕获配置,请不使用CAPTURE
任何参数。
提供有关cqlsh命令的信息。要查看可用主题,请输入HELP
不带任何参数的内容。要查看有关某个主题的帮助,请使用。另请参见用于控制使用哪种浏览器显示帮助的参数。HELP ``--browser
启用或禁用查询跟踪。启用跟踪后,查询完成后,将打印查询期间事件的跟踪。
用法:
TRACING ON
TRACING OFF
启用分页,禁用分页或设置读取查询的页面大小。启用分页后,一次将仅提取一页数据,并且将显示提示以提取下一页。通常,最好在交互式会话中启用分页,以免一次获取和打印大量数据。
用法:
PAGING ON
PAGING OFF
PAGING <page size in rows>
启用或禁用行的垂直打印。EXPAND
当获取许多列或单个列的内容很大时,启用很有用。
用法:
EXPAND ON
EXPAND OFF
以当前会话的指定Cassandra用户身份进行身份验证。
用法:
LOGIN <username> [<password>]
结束当前会话并终止cqlsh进程。
用法:
EXIT
QUIT
清除控制台。
用法:
CLEAR
CLS
打印模式元素或集群的描述(通常是一系列DDL语句)。这对于转储全部或部分模式很有用。
用法:
DESCRIBE CLUSTER
DESCRIBE SCHEMA
DESCRIBE KEYSPACES
DESCRIBE KEYSPACE <keyspace name>
DESCRIBE TABLES
DESCRIBE TABLE <table name>
DESCRIBE INDEX <index name>
DESCRIBE MATERIALIZED VIEW <view name>
DESCRIBE TYPES
DESCRIBE TYPE <type name>
DESCRIBE FUNCTIONS
DESCRIBE FUNCTION <function name>
DESCRIBE AGGREGATES
DESCRIBE AGGREGATE <aggregate function name>
在任何命令中,DESC
都可以代替使用DESCRIBE
。
该命令显示集群名称和分区程序:DESCRIBE CLUSTER
cqlsh> DESCRIBE CLUSTER
Cluster: Test Cluster
Partitioner: Murmur3Partitioner
该命令显示重新创建整个架构所需的DDL语句。这对于转储架构以克隆集群或从备份还原特别有用。DESCRIBE SCHEMA
将数据从表复制到CSV文件。
用法:
COPY <table name> [(<column>, ...)] TO <file name> WITH <copy option> [AND <copy option> ...]
如果未指定任何列,则表中的所有列将被复制到CSV文件。可以通过在表名后面添加一个用逗号括起来的列名列表来指定要复制的列子集。
本应是代表目标文件的路径字符串文字(单引号)。这也可以是特殊值(不带单引号),以将CSV打印到stdout。```STDOUT`
有关同时适用于和的选项,请参见共享的COPY选项。COPY TO``COPY FROM
MAXREQUESTS
最大令牌数范围可以同时获取。默认为6。
PAGESIZE
单个页面中要获取的行数。预设为1000。
PAGETIMEOUT
默认情况下,页面超时为页面大小每1000个条目10秒,如果页面大小较小则为10秒。
BEGINTOKEN
, ENDTOKEN
要导出的令牌范围。默认为导出完整的铃声。
MAXOUTPUTSIZE
输出文件的最大大小,以行数为单位;超出此最大值,输出文件将被拆分为多个段。-1表示无限制,并且是默认值。
ENCODING
用于字符的编码。默认为utf8
。
将数据从CSV文件复制到表。
用法:
COPY <table name> [(<column>, ...)] FROM <file name> WITH <copy option> [AND <copy option> ...]
如果未指定任何列,则CSV文件中的所有列都将复制到表中。可以通过在表名后面添加一个用逗号括起来的列名列表来指定要复制的列子集。
的应为字符串文字(带单引号),代表源文件的路径。这也可以是特殊值(不带单引号),以便从stdin读取CSV数据。```STDIN`
有关同时适用于和的选项,请参见共享的COPY选项。COPY TO``COPY FROM
INGESTRATE
每秒要处理的最大行数。默认为100000
MAXROWS
要导入的最大行数。-1表示无限制,并且是默认值。
SKIPROWS
要跳过的许多初始行。默认为0。
SKIPCOLS
以逗号分隔的要忽略的列名称列表。默认情况下,不跳过任何列。
MAXPARSEERRORS
要忽略的最大解析错误总数。-1表示无限制,并且是默认值。
MAXINSERTERRORS
要忽略的最大插入错误总数。-1表示无限。默认值为1000。
ERRFILE
=
来存储无法导入所有行的文件,在默认情况下,这是import__.err
地方是你的密钥空间,并
为你的表名。
MAXBATCHSIZE
单个批次中插入的最大行数。默认为20
MINBATCHSIZE
单个批处理中插入的最小行数。默认为2。
CHUNKSIZE
一次从主进程传递给子工作进程的行数。预设为1000。
和共有的选项。COPY TO``COPY FROM
NULLVAL
空值的字符串占位符。默认为null
。
HEADER
对于,控制CSV输出文件中的第一行是否包含列名称。对于COPY FROM,指定CSV输入文件中的第一行是否包含列名。默认为。COPY TO``false
DECIMALSEP
用作小数点分隔符的字符。默认为.
。
THOUSANDSSEP
用于分隔数千个字符。默认为空字符串。
BOOLSTYlE
布尔值的字符串文字格式。默认为True,False
。
NUMPROCESSES
为COPY
任务创建的子工作进程数。默认值最大为4,最大为16 。但是,最多将创建(num_cores-1)个进程。COPY FROM``COPY TO
MAXATTEMPTS
在放弃之前获取数据范围(使用时)或插入数据块(使用时)的最大尝试失败次数。默认为5。COPY TO``COPY FROM
REPORTFREQUENCY
状态更新的频率(以秒为单位)。默认值为0.25。
RATEFILE
一个可选文件,用于输出速率统计信息。默认情况下,统计信息不会输出到文件中。
以下列出了Java、Python、Go语言的Cassandra客户端驱动程序。在选择驱动程序之前,应验证特定驱动程序支持的Cassandra版本和功能。
客户端的详细使用细则,读者可点击链接相应的学习,后面有机会的话考虑出一部分教程。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。