Apache Cassandra是一个免费开源的分布式NoSQL数据库管理系统,可用于存储海量数据。最初由Facebook公司研发,之后被捐献给Apache软件基金会(Apache Software Foundation, ASF),成为ASF旗下的一个开源项目。Cassandra的编译安装需要Java环境的支持和编译软件Ant。
一、Java的安装与配置
Linux上一般都会自带安装了Open JDK,可以理解为JDK的精简版。有些软件的运行Open JDK的支持不友好,所以需要安装更为完善的JDK。在安装JDK之前,都需要检查或卸载系统上原生的Open JDK。
1. 卸载系统自带的Open JDK以及相关的java文件
1.1查看目前系统自带的java信息
打开CentOS 7系统终端,在桌面上单击鼠标右键,点击打开终端。在命令窗口键入:
java -version
可以看到系统自带的Open JDK的信息。
1.2 删除Open JDK系统自带文件
- 在命令窗口键入:
rpm -qa | grep java
命令说明:
rpm 管理套件
-qa 使用询问模式,查询所有套件
grep 查找文件里符合条件的字符串
java 查找包含java字符串的文件
- 删除.noarch外的其它文件:
su #进入root权限
rpm -e --nodeps java-1.8.0-openjdk-1.8.0.181-7.b13.el7.x86_64
rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.181-7.b13.el7.x86_64
命令说明:
rpm 管理套件
-e 删除指定的套件
–nodeps 不验证套件的相互关联性
1.3 验证是否删除成功
在命令窗口键入:
java -version
显示未找到命令…,代表已删除成功
2. 下载并安装稳定的JDK
2.1 下载JDK压缩包并解压
JDK的下载地址为:JDK历史版本。我准备下载的是JDK 8,点击截图中的Java SE 8(8u202 and earlier)。
进入下一个界面,我选择下载的版本为JDK 8_102。点击Accept License Agreement,选择下载jdk-8u102-linux-x64.tar.gz版本。
点击Save File,然后选择OK。下载好的文件被保存在系统的下载文件夹里。
2.2 解压JDK安装包
打开系统终端,首先进入下载目录,然后将压缩包解压到系统的opt目录下。
cd /home/wqy/下载
sudo tar -zxvf jdk-8u102-linux-x64.tar.gz -C /opt
命令介绍:
sudo 进入一次root模式,应付有权限文件(夹)的操作
tar 压缩/查询/解压缩命令
-z 通过gzip的支持进行压缩/解压缩,此时文件名最好为*.tar.gz
-x 解包或解压缩,搭配-C在特定目录解压
-v 在压缩/解压缩的过程中,将正在处理的文件名显示出来
-f filename -f后面要立刻接要被处理的文件名
进入opt目录,可以查看解压后的JDK文件。
cd /opt
ls -l
文件解压完成。
3. 配置JDK环境变量
3.1 编辑全局变量
在终端命令行键入:
sudo vim /etc/profile
命令说明:
vim 文本编辑
/etc/profile 全局变量文件
进入文本编辑状态下,光标走到文件最后一行,键盘按下:i,进入插入状态:
在文本的最后一行粘贴如下:
#java environment
export JAVA_HOME=/opt/jdk1.8.0_102 #此处目录为JDK文件放置位置
export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
export PATH=$PATH:${JAVA_HOME}/bin
此时,在键盘上按下Esc键,将输入法切换为英文。键入:
:wq #保存并退出
让刚刚设置的环境变量生效,键入:
source /etc/profile
3.2 检查是否配置成功
在终端键入:
java -version
显示如下图所示,说明成功完成安装。
二、Ant的安装与配置
1. 下载Ant安装包
前往Ant官网,选择Ant 1.10.7安装包进行下载。
下载得到的压缩包保存在主文件夹下的下载里。
2. 将压缩包解压到opt目录下
在终端界面键入:
cd /home/wqy/下载
sudo tar -zxvf jdk-8u102-linux-x64.tar.gz -C /opt
3. 配置环境变量
在终端键入如下命令:
sudo vim /etc/profile #打开配置文件
进入文本编辑状态下,光标走到文件最后一行,键盘按下:i,进入插入状态:
在文本的最后一行粘贴如下:
export ANT_HOME=/opt/apache-ant-1.10.7
export PATH=$JAVA_HOME/bin:$ANT_HOME/bin:$PATH
此时,在键盘上按下Esc键,将输入法切换为英文。键入:
:wq #保存并退出
让刚刚设置的环境变量生效,键入:
source /etc/profile
测试Ant是否安装成功,在终端键入:
ant -version
如果出现如下提示,则说明安装成功。
三、Cassandra的安装与配置
1. 下载Cassandra源码安装包
前往Cassandra下载网站,下载Cassandra 3.11.2源码安装包。下载apache-cassandra-3.11.2-src.tar.gz安装包。
2. 将压缩包解压到opt目录下
在终端界面键入:
cd /home/wqy/下载
sudo tar -zxvf apache-cassandra-3.11.2-src.tar.gz -C /opt
3. 利用Ant编译Cassandra
进入到/opt/cassandra目录下,在终端键入:
cd /opt/apache-cassandra-3.11.2-src
ls -l
从上图可以看出,Cassandra文件的权限均为root,为保证在当前用户模式下能够对Cassandra源码安装包进行顺利编译,需要对Cassandra的文件权限进行更改,在终端键入:
sudo chown -R wqy:wqy ./apache-cassandra-3.11.2-src #更改为当前用户权限
进入到Cassandra目录下,输入ant进行编译。终端输入:
cd /opt/apache-cassandra-3.11.2-src
ant
经过几分钟的编译,最终在终端会显示 “BUILD SUCCESSFUL“,表明编译成功。
4. 配置Cassandra的环境变量
- 创建Cassandra数据存放文件夹
sudo mkdir -p /var/lib/cassandra/data #使用一次root权限,-p表示建立多级子文件夹
sudo mkdir /var/lib/cassandra/commitlog
sudo mkdir /var/lib/cassandra/saved_caches
sudo chown -R wqy:wqy /var/lib/cassandra #修改cassandra目录权限为普通用户(wqy)
- 编辑cassandra/conf目录下的cassandra.yaml配置文件
cd /opt/apache-cassandra-3.11.2-src/conf/ #进入cassandra.yaml文件的目录
vim cassandra.yaml #打开cassandra.yaml文件
- 修改配置cassandra.yaml
cluster_name: 'Big_data Cluster' //集群名称。同一个集群要使用同一名称
num_tokens: 256
hinted_handoff_enabled: true
hinted_handoff_throttle_in_kb: 1024
max_hints_delivery_threads: 2
hints_flush_period_in_ms: 10000
max_hints_file_size_in_mb: 128
batchlog_replay_throttle_in_kb: 1024
authenticator: AllowAllAuthenticator
authorizer: AllowAllAuthorizer
role_manager: CassandraRoleManager
roles_validity_in_ms: 2000
permissions_validity_in_ms: 2000
credentials_validity_in_ms: 2000
partitioner: org.apache.cassandra.dht.Murmur3Partitioner
data_file_directories:
- /var/lib/cassandra/data //数据文件存放路径
commitlog_directory: /var/lib/cassandra/commitlog //操作日志文件存放路径
cdc_enabled: false
disk_failure_policy: stop
commit_failure_policy: stop
prepared_statements_cache_size_mb:
thrift_prepared_statements_cache_size_mb:
key_cache_size_in_mb:
key_cache_save_period: 14400
row_cache_size_in_mb: 0
row_cache_save_period: 0
counter_cache_size_in_mb:
counter_cache_save_period: 7200
saved_caches_directory: /var/lib/cassandra/saved_caches //缓存文件存放路径
commitlog_sync: periodic
commitlog_sync_period_in_ms: 10000
commitlog_segment_size_in_mb: 32
seed_provider:
- class_name: org.apache.cassandra.locator.SimpleSeedProvider
parameters:
- seeds: "127.0.0.1" //集群种子节点ip,多个之间用逗号隔开(单机安装时不用改,用默认的)
concurrent_reads: 32
concurrent_writes: 32
concurrent_counter_writes: 32
concurrent_materialized_view_writes: 32
memtable_allocation_type: heap_buffers
index_summary_capacity_in_mb:
index_summary_resize_interval_in_minutes: 60
trickle_fsync: false
trickle_fsync_interval_in_kb: 10240
storage_port: 7000
ssl_storage_port: 7001
listen_address: 127.0.0.1 //需要监听的IP或主机名。(单机安装时修改为seeds的IP "127.0.0.1")
start_native_transport: true
native_transport_port: 9042
start_rpc: false
rpc_address: 127.0.0.1 //用于监听客户端连接的地址(单机安装时修改为seeds的IP "127.0.0.1")
rpc_port: 9160
broadcast_rpc_address: 1.2.3.4 //修改 rpc_address后,取消该行注释
rpc_keepalive: true
rpc_server_type: sync
thrift_framed_transport_size_in_mb: 15
incremental_backups: false
snapshot_before_compaction: false
auto_snapshot: true
column_index_size_in_kb: 64
column_index_cache_size_in_kb: 2
compaction_throughput_mb_per_sec: 16
sstable_preemptive_open_interval_in_mb: 50
read_request_timeout_in_ms: 5000
range_request_timeout_in_ms: 10000
write_request_timeout_in_ms: 2000
counter_write_request_timeout_in_ms: 5000
cas_contention_timeout_in_ms: 1000
truncate_request_timeout_in_ms: 60000
request_timeout_in_ms: 10000
slow_query_log_timeout_in_ms: 500
cross_node_timeout: false
endpoint_snitch: SimpleSnitch
dynamic_snitch_update_interval_in_ms: 100
dynamic_snitch_reset_interval_in_ms: 600000
dynamic_snitch_badness_threshold: 0.1
request_scheduler: org.apache.cassandra.scheduler.NoScheduler
server_encryption_options:
internode_encryption: none
keystore: conf/.keystore
keystore_password: cassandra
truststore: conf/.truststore
truststore_password: cassandra
client_encryption_options:
enabled: false
optional: false
keystore: conf/.keystore
keystore_password: cassandra
internode_compression: dc
inter_dc_tcp_nodelay: false
tracetype_query_ttl: 86400
tracetype_repair_ttl: 604800
enable_user_defined_functions: false
enable_scripted_user_defined_functions: false
enable_materialized_views: true
windows_timer_interval: 1
transparent_data_encryption_options:
enabled: false
chunk_length_kb: 64
cipher: AES/CBC/PKCS5Padding
key_alias: testing:1
key_provider:
- class_name: org.apache.cassandra.security.JKSKeyProvider
parameters:
- keystore: conf/.keystore
keystore_password: cassandra
store_type: JCEKS
key_password: cassandra
tombstone_warn_threshold: 1000
tombstone_failure_threshold: 100000
batch_size_warn_threshold_in_kb: 5
batch_size_fail_threshold_in_kb: 50
unlogged_batch_across_partitions_warn_threshold: 10
compaction_large_partition_warning_threshold_mb: 100
gc_warn_threshold_in_ms: 1000
back_pressure_enabled: false
back_pressure_strategy:
- class_name: org.apache.cassandra.net.RateBasedBackPressure
parameters:
- high_ratio: 0.90
factor: 5
flow: FAST
此时,在键盘上按下Esc键,将输入法切换为英文。键入:
:wq #保存并退出
5. 启动并运行Cassandra
进入Cassandra安装目录下,在终端输入:
cd /opt/apache-cassandra-3.11.2-src/bin
su
./cassandra -R #root用户启动方式
没有什么报错ERROR,看到最后输出的为Node/x.x.x.x state jump to NORMAL,就表示Cassandra安装完成了。
可以通过查看集群信息进行确认。UN表示的是该服务器的状态,UN是运行中,DN是宕机。
./nodetool status #查看集群信息
查看各端口是否启动。
netstat -tpln #查看端口是否启动成功
Cassandra带有一个强大的命令行shell cqlsh来在Cluster上运行查询。查询语言使用CQL或Cassandra Query语言编写的。要访问CQL shell,运行以下命令:
./cqlsh
exit #退出CQL shell
至此,Cassandra安装完成。
PS:退出Cassandra(结束后台运行)
首先进入到Cassandra的bin目录下,输入
ps -ef |grep cassandra
查询到该进程的pid,然后kill:
sudo kill pid
这里pid替换成实际的pid即可。
附录:
Java安装配置参考
Ant安装配置参考
[1] CentOS7 安装与配置Ant
Cassandra安装配置参考
[1] Cassandra在centos7中手动安装配置
[2] CentOS 7 安装部署 cassandra作为kairosdb的数据存储
[3] cassandra.yaml配置
[4] cassandra安装配置