文档章节

走进cassandra之三 分区器

chenkangyao
 chenkangyao
发布于 2016/07/19 13:30
字数 1158
阅读 11
收藏 0

从这节开始,都是高年级知识了,需要一点分布式的基础知识。

以前的文章说到, james(公司大佬)把任务分给了几拨人来做,那么怎么个分法呢? 什么任务交给什么人呢?
James估计是有自己的一套算法的, 在cassandra里面,这个对应的概念就叫 data partitioning.(数据分区)
数据分区,也是有一套算法的,里面有这3个重要参数:
• A partitioner that determines which node to store the data on.
• The number of copies of data, which is determined by the replica placementstrategy.
• The topology of the cluster, which is the number of nodes, the distributionof the nodes on racks, and the number
of data centers.

第一个参数说的是,你是用的什么分区器,打算怎么分区,分区的意思,就是数据分布,怎么把数据分布到很多很多的节点上。
第二个参数说的是,你的数据,有多少个副本,你是肯定不能只有 一份数据的,否则你这台死掉了,就消失了,必须准备好备胎。
第三个参数说的是,网络拓扑结构,数据中心,机架。你想想,机器总是放在机架上的,机架总是放在机房里的,机房总是放在大楼上的,一个大楼就可以视为一个数据中心,你要是南京,北京,上海,有三个机房,那你就是三个数据中心了。

在cassandra里面,这一堆大量的数据,表现为一个环(ring),为什么是一个环儿呢?
就是一个圆,无头无尾,自称一体,你要是看图的话,书上举的例子,都是画了一个圆,来说明数据咋分布的。就是james和韶涵他们手拉手,组织长了一个环儿,翩翩起舞。

环里的每一个节点,负责一部分数据。(one or more ranges of the data)。
同时,环里的节点,都持有一个令牌(token),这个令牌的作用,就是确定 环里翩翩起舞的韶涵,是真正的韶涵。
拿着令牌,james给你分任务,让你承包哪一块。

对于列族来说,承包给谁,是通过 row key来标示的。(Columnfamily data is partitioned across the nodes based on the row key). 一个节点,负责一小块区域的row key.
上面说了,要搞承包,怎么个包法呢?用什么办法呢?
Cassandra offers the following partitioners:

• RandomPartitioner

• ByteOrderedPartitioner

cassandra提供了2个办法,第一个办法叫RandomPartitioner。
啥意思呢?
掷骰子。

大家不要小瞧骰子,在很多情况下,这都是最公平的一种方式。
为了保证公平,得有一个算法来掷骰子。

The RandomPartition uses consistent hashing to determinewhich node will own a particular row。

这个算法翻译过来叫, 一致性哈希算法。
哈希哈希,嘻嘻哈哈,稀里哗啦,都散架了。

To distribute the data (including replicas) evenly acrossthe nodes, a hashing algorithm creates
an MD5 hash value of the row key.
这个分法,就是强调公平(evenly),各个节点,谁也别有怨言,上天来定,童叟无欺。

公平就是最好吗?
NO.
公平不见得有效率。

所以,我们还第二种算法来分包。
ByteOrderedPartitioner
这个是什么意思呢?
按照byte 的顺序, 来组织分区数据。
这个比刚才掷骰子不一样的地方是,它是有顺序的。
有顺序有什么用呢?
可以举个例子,把这一排人,按照个高个矮 排个队,排好对之后呢,如果你想要找 1.7 -1.8 米的人,就很容易找到了。
在cassandra里对应的例子就是:
Using the ordered partitioner allows range scans over rows.For example, if yourapplication has user names as the row key, you can scan rows
for users whose names fall between Jake and Joe.

你可以很容易找到 名字介于 Jake and Joe之间的人。

