CASSANDRA - 技术教程文章

Cassandra开发入门文档第三部分(非规范化关系结构、批处理)【代码】

非规范化关系结构第二部分我们讲了复合主键,这可以灵活的解决主从关系,也即是一对多关系,那么多对多关系呢?多对多关系的数据模型应该回答两个问题:我跟着谁?谁跟着我?-- 建表,我们发现这里有个不寻常的事情,表都有2个列,都是主键。2个表,一个出站,一个入站CREATETABLE "user_outbound_follows" ( "follower_username" text, "followed_username" text, PRIMARYKEY ("follower_username", "followed_username") );CREAT...

cassandra-replication_factor 和 consistency level

参考replication_factor 决定了数据会被写到多少个节点。为2表示要写到两个节点。 consistency level决定客户端要等待多少个节点被写成功。为1表示只要第一个节点被写成功,客户就发送下一个写请求。 读操作也有自己的consistency level,决定读操作时的行为。 如果只有一个节点服务器,缺设置 replication_factor为2呢?cassandra只会写一次。参考 http://stackoverflow.com/questions/32808549/cassandra-for-a-single-node-clu...

Cassandra内建的工具nodetool - 监控篇【代码】

Cassandra 常用监控命令 Cassandra 自带了多个功能强大集群或数据管理工具,数量掌握有助于诊断和维护Cassandra集群、快速解决各种问题:nodetoolnodetool是一个命令行的工具集,它可以监控Cassandra和执行例行的数据库操作。作为内建的工具,nodetool一般用于在节点上直接运行。nodetool工具集支持大多数重要的JMX指标和操作,并且包含了一些为管理员准备的命令。相关命令如下:nodetool: 是一个命令行的工具集,它可以监控Cassan...

Cassandra内部架构【图】

Cassandra是一个开源的、分布式、无中心节点、弹性可扩展、高可用、容错、一致性协调、面向列的NoSQL数据库 Cassandra集群的定义Cluster Data center(s) Rack(s) Server(s) Node (more accurately, a vnode)Node(节点):一个运行cassandra的实例Rack(机架):一组nodes的集合DataCenter(数据中心):一组racks的集合Cluster(集群):映射到拥有一个完整令牌圆环所有节点的集合 协调者(协调节点)客户端连接到某一节点发起读写...

cassandra client in Java——cassandra总结(五)【代码】

cassandra client是基于Apache Thrift这个RPC框架来进行客户端和服务器的通信。    首先到$CASSANDRA_HOME\lib目录下导入apache-cassandra-thrift-2.1.11.jar,libthrift-0.9.2.jar这两个包,然后再导入单元测试JUnit包。import java.io.UnsupportedEncodingException; import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Se...

Spark-Cassandra-Connector 插入数据函数saveToCassandra【代码】

在spark-shell中将数据保存到cassandra:var data = normalfill.map(line => line.split("\u0005"))data.map(line => (line(0), line(1), line(2))) ).saveToCassandra("cui", "oper_ios",SomeColumns("user_no", "cust_id", "oper_code","oper_time") ) saveToCassandra方法 当字段类型是counter的时候,默认行为是计数 CREATE TABLE cui.incr( name text, count counter, PRIMARY KEY (name)) scala> var rdd = sc.paralleliz...

Cassandra 技能Get【图】

Cassandra是有FaceBook开发并开源的一个NoSQL分布式存储。目前是Apache基金会下面的一级项目,它的官方网站是http://cassandra.apache.org/。 相对于Memcache和Redis这些NoSQL(not SQL)或者说Key-Value存储,Cassandra与MongoDB、HBase在形态在趋于一致,为NoSQL(Not Only SQL)。这是因为Cassandra相对于简单的Key-Value存储,能够支持比较复杂的嵌套结构,有着Cluster、KeySpaces、Column Family、SuperColumn、Column等概念。...

Cassandra简介【代码】【图】

技术选型  技术选型常常是一个非常严谨的过程。由于一个项目通常是由数十位甚至上百位开发人员协同开发的,因此一个精准的技术选型常常能够大幅提高整个项目的开发效率。在尝试为某一类需求设计解决方案时,我们常常会有很多种可以选择的技术。为了能够精准地选择一个适合于这些需求的技术,我们就需要考虑一系列有关学习曲线,开发,维护等众多方面的因素。这些因素主要包括:该技术所提供的功能是否能够完整地解决问题。该技术...

Cassandra 学习七 cassandra研究【代码】

https://www.cnblogs.com/bonelee/p/6306079.htmlAllow filtering: 如果你的查询条件里,有一个是根据索引查询,那其它非索引非主键字段,可以通过加一个ALLOW FILTERING来过滤实现;  虽然查询非索引非主键字段,但是只要加了ALLOW FILTERING条件,它会先根据索引查出来的值,再对结果进行过滤; (如果不加ALLOW FILTERING,而又有非索引列,这样是不允许的; 加上ALLOW FILTERING,相当于在结果后再进行过滤。) 二级...

Cassandra 配制 cassandra.yaml【代码】

一、设置用户名和密码修改cassandra.yaml配置文件把默认的authenticator: AllowAllAuthenticator改成authenticator: PasswordAuthenticator 如果你需要登陆进去以后查看修改权限之类,需要修改authorizer: AllowAllAuthorizer为authorizer: CassandraAuthorizer 启动cassandracql连接,cassandra是默认账户和密码./cqlsh -u cassandra -p cassandra ip port 创建用户CREATE USER myusername WITH PASSWORD ‘mypassword‘ SUPERUSE...

Cassandra数据库Java訪问【代码】

针对的时Cassandra 2.0 数据库Java本地client訪问Cassandra,首先建立Javaproject,使用Maven进行管理。引入依赖:<dependency><groupId>com.datastax.cassandra</groupId><artifactId>cassandra-driver-core</artifactId><version>2.1.0</version> </dependency> 1. 类似Elasticsearch的方式,如今client构建一个集群对象: Cluster cluster = Cluster.builder().addContactPoint("your ip").build();Metadata metadata = cluster...

Cassandra数据分布之5分区器【图】

分区器决定了数据在集群中节点的分布。分区器的功能是通过为每一行数据的分区键(partion key)分配一个令牌(token),然后通过这个令牌(token)将数据保存在cassandra集群中。 Cassandra提供了如下如下4种分区器。Cassandra中的实现如下图:ByteOrderedPartitioner:有序分区器,它将键值数据看做是裸字节。LocalPartitioner:对分区键未做任何处理的分区器。Murmur3Partitioner:基于MurmurHash哈希算法,能将数据均匀地分布在...

Cassandra如何保证数据最终一致性

Cassandra如何保证数据最终一致性:1、逆熵机制(Anti-Entropy)使用默克尔树(Merkle Tree)来确认多个副本数据一致,对于不一致数据,根据时间戳来获取最新数据。2、读修复机制(Read Repair)当Cassandra读数据时,需要根据读一致级别设定读取N个节点的副本数据,并按照时间戳返回最新数据给用户后,会对所有副本数据进行检测和修复,确保所有副本数据一致。3、提示移交机制(Hinted Handoff)当Cassandra写数据时,需要根据写一致性级别...

NoSql之旅--Cassandra安装篇(一)【代码】【图】

有点迷茫了,头脑中只想起来一句话,"那就去学习吧".我负责的项目中有一部分用到了Cassandra,当时也看过点,但是并没有太深入的了解,既然"学习劲头"正足,那便好好研究一下吧..至于Nosql和关系数据库的优劣点这里先不谈,直接进入正题,先来完成Cassandra的安装.官网:http://cassandra.apache.org/ 下载最新稳定版2.1.7,解压我这里放到D盘.配置环境变量:以win8为例,鼠标右键点击桌面上的计算机图片,选择属性,如下图所示创建Cassandra的环...

Cassandra使用pycassa批量倒入数据

本周接手了一个Cassandra系统的维护工作,有一项是需要将应用方的数据导入我们维护的Cassandra集群,并且为应用方提供HTTP的方式访问服务。这是我第一次接触KV系统,原来只是走马观花似的看过KV啊,NoSQL啊。但是实际上没有实际的使用经验。经过两天的学习和接手,终于搞明白了在生产环境中的使用方式。在此简要的笔记一下。本文主要包括的内容有:Cassandra的简介,Cassandra的相关CLICassandra的Python API,并且给出一个批量导入...

Python操作Cassandra数据库【代码】

目录前言安装CassandraPython操作Cassandra前言操作系统win10时间2019年02月Python版本:Python 3.5.2Cassandra版本:cassandra-3.11.3参考网址1参考网址2安装Cassandra安装Cassandra数据库官网下载Cassandra压缩包解压,并配置环境变量: |操作|变量名|变量值| |:---:|:---|:---| |新建|CASSANDRA_HOME|解压路径| |增加|PATH|解压路径\bin;|安装Python的Cassandra依赖包pip install cassandra测试C:\Users\wahaha>cassandraPython...

关于Hadoop和Cassandra性能问题的讨论

本文由 ImportNew - 唐尤华 翻译自 apmblog.compuware.com。如需转载本文,请先参见文章末尾处的转载要求。 最近几周里,我和同事参加了在旧金山港湾区的Hadoop和Cassandra高峰论坛。如此密集地与众多有经验的大数据专家进行探讨是一件非常享受的事情。感谢本文由 ImportNew - 唐尤华 翻译自 apmblog.compuware.com。如需转载本文,请先参见文章末尾处的转载要求。最近几周里,我和同事参加了在旧金山港湾区的Hadoop和Cassandra高峰...

Cassandra或Hadoop Hive或MYSQL?

我正在开发网络爬虫,哪个对存储数据有好处?卡桑德拉或者Hadoop的蜂巢或MySQL?为什么?我有过去在我的MySQL数据库6个月的数据1TB,我需要索引他们,我需要得到了把我的搜索尽快,并且我认为,它会存储更多数据,例如10个Peta Byes,因为我的抓取工具正在快速运行,我需要快速进行读/写操作,我需要将其集成到我的PHP应用程序中解决方法:这取决于您的要求的详细信息,但是我认为在您的情况下,HBase将是最佳选择.充分证明了将HBase用作Web爬网...

java-为IntelliJ Cassandra数据库查看器设置时区

我正在编写一些与Cassandra交互的Java代码.我想知道是否有任何方法可以调整时区以显示(而不是存储)TIMESTAMP类型的列.据我了解,Cassandra的TIMESTAMP类型实质上是从纪元[2]开始的毫秒数,因此,该类型没有时区的概念,并且查看器显示的时间与UTC相同. 这是我尝试过的: 根据JetBrains documentation,有一个JVM选项user.timezone进行这种调整.因此,我已将Cassandra驱动程序的JVM选项设置为-Duser.timezone = Asia / Seoul,但它似乎没有...

NoSQL数据库 Cassandra(一)

随着互联网技术的发展,对数据存储的要求越来越高,在容量、安全性、备份、高可用性等方面都有很高的需求,很受欢迎的关系型数据库有SQLServer、MySQL、Orcale等,非关系型数据库有key、value型的Redis,Memcached,文档型数据库有MongoDB、CouchDB,还有列簇类型的Hbase、Cassandra。种类繁多,要学习的知识点越来越多,我们在技术选型时,必须遵循“没有最好的技术,只有最适合的技术”。因为业务的需要有的折腾新的技术,接下来将...

java-使用IN子句过滤Spark Cassandra连接器【代码】

我在使用针对Java的Spark cassandra连接器筛选时遇到了一些问题. Cassandra允许使用IN子句按分区键的最后一列进行过滤.例如create table cf_text (a varchar,b varchar,c varchar, primary key((a,b),c))Query : select * from cf_text where a ='asdf' and b in ('af','sd');sc.cassandraTable("test", "cf_text").where("a = ?", "af").toArray.foreach(println)我如何指定在spark的CQL查询中使用的IN子句?如何也可以指定范围查...

Python Cassandra 1.2自动创建表【代码】

介绍 我正在使用Cassandra 1.2集群(7个节点,复制因子3)在Python中编写应用程序,并且我正在使用cql库(CQL 3.0)从Python访问Cassandra. 问题 应用程序的构建方式是,当尝试针对未配置的列族运行cql语句时,它会自动创建表并重试cql语句.例如,如果我尝试运行此:SELECT * FROM table1并且table1不存在,那么应用程序将为table1运行相应的CREATE TABLE,并将重试前一个select.问题是,在创建表之后,SELECT(重试)失败并出现此错误:Request d...

数据源管理 | 分布式NoSQL系统,Cassandra集群管理【代码】【图】

本文源码:GitHub·点这里 || GitEE·点这里 一、Cassandra简介 1、基础描述 Cassandra是一套开源分布式NoSQL数据库系统。它最初由Facebook开发,用于储存收件箱等简单格式数据,此后,由于Cassandra良好的可扩展性,逐渐发展成为了一种流行的分布式结构化数据存储方案。 2、特点分析 弹性可扩展性 Cassandra是高度可扩展的;它允许添加更多的硬件以适应更多的客户和更多的数据根据要求,可以根据业务的数据流量轻松扩展集群规模。 架...

python – Cassandra缓冲了数百万列的读取【代码】

我有一个cassandra集群,行数很少(<100).每行有大约200万列.我需要得到一个完整的行(所有200万列),但是在我完成阅读之前,事情开始失败.我想做一些缓冲读取.理想情况下,我想使用Pycassa做这样的事情(不,这不是调用get的正确方法,它只是让你可以得到这个想法): results = {} start = 0 while True:# Fetch blocks of size 500buffer = column_family.get(key, column_offset=start, column_count=500)if len(buffer) == 0:break# Mer...

java – 听听Cassandra数据存储区的变化?

我想知道是否有可能为Cassandra添加一个监听器来获取表和更改条目的主键?拥有这样一个机制会很棒. 检查Cassandra文档我只发现将StateListener添加到Cluster实例. 有没有人知道如何在不破解Cassandras数据存储的情况下执行此操作或封装驱动程序并自行执行某些操作?解决方法:看看这个未来的jira – https://issues.apache.org/jira/browse/CASSANDRA-8844 如果你喜欢它投票支持:) CDC“In databases, change data capture (CDC) i...

如何使用Python阻止进出慢速Cassandra节点的流量

介绍: 我有一个使用Cassandra 1.2.4集群且复制因子为3的Python应用程序,所有读写操作的一致性级别为2.要访问该集群,请使用CQL库. Cassandra集群在机架空间的虚拟服务器上运行. 问题: 有时,其中一个节点的速度可能会比平时慢,在这种情况下,我希望能够检测到这种情况并阻止向慢速节点发出请求,并尽可能停止使用它(从理论上讲,这应该是可能的,因为每个请求的RF为3,CL为2).到目前为止,我想出的解决方案涉及对每个节点的请求进行计时,...

java-重新启动cassandra时,应用程序的准备好的语句会发生什么?

让我们在生产中使用一个Java ee应用程序,该应用程序使用准备好的语句.假设它在初始化会话bean时准备了必需的语句. 在cassandra中,每个准备好的语句都有一个ID.如果现在,如果重新启动cassandra,是否还需要重新启动java ee应用程序?解决方法:几乎所有Cassandra客户端都应支持这种情况,而不必重新启动(据我所知,所有datastax驱动程序都可以这样做).例如,在Java驱动程序中,当节点关闭并再次出现时,将节点标记为可用时要做的第一件事就...

php – UUID cassandra排序?【代码】

假设我有一个用户列系列,为特定客户端预设了唯一的键名<?php uniqid ("serverA");//generate something like; serverA4b3403665fea6 ?>我可以通过二级索引等选择它们:(生日例子来自phpcassa)$column_family = new ColumnFamily($conn, 'Indexed1'); $index_exp = CassandraUtil::create_index_expression('birthdate', 1984); $index_clause = CassandraUtil::create_index_clause(array($index_exp)); $rows = $column_family->g...

Cassandra与C#

使用asp.net csharp查询cassandra列系列时出现以下错误.我的卡桑德拉版本是1.2.1An unhandled exception of type ‘Cassandra.ProtocolErrorException’occurred in Cassandra.dll Additional information: Unknown code 10 for a consistency level请提出解决方案.解决方法:我认为您在创建集群实例时需要将协议版本明确指定为1. C#驱动程序的v3很新,而cassandra服务器的v1.2.1很旧.请查看此官方文档以了解详细信息:http://docs.d...

java – Cassandra Pojo Sink Flink中的动态表名【代码】

我是Apache Flink的新手.我正在使用Pojo Sink将数据加载到Cassandra中.现在,我在@Table注释的帮助下指定表和键空间名称.现在,我想在运行时动态传递表名和键空间名,以便我可以将数据加载到用户指定的表中.有没有办法实现这个目标?解决方法:@Table是一个CQL注释,用于定义此类实体映射到的表. AFAIK,目前无法在运行时将其动态映射到任何表,因为如果未指定名称,它将推断出类名,即@Table public class MyTable {...}推断表’mytable’@...