| 作者 | 日期 | 天气 |
|---|---|---|
| 元公子 | 2019-12-20(周五开始,周六发布) | 阳光明媚,狂风乱炸 |
你知道的越少,你不知道的就越少
没有朋友的点赞,就没法升级打怪
一、他是边位?
Apache开源分布式NoSQL数据库存储系统,最初由Facebook开发。特性:可扩展,最终数据一致性、去中心化(人人平等,没有大佬),读写速度快(读差些),部署简单等。
目前跟他同行的有HBase和MongoDB。
二、用在哪里?
实话实说,真没实战经验。按自己炼气期的眼界,只能想到先存储些应用类日志、用户行为日志等等。
三、下载安装包
官方地址:cassandra.apache.org/download
下载最新版软件:apache-cassandra-3.11.5-bin
四、系统环境检查/准备
- Java jdk1.8以上环境
- Python 2.7 或 3.x以上(客户端连接命令cqlsh所需)
- 示例使用Centos7操作系统
五、安装软件
1.创建专属用户(可省略此步,直接使用root用户或者您愿意)
2.选择安装目录
解压缩
[root@hadoop-master /soft]# tar -xvzf apache-cassandra-3.11.5-bin.tar.gz
修改文件夹所属用户和用户组
[root@hadoop-master /soft]# chown -R hadoop:hadoop apache-cassandra-3.11.5
创建软链接
[root@hadoop-master /soft]# ln -s apache-cassandra-3.11.5 cassandra
# 删除软链接文件命令 rm -rf cassandra
3.设置环境变量
文件最底部追加以下内容
[root@hadoop-master /soft]# vi /etc/profile
export CASSANDRA_HOME=/soft/cassandra
export PATH=$CASSANDRA_HOME/bin:$PATH
执行保存: Esc :wq
[root@hadoop-master /soft]# source /etc/profile
六、熟悉配置主要参数-初段位
使用hadoop用户
[root@hadoop-master /soft]# su - hadoop
[hadoop@hadoop-master ~]$ cp /soft/cassandra/conf/cassandra.yaml /soft/cassandra/conf/cassandra.yaml.bak
[hadoop@hadoop-master ~]$ vi /soft/cassandra/conf/cassandra.yaml
# 集群名称,默认Test Cluster
cluster_name: 'Test Cluster'
seed_provider:
parameters:
# 集群中的IP地址或域名列表,多个以逗号分隔。Ex: "<ip1>,<ip2>,<ip3>"
- seeds: "hadoop-master"
# 内网节点间存储通信端口,默认7000,确保防火墙打开。
storage_port: 7000
# 监听地址IP地址/域名
listen_address: hadoop-master
# 监听的网卡接口,只能设置一个
# listen_interface: eth0
# 内网节点间通信端口,默认9042,确保防火墙打开。
native_transport_port: 9042
# 允许远程访问
rpc_address: 域名或ip
# 数据文件存储路径,可以指定多个
data_file_directories:
- /home/hadoop/cassandra/data
# 提交日志文件存储路径,猜测与mysql的binlog类似
# 官方建议data_file_directories和commitlog_directory存储在不同的硬盘,可以提高IO或者容灾
commitlog_directory: /home/hadoop/cassandra/commitlog
# 存储缓存文件的路径
saved_caches_directory: /home/hadoop/cassandra/saved_caches
# 存储提示文件的路径
hints_directory: /home/hadoop/cassandra/hints
# 开启登录密码模式,默认账户/密码:cassandra/cassandra
authenticator: PasswordAuthenticator
authorizer: CassandraAuthorizer
七、启动测试
使用hadoop用户
# -f 前台启动
[hadoop@hadoop-master ~]$ cassandra -f
# 查看节点状态
[hadoop@hadoop-master ~]$ nodetool status
Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns (effective) Host ID Rack
UN 192.168.0.xxx 314.29 KiB 256 100.0% 50177948-9a5d-439a-b421-3f112b0b1301 rack1
八、服务自启动
切换root用户
[hadoop@hadoop-master ~]$ su - root
[root@hadoop-master ~]# vi /etc/init.d/cassandra
#!/bin/sh
# chkconfig: 345 85 15
# description: service for apache-cassandra-3.11.5
# processname: cassandra
case "$1" in
start)
echo "Starting cassandra"
su - hadoop -c 'export CASSANDRA_LOG_DIR="/home/hadoop/cassandra/logs"; nohup /soft/cassandra/bin/cassandra >/dev/null 2>&1 &'
echo "Cassandra started"
;;
stop)
echo "Stopping cassandra"
PID_COUNT=`ps aux |grep CassandraDaemon |grep -v grep | wc -l`
PID=`ps aux |grep CassandraDaemon |grep -v grep | awk {'print $2'}`
if [ $PID_COUNT -gt 0 ];then
echo "Try stop cassandra"
kill -9 $PID
echo "Kill cassandra SUCCESS!"
else
echo "There is no cassandra!"
fi
;;
restart)
echo "Restarting cassandra"
$0 stop
$0 start
;;
status)
su - hadoop -c "/soft/cassandra/bin/nodetool status"
;;
*)
echo "Usage:$0 {start|stop|restart|status}"
exit 1
esac
执行保存: Esc :wq
[root@hadoop-master /root]# chmod 755 /etc/init.d/cassandra
[root@hadoop-master /root]# chkconfig --add cassandra
[root@hadoop-master /root]# chkconfig cassandra on
其它关联指令:
- 启动:service cassandra start
- 停止:service cassandra stop
- 重启:service cassandra restart
- 查看状态:service cassandra status
- 关闭自启动:chkconfig cassandra off
- 删除自启动:chkconfig --del cassandra
九、偶遇的坑
1. java.lang.RuntimeException: Unable to gossip with any seeds
cassandra.yaml 配置文件调整为seeds中的机器列表信息 和 当前机器的listen_address一致