【误闯大数据】【从安装到入门】Cassandra-单点玩耍篇

1,120 阅读3分钟
作者 日期 天气
元公子 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用户或者您愿意)

创建Linux用户的参考文章

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一致

附录: