文档章节

SolrCloud5.0路由 Collection建与数据迁移

zcl111
 zcl111
发布于 2016/07/14 15:38
字数 1042
阅读 15
收藏 0
点赞 0
评论 0

SolrCloud的设计是为了提供高可用、容错,在分布式环境中进行内容索引和查询请求。

SolrCloud 5.0,对自带的SolrCloud的启动脚本进行了改进,启动SolrCloud变的异常简单,执行

view source print ? 1. $ bin/solr –e cloud 根据提示输入一些参数,即可启动完成SolrCloud,部署启动完成,如下图

SolrCloud相关概念

SolrCloud中有四个关键名词:core、collection、shard、node。

core:在Solr单机环境中,core本质上就是单个index。若需有多个index,那必须创建多个core。在SolrCloud环境中,单个index可以横跨多个Solr实例,这意味着单个index是由不同机器上的多个cores组成。

collection:由core组成的逻辑index叫做collection,一个collection是跨越多个cores的index,这使index可扩展并冗余备份。

shard:在SolrCloud中可以有多个collections。Collections可被分片,每个分片可有多个副本(Replica),同一副本下的相同分片称为shards。每个shards下的有一个分片为leader,该leader通过选举策略产生。

node:SolrCloud中,node是运行Solr的Java虚拟机实例,也就是Server(例如Tomcat、Jetty)。 理解core和collection的区别非常重要。在传统的单node solr中,core和collection的概念等同,都代表一个逻辑index。在SolrCloud中,多个nodes下的cores形成一个collection。 SolrCloud路由

SolrCloud中,提供了两种路由算法: compositeIdimplicit 在创建Collection时,需要通过router.name指定路由策略,默认为compositeId路由。

compositeId

该路由为一致性哈希路由,shards的哈希范围从80000000~7fffffff。初始创建collection是必须指定numShards,compositeId路由算法根据numShards的个数,计算出每个shard的哈希范围,因此路由策略不可以扩展shard。 implicit

该路由方式指定索引具体落在路由到哪个Shard,这与compositeId路由方式索引可均匀分布在每个shard上不同。同时只有在implicit路由策略下才可创建shard。

利用solrJ新建索引时,需要在代码中指定索引具体落在哪个shard上,添加代码:

view source print ? 1. doc.addField("route", "shard_X"); 同时在schema.xml添加字段

view source print ? 1. <field name="_route_" type="string"/> 利用URL创建implicit路由方式collection:

http://10.21.17.200:9580/solr-5.0.0-web/admin/collections?action=CREATE&name=testimplicit&router.name=implicit&shards=shard1,shard2,shard3 SolrRouter源码

在Solr源码中,可以看到,Solr路由的基类为DocRouter抽象类,HashBasedRouter和ImplicitDouter继承自DocRouter,同时CompositeIdRouter又继承HashBasedRouter抽象类,通过一个工具Hash类实现Document的路由策略。

创建Collection

Solr创建Collection的两种方式:

通过前台界面Add Core创建collection

由于在tomcat,setenv.sh,设置-DnumShards=7,所以该collection有7个shards。 需要注意的是:使用compositeId路由创建collection,指定numShards后,不可扩展Shard,即使勉强增加Shard,新建索引也不会落在该Shard上。查看clusterstate.json,可看到新建shard的"range":null

URL创建collection 通过URL创建collection需要满足条件:num of (shards + replications)< num of live nodes

测试环境中3台solr机器,创建collection URL为:

http://10.21.17.200:9580/solr-4.10.0/admin/collections?action=CREATE&name=collection1&router.name=compositeId&numShards=5&replicationFactor=1

执行结果报错

<str name="Operation createcollection caused exception:">

org.apache.solr.common.SolrException:org.apache.solr.common.SolrException:Cannot create collection collection1. Value of maxShardsPerNode is 1, and thenumber of live nodes is 3. This allows a maximum of 3 to be created. Value ofnumShards is 5 and value of replicationFactor is 1. This requires 5 shards tobe created (higher than the allowed number)

