Cassandra在Windows上安装及使用方法
Cassandra目录结构
由于NoSQL中没有像传统数据库那样定义数据的组织方式为关系型的,所以只要内部的数据组织采用了非关系型的方式,就可以称之为NoSQL数据库。
目前,可以将众多的NoSQL数据库按照内部的数据组织形式进行如下分类:
- Key/Value的NoSQL数据库
- 面向文档的NoSQL数据库
- 面向列的NoSQL数据库
- 面向图的NoSQL数据库
不同的数据组织适合于不同的应用场景,后面将进行介绍。
SQL语言和关系型数据库(MySQL、PostgreSQL、Oracle等) 是通用的数据解决方案,占有绝大多数的市场。不过在最近兴起的NoSQL运动中,涌现出一批具备高可用性、支持线性扩展、支持Map/Reduce操作等特性的数据产品,它们具有如下特性:
- 频繁的写入操作、相对较少的读取统计信息的操作(如网站访问计数器),应该使用基于内存的Key/Value(键/值)存储系统(如Redis) 或者是具备本地更新特性的文档存储系统(如MongoDB)。
- 海量数据(如数据仓库中需要分析的数据) 适合存储在一个结构松散、分布式的文件存储系统中,如Hadoop。
- 存储二进制文件(如mp3或者pdf文档) 并且能够直接为用户的浏览器提供下载功能,可以使用AmazonS3。
- 临时性的数据(如网站的session、缓存HTML页面信息等) 适合存储在Memcache中。
- 如果希望数据具备高可用性,并且能够将数据丢失的风险降到最低,同时整个系统具备线性扩展的能力,可以考虑使用Cassandra和HBase。
4. Cassandra单节点安装
首先确保安装了JDK。
然后,修改配置文件,cassandra-0.7.6-2的conf下有以下几个配置文件:
(1) access.properties:设置每个数据库或者表的访问权限
(2) cassandra.yaml:主配置文件,包括日志路径,数据存放路径,各种参数配置等
(3) cassandra-topology.properties:配置网络的拓扑结构
(4) log4j-server.properties:log4j的配置选项
(5) passwd.properties:配置用户密码,与access.properties配合使用
对于简单的使用,只需配置cassandra.yaml文件:
(1) 集群名称cluster_name:同一个集群中的集群名称应该一样。
(2) 数据存放路径data_file_directories:可以根据情况配置一个有写权限的路径
(3) commit log路径commitlog_directory:同上
(4) saved cache路径saved_caches_directory:同上
(5) 日志文件路径log4j.appender.R.File:同上(这个选项在log4j-server.properties文件中)
此外,还需要修改服务监听的地址和thrift访问地址,即ListenAddress和ThriftAddress,配置文件默认监听的都是localhost:
1
2
3
4
5
6
7
|
<!-- Cassandra节点之间通信的监听地址,这里设置所在节点的ip--> <ListenAddress>100.200.3.1</ListenAddress> <!-- 这个是Thrift监听的地址,建议设置为0.0.0.0 --> <ThriftAddress>0.0.0.0</ThriftAddress> |
经过上面的配置就可以启动节点了:
进入bin目录,直接执行:./cassandra
5. Cassandra多个节点安装
首先,在各节点上,按照第4节方法配制各自对应文件。
然后,配制seeds。Cassandra没有传统集群的中心节点,各个节点地位都是平等的,通过Gossip协议维持集群中的节点信息。为了使集群中的各节点在启动时能发现其他节点,需要指定种子节点(seeds),各节点都先和种子节点通信,通过种子节点获取其他节点列表,然后和其他节点通信。种子节点可以指定多个,通过在 conf/ cassandra.yaml中的seeds属性配置。
seeds:
- 100.200.3.81
- 100.200.3.78
6. Cassandra附带工具使用方法介绍
bin目录下自带了很多工具,可以帮助用户很方便地进行一些操作。常用的工具有nodetool,cassandra-cli,sstable2json等
(1) nodetool
nodetool是一个cassandra集群管理工具,这里只简单介绍一些简单的命令,详细的命令可以参见工具的帮助信息。
ring命令
ring命令用于查看集群的节点信息,ring来源于consistent hash,在consistent hash中,各个节点组成一个环,通常称为ring。
Info命令
info可以参看某个节点负载,内存使用情况:
cfstats命令
cfstats命令可以查看各个CF的详细统计信息,包括读写次数、响应时间、memtable信息等。
(2) cassandra-cli
cassandra-cli是一个命令行工具,可以用于对数据库进行数据查询和检索。具体可参见这篇文章:
(3) sstable2json
将sstable中的数据转化为json格式,使用方法为:
Usage: sstable2json [-f outfile] <sstable> [-k key [-k key [...]]]
D:\EBOOK\NoSQL\apache-cassandra-2.2.\bin>cassandra
WARNING! Powershell script execution unavailable.
Please use 'powershell Set-ExecutionPolicy Unrestricted'
on this user-account to run cassandra with fully featured
functionality on this platform.
Starting with legacy startup options
Starting Cassandra Server
INFO :: Node configuration:[authenticator=AllowAllAuthenticator; authorizer=AllowAllAuthorizer; auto_bootstrap=true; auto_snapshot=true; batch_size_fail_threshold_in_kb=; batch_size_warn_threshold_in_kb=; batchlog_replay_throttle_in_kb=; broadcast_address=null; broadcast_rpc_address=null; cas_contention_timeout_in_ms=; client_encryption_options=<REDACTED>; cluster_name=Test Cluster; column_index_size_in_kb=; commit
...
...
artition":"NONE"},defaultTimeToLive=0,minIndexInterval=128,maxIndexInterval=2048,speculativeRetry=99.0PERCENTILE,droppedColumns={},triggers=[],isDense=false]
INFO :: Initializing system_auth.role_members
INFO :: Netty using Java NIO event loop
INFO :: Using Netty Version: [netty-buffer=netty-buffer-4.0..Final.208198c, netty-codec=netty-codec-4.0..Final.208198c, netty-codec-http=netty-codec-http-4.0..Final.208198c, netty-codec-socks=netty-codec-socks-4.0..Final.208198c, netty-common=netty-common-4.0..Final.208198c, netty-handler=netty-handler-4.0..Final.208198c, netty-transport=netty-transport-4.0..Final.208198c, netty-transport-rxtx=netty-transport-rxtx-4.0..Final.208198c, netty-transport-sctp=netty-transport-sctp-4.0..Final.208198c, netty-transport-udt=netty-transport-udt-4.0..Final.208198c]
INFO :: Starting listening for CQL clients on localhost/127.0.0.1:...
INFO :: Not starting RPC server as requested. Use JMX (StorageService->startRPCServer()) or nodetool (enablethrift) to start it
INFO :: Created default superuser role 'cassandra'
bin>nodetool -h 127.0.0.1 ring
D:\EBOOK\NoSQL\apache-cassandra-2.2.\bin>nodetool -h 127.0.0.1 ring
Starting NodeTool Datacenter: datacenter1
==========
Address Rack Status State Load Owns Token 127.0.0.1 rack1 Up Normal 97.06 KB 100.00% -
127.0.0.1 rack1 Up Normal 97.06 KB 100.00% -
127.0.0.1 rack1 Up Normal 97.06 KB 100.00% -
127.0.0.1 rack1 Up Normal 97.06 KB 100.00% -
127.0.0.1 rack1 Up Normal 97.06 KB 100.00% -
...
...
127.0.0.1 rack1 Up Normal 97.06 KB 100.00%
127.0.0.1 rack1 Up Normal 97.06 KB 100.00%
127.0.0.1 rack1 Up Normal 97.06 KB 100.00%
127.0.0.1 rack1 Up Normal 97.06 KB 100.00%
127.0.0.1 rack1 Up Normal 97.06 KB 100.00%
127.0.0.1 rack1 Up Normal 97.06 KB 100.00%
127.0.0.1 rack1 Up Normal 97.06 KB 100.00%
127.0.0.1 rack1 Up Normal 97.06 KB 100.00%
127.0.0.1 rack1 Up Normal 97.06 KB 100.00%
127.0.0.1 rack1 Up Normal 97.06 KB 100.00%
127.0.0.1 rack1 Up Normal 97.06 KB 100.00% Warning: "nodetool ring" is used to output all the tokens of a node.
To view status related info of a node use "nodetool status" instead. D:\EBOOK\NoSQL\apache-cassandra-2.2.\bin>
D:\EBOOK\NoSQL\apache-cassandra-2.2.\bin>cqlsh.bat WARNING: console codepage must be set to cp65001 to support utf- encoding on Windows platforms.
If you experience encoding problems, change your console codepage with 'chcp 65001' before starting cqlsh. Connected to Test Cluster at 127.0.0.1:.
[cqlsh 5.0. | Cassandra 2.2. | CQL spec 3.3. | Native protocol v4]
Use HELP for help.
WARNING: pyreadline dependency missing. Install to enable tab completion.
cqlsh>
set的语法大概长的像下面这样: .set Keyspace1.Standard1['geffzhang']['blog'] = 'http://www.dotnetting.cn'
. \ \ \ \ \
. \ \ \_ key \ \_ value
. \ \ \_ column
. \_ keyspace \_ column family
就按照上面的语法来加几个数据进去,然后用get把数据拉出来看看
Cassandra在设计的时候,就是支持Thrift的,这意味着我们可以使用多种语言开发。对于Cassandra的开发本身而言,这是使用Thrift的好处:支持多语言。坏处也是显而易见的:Thrift API功能过于简单,不具备在生产环境使用的条件。
Cassandra 建议用户在它们的程序内用高阶API与Cassandrar进行通信,以C#来说,像是FluentCassandra 或 Aquiles。但是你也可以用官方出的最低阶API - Thrift 来与Cassandra沟通。
Thrift这个是Cassandra自带的最简单的一类API,这个文件在apache-cassandra-0.5.1.中包含了。可以直接使用。我们也可以自己安装一个Thrift,然后通过cassandra.thrift文件自动生成。如果你要使用Cassandra,那么我们必须要了解Thrift API,毕竟所有的其他更加高级的API都是基于这个来包装的。
- 准备运行环境
1.1 cassandra可以安装在windows和linux下,本例子安装在centos6.7的环境下。
1.2 关闭防火墙。或者开放9042(默认的CQL本地服务端口)、9160(默认的Cassandra服务端口)、7000(Cassand集群内节点间通讯端口)、7199端口(Cassandra JMX 监控端口)
关闭防火墙:1 service iptables stop
2 chkconfig iptables off开放端口:
1 vi /etc/sysconfig/iptables
2 -A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT(仿照这个写)
3 /etc/init.d/iptables restart1.3 安装JDK,配置环境变量
下载JDK:yum -y install wget //安装wget插件
wget –P /usr http://download.oracle.com/otn/java/jdk/8u60-b15/jdk-8u60-linux-i586.rpm?AuthParam=1467614887_3fe640855a43a439fb5f5fec1f5045e2
rpm -ivh jdk-8u60-linux-i586.rpm配置环境变量:
1 vi /etc/profile
2 JAVA_HOME=/usr/java/jdk1.8.0_60
3 JRE_HOME=/usr/java/jdk1.8.0_60/jre
4 PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
5 CLASSPATH=:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
6 export JAVA_HOME JRE_HOME PATH CLASSPAH
7 source /etc/profile - 安装
2.1 下载并解压cassandra安装包,本例子用的版本是2.1.14(这个镜像不行的话去官网找别的镜像)1 wget http://mirrors.cnnic.cn/apache/cassandra/2.1.14/apache-cassandra-2.1.14-src.tar.gz
2 tar -zxvf apache-cassandra-2.1.14-bin.tar.gz -C /opt/cassandra2.2 新建cassandra数据存放的文件夹(用安装包的方式就需要这一步)。
1 //可以根据磁盘情况设置这3个文件夹,但是要和cassandra.yaml里的想对应
2 mkdir /var/lib/cassandra/data
3 mkdir /var/lib/cassandra/commitlog
4 mkdir /var/lib/cassandra/saved_caches2.3 打开解压后的/opt/apache-cassandra-2.1.14/cassandra/conf的目录,修改其中的cassandra.yaml中的一些参数
1 cluster_name: 'xxx' //集群名称。同一个集群要使用同一名称
2 data_file_directories:
3 - /var/lib/cassandra/data //数据文件存放路径。打开这个注释,注意不要合并成一行,合并成一行好像会出问题,这里要与前面新建的文件夹对应。
4 commitlog_directory: /var/lib/cassandra/commitlog //操作日志文件存放路径。打开注释,与前面新建的文件夹对应。
5 saved_caches_directory: /var/lib/cassandra/saved_caches //缓存文件存放路径。打开注释,与前面新建的文件夹对应。
6 - seeds: "192.168.x.x" //集群种子节点ip,新加入集群的节点从种子节点中同步数据。可配置多个,中间用逗号隔开。
7 listen_address: 127.0.0.1 //需要监听的IP或主机名。改成本机IP
8 rpc_address: 127.0.0.1 //用于监听客户端连接的地址。建议设置成IP或0.0.0.0。若设置0.0.0.0,则要放开broadcast_rpc_address: 1.2.3.4的注释。2.4 进入到bin目录下
1 ./cassandra
如果提示没有权限什么的
1 ./cassandra -R //用root用户启动
如果没有报什么奇奇怪怪的ERROR然后看到 Node /x.x.x.x state jump to NORMAL,这样cassandra就算安装完成了,也可以在在bin目录下使用./nodetool status 查看集群信息确认一下。
UN 表示的是该服务器的状态,UN是运行中,DN是宕机。
Note: xxxxxxx 这个问题是因为同一个键空间里存在不同复制策略的表,不影响使用,但是最好建表和修改表的时候注意一下。
Cassandra在Windows上安装及使用方法的更多相关文章
- 在 Windows 上安装Rabbit MQ 指南
rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统.他遵循Mozilla Public License开源协议.采用 Erlang 实现的工业级的消息队列(MQ)服务器. Ra ...
- (转)在 Windows 上安装Rabbit MQ 指南
rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统.他遵循Mozilla Public License开源协议.采用 Erlang 实现的工业级的消息队列(MQ)服务器. Ra ...
- Redis简介以及如何在Windows上安装Redis
Redis简介 Redis是一个速度非常快的非关系型内存数据库. Redis提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erla ...
- Windows上安装配置SSH教程(2)——在Windows XP和Windows 10上安装并配置OpenSSH for Windows
知识点汇总:http://www.cnblogs.com/feipeng8848/p/8559803.html ------------------------ 安装方式有3种: (1)Windows ...
- 在 windows 上安装免安装版的mysql
在 windows 上安装免安装版的 1. 下载路径 https://downloads.mysql.com/archives/community/ 2. 解压 假设解压后的路径为:E:\Enviro ...
- Git学习系列之Windows上安装Git详细步骤(图文详解)
前言 最初,Git是用于Linux下的内核代码管理.因为其非常好用,目前,已经被成功移植到Mac和Windows操作系统下. 鉴于大部分使用者使用的是Windows操作系统,故,这里详细讲解Windo ...
- Git学习系列之Windows上安装Git之后的一些配置(图文详解)
不多说,直接上干货! 前面博客 Git学习系列之Windows上安装Git详细步骤(图文详解) 第一次使用Git时,需要对Git进行一些配置,以方便使用Git. 不过,这种配置工作只需要进行一次便可, ...
- 【python安装】Windows上安装和创建python开发环境
1. 在 windows10 上安装python开发环境 Linux和Mac OS都自带python环境,但是Windows没有,所以需要自行安装. 第1步:访问 python官网,下载Windows ...
- 在 Windows 上安装 TensorFlow(转载)
在 Windows 上安装 TensorFlow windows下配置安装Anaconda+tensorflow Spyder——科学的Python开发环境 Windows7 安装TensorFlow ...
随机推荐
- C++ little errors , Big problem
---------------------------------------------------------------------------------------------------- ...
- nginx log记录请求的头信息
记录访问的log,为了在出现特殊情况时,方便检查出现问题的地方.log_format accesslog ‘$remote_addr – $remote_user [$time_local] “$re ...
- MicroSoft Visual C++ 6.0怎么建立C++文件工程?
1.打开VC6.02.选择菜单中的"文件"->"新建",弹出"新建"对话框3.在"新建"对话框中选择四个Sheet ...
- InvokeRequired和Invoke
C#中禁止跨线程直接访问控件,InvokeRequired是为了解决这个问题而产生的,当一个控件的InvokeRequired属性值为真时,说明有一个创建它以外的线程想访问它.此时它将会在内部调用ne ...
- kvo-观察者-iOS
#import <Foundation/Foundation.h> @interface Child : NSObject @property (nonatomic,assign) int ...
- #你好Unity3D#Hierarchy视图监听gameObject点击事件
今天无意间又找到了个好方法 1 2 3 4 5 6 7 8 9 10 [InitializeOnLoadMethod] static void Start () { Selection.s ...
- debug,trace,release项目配置区别
Debug模式是用来调试用的,它生成的执行文件中含有大量调试信息,所以很大: Release模式生成的执行文件消除了这些调试信息,可用来作为成品发布 Debug只在debug状态下会输出,Trace在 ...
- linux终端-console
echo $TERM 在ssh上是xterm 在console上是linux setterm -foreground black -background white -store http://blo ...
- 【转】SVN的UUID错误
操作TortoiseSVN时,报如下错误: Command Update Repository UUID '62b86956-73d9-2945-ba87-0546d71898 ...
- 通过新浪ip地址库获得用户的省份、城市等信息
<script src="http://apps.bdimg.com/libs/jquery/1.11.3/jquery.min.js"></script> ...