如果你有多个数据中心,分发数据就要使用另外一个分区器。
NetworkTopologyStrategy
在现实世界中,多个数据中心一般分布在不同的地理位置,比如说亚洲和美洲。
因此,对于这类情况,要特殊处理一下。
The preferred replication placement strategy for multiple data centerdeployments is the  NetworkTopologyStrategy,which calculates replicaplacement per data center

这个分区策略,是基于数据中心考虑问题,举例来说,你最少要保证,一个数据中心里,得有一个最新的记录的副本。

上面说的,都是如何分发数据的事情。

在现实世界里,每个节点都不是绝对可靠的,说不定会生病,死掉,所以你的数据必须要有备份。

下篇就来说这个事, 副本机制。

© 著作权归作者所有

共有 人打赏支持
chenkangyao
粉丝 5
博文 44
码字总数 75969
作品 0
广州
高级程序员
私信 提问
走进cassandra 之一 CAP和分布式

决定share一下我的cassandra学习成果,写一些博客,跟大家共同分享一下,准备写10篇文章,内容分别涉及 分布式存储概述及CAP, 数据模型, 分区器, 副本机制, 存储机制, 数据读写删, 最终一...

chenkangyao
2016/07/19
21
0
走进cassandra之四 副本机制

如果你要想最大限度保持一个东西不会忘记掉,你最好的办法,不是死记,记好几十遍。 而是要告诉几个人,这样就算你忘记了,别人还记得。 在cassandra里面呢,这个原理可以描述为 Replicatio...

chenkangyao
2016/07/19
13
0
NoSQL数据库 Cassandra(一)

随着互联网技术的发展,对数据存储的要求越来越高,在容量、安全性、备份、高可用性等方面都有很高的需求,很受欢迎的关系型数据库有SQLServer、MySQL、Orcale等,非关系型数据库有key、val...

tianya1993
2017/10/26
0
0
调整Java资源功能详情

调整Java资源 调整Java虚拟机(JVM)可以提高性能减少内存消耗。 本页面的主题: 关于垃圾收集 选择一个Java垃圾收集器 将G1设置为Java垃圾收集器 确定堆大小 Cassandra如何使用内存 - 请先阅...

yuanjian0814的博客
2017/12/18
0
0
【译】Cassandra数据模型

本文是英文贴的翻译,可以直接查看英文原文。 选择正确的数据模型正是使用Cassandra最困难的一部分。如果诸位有相关开发经验,就会发现CQL虽然看起来很熟悉,但是使用起来却完全不同。 本文将...

Landas
2016/12/21
31
0

没有更多内容

加载失败,请刷新页面

加载更多

小白创建一个spring boot项目

进入 https://start.spring.io/

lilugirl
今天
1
0
Alibaba Java诊断利器Arthas实践--使用redefine排查应用奇怪的日志来源

背景 随着应用越来越复杂,依赖越来越多,日志系统越来越混乱,有时会出现一些奇怪的日志,比如: [] [] [] No credential found 那么怎样排查这些奇怪的日志从哪里打印出来的呢?因为搞不清...

hengyunabc
今天
1
0
home hosts

home hosts lwk@qwfys:~$ cat /etc/hosts127.0.0.1 localhost127.0.1.1 qwfys192.168.56.101vm600.qwfys.com39.108.212.91alpha1.ppy.com39.108.117.122alpha2.p......

qwfys
今天
1
0
大数据教程(6.1)hadoop生态圈介绍及就业前景

1. HADOOP背景介绍 1.1、什么是HADOOP 1.HADOOP是apache旗下的一套开源软件平台 2.HADOOP提供的功能:利用服务器集群,根据用户的自定义业务逻辑,对海量数据进行分布式处理 3.HADOOP的核心组...

em_aaron
今天
5
0
hadoop垃圾回收站

在生产生,hdfs回收站必须是开启的,一般设置为7天。 fs.trash.interval 为垃圾回收站保留时间,如果为0则禁用回收站功能。 fs.trash.checkpoint.interval 回收站检查点时间,一般设置为小于...

hnairdb
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部