</str> 报错原因不满足 5 + 1 < 3 数据迁移

在某些场景中,需要对SolrCloud进行扩容或数据迁移。

根据以上讨论的两种路由算法,implicit实现该需求比较简单,只要创建Shard即可,新建索引时,将索引建到新建Shard上,查询操作,指定collection名称,得到的仍是整个集群返回的结果。

compositeId路由实现上述需求稍微麻烦一下,通过分裂(SPLITSHARD)操作实现。如下图,对Shard1进行分裂,分裂URL为:

http://10.21.17.200:9580/solr-4.10.0-web/admin/collections?action=SPLITSHARD&collection=log4j201503&shard=shard1

此时Shard1的数据会平均分布到shard1_0和shard1_1上,在利用DELETESHARD API删除Shard1,即可保证数据不冗余。

本文转载自:http://www.it165.net/pro/html/201506/45483.html

共有 人打赏支持
zcl111
粉丝 3
博文 92
码字总数 11552
作品 0
六安
程序员
SolrCloud集群Collection进行手动二次Sharding--solr分片相关

SolrCloud集群Collection进行手动二次Sharding http://blog.csdn.net/shirdrn/article/details/9770829 一致性hash和solr千万级数据分布式搜索引擎中的应用 http://www.lanceyan.com/tech/a......

毛朱 ⋅ 2015/08/30 ⋅ 0

Mongos与集群均衡

版权声明:本文由孔德雨原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/190 来源:腾云阁 https://www.qcloud.com/community mongodb 可以以单复制集的...

偶素浅小浅 ⋅ 2016/11/10 ⋅ 0

Laravel Artisan

Laravel Artisan 感谢以下网站提供的帮助 Laravel China https://laravel.com/ Laravel 5.5 中文文档 Laravel 5.4 文档 Laravel 5.1 LTS 速查表 Laravel 5.5 中文文档 Google 翻译 版本:5.5......

xiaobing1024 ⋅ 01/07 ⋅ 0

Laravel5.2之Demo1——URL生成和存储

引言: 本文基于框架做的一个URL生成和存储demo,主要目的是学习使用框架。内容基于英文书籍第一章节,似乎没有中文版。书籍基于的,学习时使用框架开发。 学习主题 该demo主要涉及如下几个知...

botkenni ⋅ 2016/10/10 ⋅ 0

Tair学习小记

Tair架构 ![Tair架构][1] 本文只关注Client,ConfigerServer,DataServer三者之间的交互,不关注DataServer的存储引擎 Client,ConfigServer,DataServer三者之间的交互 情况1:Client在访问datas...

felixlv ⋅ 2014/03/02 ⋅ 0

mongo分片丢失分片索引

mongo分片备份后删除分片并重建分片索引,结果常遇到以下情况: shard01上的集合创建了分片索引,而shard02上却没有创建分片索引,导致chunk只分布在shard01分片上。 具体报错信息: "errms...

archivelog ⋅ 2016/10/18 ⋅ 0

MongoDB水平分片集群学习笔记

为何需要水平分片 1 减少单机请求数,将单机负载,提高总负载 2 减少单机的存储空间,提高总存空间。 下图一目了然: mongodb sharding 服务器架构 简单注解: 1 mongos 路由进程, 应用程序...

costaxu ⋅ 2014/02/01 ⋅ 6

MongoDB集群部署

数据副本 MongoDB中的一组副本是一群mongod进程,这些进程维护同样的数据集。副本集提供了冗余和高可用性,是生产环境部署的基础。 数据冗余和可用性 通过在不同的服务器上存储相同的数据,副...

黄索远 ⋅ 2017/10/17 ⋅ 0

solrcloud document路由

