SolrCloud 5.5集群如何部署.doc_第1页
SolrCloud 5.5集群如何部署.doc_第2页
SolrCloud 5.5集群如何部署.doc_第3页
SolrCloud 5.5集群如何部署.doc_第4页
SolrCloud 5.5集群如何部署.doc_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

SolrCloud5.5 集群如何部署目录SolrCloud5.5 集群如何部署11.SolrCloud基本概念21.1 SolrCloud相关概念21.2 SolrCloud路由22.Solr5.x和以前版本的区别33.部署流程【失败了】33.1启动ZK集群33.2 启动Solr33.3 创建Collection43.4 使用含DIH配置的Collection53.5 验证54.使用方法74.1 向任意一台服务器发送请求74.2 访问SolrCloud的过程84.3 发送http请求的方式84.4 客户端API查询方式84.5 SolrCloud无法使用DIH和MySQL集成84.6 SolrCloud提供的URl命令104.7 SolrCloud提供Client API114.8 SolrJ-5.4.0 客户端库114.8.1 SolrJ连接SolrCloud进行查询124.8.2 SolrJ连接SolrCloud创建索引145.异常155.1 This IndexSchema is not mutable155.2 PeerSync: core=example_shard3_replica2 url=29:8983/solr ERROR, update log not in ACTIVE or REPLAY state. FSUpdateLogstate=BUFFERING, tlog=null165.3 配置文件缺失admin-extra.menu-bottom.html、admin-extra.menu-top.html、admin-extra.html165.4 bad request166.单机SolrCloud部署流程【成功了】176.1环境176.2配置文件176.3 运行命令176.4 验证206.5 重启服务227.多机SolrCloud部署流程成功227.1 环境227.2 配置文件237.2 jar包236.3 启动ZK集群236.4 运行命令231. SolrCloud基本概念摘自:/pro/html/201506/45483.html1.1 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。1.2 SolrCloud路由SolrCloud中,提供了两种路由算法:compositeIdimplicit在创建Collection时,需要通过指定路由策略,默认为compositeId路由。compositeId该路由为一致性哈希路由,shards的哈希范围从800000007fffffff。初始创建collection是必须指定numShards,compositeId路由算法根据numShards的个数,计算出每个shard的哈希范围,因此路由策略不可以扩展shard。implicit该路由方式指定索引具体落在路由到哪个Shard,这与compositeId路由方式索引可均匀分布在每个shard上不同。同时只有在implicit路由策略下才可2. Solr5.x和以前版本的区别摘自:/articles/aiYRJjvsolr5发布有一段时间了,5系列跟4的最大区别是5被发布成一个独立的应用,而不再需要Tomcat等容器,在其内部集成了一个jetty容器,现在它可以通过bin目录的脚本直接启动。solr5的应用方式有两种:独立模式(Standalone)和云模式(SolrCloud)。solr5的启动方式有两种,相应地其对索引的管理也有两种方式,在独立模式以是以core来管理,在云模式下是collection来管理。3. 部署流程【失败了】3.1 启动ZK集群3.2 启动Solr摘自:/link?url=wRfVyDLuS15uoAruz9-HDgQ3w5MqJMCD52AYKaPWdNDHg_WJ_ciboXyfsedn6SrqERuy_dg4gstFYR8vj07dd_TkS6ais03Dsmqq-6_M8NW执行命令:rootnode1 solr# ./bin/solr start -c -z node1:2181,node2:2181,node3:2181rootnode2 solr# ./bin/solr start -c -z node1:2181,node2:2181,node3:2181rootnode1 solr# ./bin/solr start -c -z node1:2181,node2:2181,node3:21813.3 创建Collection rootnode1 solr# ./bin/solr create_collection -c example -d example/example-DIH/solr/solr/conf/ -shards 3 -replicationFactor 2如果出现如下错误:请参考:/confluence/display/solr/Using+ZooKeeper+to+Manage+Configuration+Files,在node1执行如下命令:为gettingstarted提交缺失的配置文件。./server/scripts/cloud-scripts/zkcli.sh -cmd upconfig -confdir ./server/solr/configsets/data_driven_schema_configs/conf -confname myconf -z node1:2181,node2:2181,node3:2181./server/scripts/cloud-scripts/zkcli.sh -cmd linkconfig -collection gettingstarted -confname myconf -z node1:2181,node2:2181,node3:2181再次创建collection命令参数说明:-c : collection名称-d : 配置文件的路径,可以使用上面提供的实例配置-n : 配置名称可以和collection名称不同,默认这个参数不填的话,会使用collection名称作为config名称-shards : 创建的shard个数,建议和集群节点数量一致。-replicationFactor : 每个shard的副本数,综合考虑为了保证集群的稳定性,建议配置为 最少2个,最多集群节点数量/shard数量 * 23.4 使用含DIH配置的Collectionrootnode3 solr# ./bin/solr create_collection -c example3 -d ./server/solr/configsets/fj_collection/conf2/ -shards 3 -replicationFactor 2启动样例后创建collectionrootnode3 solr# ./bin/solr create_collection -c example -d ./server/solr/configsets/fj_collection/conf/ -shards 2 -replicationFactor 2./bin/solr create_collection -c example -d ./server/solr/configsets/fj_collection/conf/ -shards 2 -replicationFactor 2错误:ERROR: Failed to create collection example due to: org.apache.solr.client.solrj.impl.HttpSolrClient$RemoteSolrException:Error from server at 29:7574/solr: Error CREATEing SolrCore example_shard2_replica1: Unable to create core example_shard2_replica1 Caused by: Cant find resource lang/stopwords_ar.txt in classpath or /configs/example, cwd=/usr/local/src/solr-5.5.0/server3.5 验证查看collection创建结果如下:查看zookeeper中新增记录的example的状态:在三个节点中都新增了配置文件4. 使用方法4.1 向任意一台服务器发送请求http:/node1:8983/solr/example/select?q=*%3A*&wt=json&indent=truehttp:/node2:8983/solr/example/select?q=*%3A*&wt=json&indent=truehttp:/node3:8983/solr/example/select?q=*%3A*&wt=json&indent=true其中:example=Collection名称疑问:集群应该有统一入口地址,不应该区分IP地址。4.2 访问SolrCloud的过程在SolrCloud模式下,同一个集群里所有Core的配置都是统一的,Core有leader和replication两种角色,每个core一定属于一个shard,Core在Shard中扮演leader还是replication有Solr使用的Zookeeper自动协调。访问SolrCloud的过程是:Solr Client向Zookeeper咨询Collection的地址,Zookeeper返回存活的节点地址供访问,插入数据的时候有SolrCloud内部协调数据分发(内部使用一致性哈希)。SolrCloud中使用Zookeeper主要实现以下三点功能:(1)集中配置存储以及管理,(2)集群状态改变时进行监控以及通知,(3)shard leader的选举。4.3 发送http请求的方式 4.4 客户端API查询方式摘自:/article/IvMvQv.htm4.5 SolrCloud无法使用DIH和MySQL集成使用福建测试环境下“Solr单实例集成MySQL的配置文件”做模板重新创建新的collection对象example2。福建配置文件上传到node1的目录下/usr/local/src/solr-5.4.0/server/solr/configsets,作为example2的模板如下图:在node1,node2,node3所有节点执行如下操作:(1)将solr-dataimporthandler-5.4.0.jar从solr/dist/文件夹下copy到solr/server/solr-webapp/webapp/WEB-INF/lib当中,此java包是导入数据用的。(2)从mysql官网中下载一个mysql-connector-java-5.1.34.zip压缩包,解压出一个mysql-connector-java-5.1.35-bin.jar包,将它copy到solr/server/lib下。在node1上创建example2:rootnode1 solr# ./bin/solr create_collection -c example2 -d server/solr/configsets/fj_collection/conf/ -shards 3 -replicationFactor 2页面验证:为MySQL数据创建索引solrtest1solrtest2创建索引有问题试验结果不成功,只能查到部分数据。4.6 SolrCloud提供的URl命令摘自:/p/15fprvf.html1. /查看zk里面的有多少个collection2. http:/node1:8983/solr/admin/configs?action=LIST&wt=json 返回:responseHeader:status:0,QTime:45,configSets:example2,collection,example,test,myconf2. /3. curlhttp:/localhost:8983/solr/admin/configs?action=DELETE&name=big_search摘自:/confluence/display/solr/Collections+APIsolrCloud提供了collection管理的url命令。4.7 SolrCloud提供Client APISolr提供了多种Client API,摘自:/confluence/display/solr/Client+APIs有人推荐:spring-data-solr4.8 SolrJ-5.4.0 客户端库摘自:/confluence/display/solr/Using+SolrJmaven配置org.apache.solrsolr-solrjx.y.z在solr安装文件夹中自带了solrj库的包,如下图:4.8.1 SolrJ连接SolrCloud进行查询逻辑:SolrCloud部署三个节点上(node1,node2,node3),SolrJ通过zookeeper集群选举出SolrCloud中的一个leader节点,然后向该leader节点查询关键字。public class SolrCloudTest private CloudSolrClient cloudSolrServer = null;public CloudSolrClient getCloudSolrServer(final String zkHost) cloudSolrServer = new CloudSolrClient(zkHost);return cloudSolrServer;/ 根据关键字查询索引结果public void search(CloudSolrClient solrServer, String String) SolrQuery query = new SolrQuery();query.setQuery(String);try QueryResponse response = solrServer.query(query);SolrDocumentList docs = response.getResults();System.out.println(文档个数: + docs.getNumFound();System.out.println(查询时间: + response.getQTime();for (SolrDocument doc : docs) /* * 每个doc的结构 solrtest1_3 * 李四睡觉 * solrtest1 * 25.09,116.2 * 1528509412933632000 */String id = (String) doc.getFieldValue(id);String detail = (String) doc.getFieldValue(detail);String tabletag = (String) doc.getFieldValue(tabletag);String position = (String) doc.getFieldValue(position);System.out.println(id= + id + , detail= + detail+ , tabletag= + tabletag + , position= + position); catch (SolrServerException e) e.printStackTrace(); catch (Exception e) System.out.println(Unknowned Exception!);e.printStackTrace();/* * param args */public static void main(String args) String zkHost = 00:2181,01:2181,02:2181;final String defaultCollection = example2;final int zkClientTimeout = 20000;final int zkConnectTimeout = 1000;try SolrCloudTest test = new SolrCloudTest();CloudSolrClient cloudSolrServer = test.getCloudSolrServer(zkHost);System.out.println(The Cloud SolrServer Instance has benn created!);cloudSolrServer.setDefaultCollection(defaultCollection);cloudSolrServer.setZkClientTimeout(zkClientTimeout);cloudSolrServer.setZkConnectTimeout(zkConnectTimeout);cloudSolrServer.connect();System.out.println(The cloud Server has been connected !);test.search(cloudSolrServer, *:*);cloudSolrServer.shutdown();System.out.println(测试结束); catch (Exception e) e.printStackTrace();查询结果:文档个数:2查询时间:70id=solrtest1_3, detail=李四睡觉, tabletag=solrtest1, position=25.09,116.2id=solrtest3_4, detail=赵六, tabletag=solrtest3, position=25.1,116.11测试结束4.8.2 SolrJ连接SolrCloud创建索引5. 异常5.1 This IndexSchema is not mutable摘自:/questions/31719955/solr-error-this-indexschema-is-not-mutable在solrConfig.xml中删除如下配置:原因是不允许手动添加!- strings java.lang.Boolean booleans java.util.Date tdates java.lang.Long java.lang.Integer tlongs java.lang.Number tdoubles -5.2 PeerSync: core=example_shard3_replica2 url=29:8983/solr ERROR, update log not in ACTIVE or REPLAY state. FSUpdateLogstate=BUFFERING, tlog=null5.3 配置文件缺失admin-extra.menu-bottom.html、admin-extra.menu-top.html、admin-extra.html解决方法:在conf文件夹中创建以上三个空文件即可,这些文件是Solr admin管理页面需要的。摘自:/questions/26597813/how-can-i-get-rid-of-can-not-find-admin-extra-html-error5.4 bad request6. 单机SolrCloud部署流程【成功了】6.1环境Solr5.4升级到新版本Solr5.5内嵌Zookeeper借助内嵌ZK实现单机上部署多节点SolrCloud。6.2配置文件在configsetsdata_driven_schema_configsconf文件基础上添加DIH的配置。新建文件夹6.3 运行命令注意不需要执行./bin/solr start c,启动SolrCloud就可以直接执行如下步骤。6.4 验证导入:查询:运行日志没有任何错误;6.5 重启服务由于 上面创建的是范例程序,所以启动命令如下: rootnode3 solr-5.5.0# ./bin/solr start -e cloud -noprompt7. 多机SolrCloud部署流程成功7.1 环境版本Solr5.5三节点Solr+三节点Zookeeper,搭建SolrCloud。为了不影响node3上已经成功的单节点SolrCloud,故保留源文件夹/usr/local/src/solr-5.5.0。多节点部署的文件夹使用/usr/local/src/solr-5.5.0-2。必须jdk1.7以上7.2 配置文件在configsetsdata_driven_schema_configsconf文件基础上添加DIH的配置。在如下位置新建文件夹7.2 jar包【1】将solr-dataimporthandler-5.5.0.jar和solr-dataimporthandler-extras-5.5.0.jar从solr/dist/文件夹下copy到solr/server/solr-webapp/webapp/WEB-INF/lib当中,此java包是导入数据用的。【2】从mysql官网中下载一个mysql-connector-

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论