solrcloud的官方文档有对路由的简短介绍,但是不够详细和深入。solrcloud有两种路由策略,一种是implicit(个人称之为手动路由) ,一种是compositeId(个人称之为自动路由);在创建collect...

将将将 ⋅ 2016/07/12 ⋅ 3

胶囊网络(Capsule Network)在文本分类中的探索

文本建模方法大致可以分为两类:(1)忽略词序、对文本进行浅层语义建模(代表模型包括 LDA,EarthMover’s distance等); (2)考虑词序、对文本进行深层语义建模(深度学习算法,代表模型包...

技术小能手 ⋅ 04/08 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

OSChina 周六乱弹 —— 假如你被熊困到树上

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @小小编辑:推荐歌曲《如果写不出好的和弦就该在洒满阳光的钢琴前一起吃布丁》 《如果写不出好的和弦就该在洒满阳光的钢琴前一起吃布丁》- 谢...

小小编辑 ⋅ 19分钟前 ⋅ 2

vbs 取文件大小 字节

dim namedim fs, s'name = Inputbox("姓名")'msgbox(name)set fs = wscript.createobject("scripting.filesystemobject") 'fs为FSO实例if (fs.folderexists("c:\temp"))......

vga ⋅ 今天 ⋅ 1

高并发之Nginx的限流

首先Nginx的版本号有要求,最低为1.11.5 如果低于这个版本,在Nginx的配置中 upstream web_app { server 到达Ip1:端口 max_conns=10; server 到达Ip2:端口 max_conns=10; } server { listen ...

算法之名 ⋅ 今天 ⋅ 0

Spring | IOC AOP 注解 简单使用

写在前面的话 很久没更新笔记了,有人会抱怨:小冯啊,你是不是在偷懒啊,没有学习了。老哥,真的冤枉:我觉得我自己很菜,还在努力学习呢,正在学习Vue.js做管理系统呢。即便这样,我还是不...

Wenyi_Feng ⋅ 今天 ⋅ 0

博客迁移到 https://www.jianshu.com/u/aa501451a235

博客迁移到 https://www.jianshu.com/u/aa501451a235 本博客不再更新

为为02 ⋅ 今天 ⋅ 0

win10怎么彻底关闭自动更新

win10自带的更新每天都很多,每一次下载都要占用大量网络,而且安装要等得时间也蛮久的。 工具/原料 Win10 方法/步骤 单击左下角开始菜单点击设置图标进入设置界面 在设置窗口中输入“服务”...

阿K1225 ⋅ 今天 ⋅ 0

Elasticsearch 6.3.0 SQL功能使用案例分享

The best elasticsearch highlevel java rest api-----bboss Elasticsearch 6.3.0 官方新推出的SQL检索插件非常不错,本文一个实际案例来介绍其使用方法。 1.代码中的sql检索 @Testpu...

bboss ⋅ 今天 ⋅ 0

informix数据库在linux中的安装以及用java/c/c++访问

一、安装前准备 安装JDK(略) 到IBM官网上下载informix软件:iif.12.10.FC9DE.linux-x86_64.tar放在某个大家都可以访问的目录比如:/mypkg,并解压到该目录下。 我也放到了百度云和天翼云上...

wangxuwei ⋅ 今天 ⋅ 0

PHP语言系统ZBLOG或许无法重现月光博客的闪耀历史[图]

最近在写博客,希望通过自己努力打造一个优秀的教育类主题博客,名动江湖,但是问题来了,现在写博客还有前途吗?面对强大的自媒体站点围剿,还有信心和可能型吗? 至于程序部分,我选择了P...

原创小博客 ⋅ 今天 ⋅ 0

IntelliJ IDEA 2018.1新特性

工欲善其事必先利其器,如果有一款IDE可以让你更高效地专注于开发以及源码阅读,为什么不试一试? 本文转载自:netty技术内幕 3月27日,jetbrains正式发布期待已久的IntelliJ IDEA 2018.1,再...

Romane ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部