部署基于tomcat 8 的solrCloud 5.5集群

来源:互联网 发布:ubuntu用户组权限设置 编辑:程序博客网 时间:2024/06/10 02:20

部署基于tomcat 8 的solrCloud 5.5集群

@(OTHERS)[solr]

  • 部署基于tomcat 8 的solrCloud 55集群
    • 一版本及准备工作
    • 二准备solr相关webapp内容并复制至tomcat
    • 三准备配置文件并上传至zk
      • 注意这里使用了managed-schema而不是schemaxml之后再分析
    • 四准备solr的索引数据目录及配置
    • 五配置tomcat并启动
      • 有个小问题如果上面的URL不加上indexhtml则加载不成功看哪里的设置把默认加载index的配置去掉了这会不会影响索引等下试一下
    • 六添加其它节点
    • 七创建core
    • 八使用API索引与搜索
      • 1索引
      • 2索引
    • 九zk中的内容
    • 十创建新的core

(一)版本及准备工作

1、下载并解压tomcat, solr至目录/home/hadoop/tomcat, /home/hadoop/solr
其中版本为:

solr-5.5.2tomcat-8.5.4

(二)准备solr相关webapp内容,并复制至tomcat

1、将/home/hadoop/solr-5.5.2/server/lib/ext/*中的jar包复制到/home/hadoop/solr-5.5.2/server/solr-webapp/webapp/WEB-INF/lib,主要是slf4j与log4j相关的jar包,tomcat加载solr时要用到这些jar包。

cp /home/hadoop/solr-5.5.2/server/lib/ext/* /home/hadoop/solr-5.5.2/server/solr-webapp/webapp/WEB-INF/lib

2、将上述solr webapp整个目录复制到tomcat/webapps中,并重命名为solr

 cp -r /home/hadoop/solr-5.5.2/server/solr-webapp/webapp /home/hadoop/tomcat-8.5.4/webapps/solr

(三)准备配置文件并上传至zk

1、准备一个collection配置文件
一个collection需要至少schema.xml与solrconfig 2份配置文件,除此以外还有一些stopword,同义词等配置文件。我们使用官方提供的基本配置basic_configs

mkdir /home/hadoop/solr-5.5.2/confcp -r /home/hadoop/solr-5.5.2/server/solr/configsets/basic_configs/conf /home/hadoop/solr-5.5.2/conf/basic_configs

注意这里使用了managed-schema,而不是schema.xml。之后再分析。

2、将配置文件上传至zk

 java -classpath .:/home/hadoop/tomcat-8.5.4/webapps/solr/WEB-INF/lib/* org.apache.solr.cloud.ZkCLI -cmd upconfig -zkhost 10.120.69.101:2181,10.120.69.100:2181,10.120.69.102:2181/solr55 -confdir /home/hadoop/solr-5.5.2/conf/basic_configs -confname basic_configs

然后再到zk中检查配置是否成功上传。

(四)准备solr的索引数据目录及配置

1、创建用于保存索引文件的目录

mkdir /disk1/solr55/data/solr-corechown -R hadoop:hadoop /disk1/solr55

注意这个目录的权限。

2、将solr.xml复制到上述目录

cp /home/hadoop/solr-5.5.2/server/solr/solr.xml /disk1/solr55/data/solr-core/

3、 修改solr.xml,修改hostPort和Tomcat端口一致

<int name="hostPort">8080</int>

(五)配置tomcat并启动

1、在tomca/conf目录下创建Catalina/localhost目录

mkdir -p /home/hadoop/tomcat-8.5.4/conf/Catalina/localhost

2、在上述目录中创建solr.xml,此为Solr/home的配置文件。

<?xml version="1.0" encoding="UTF-8"?> <Context docBase="/home/hadoop/tomcat-8.5.4/webapps/solr" debug="0" crossContext="true">  <Environment name="solr/home" type="java.lang.String" value="/disk1/solr55/data/solr-core/" override="true"/> </Context>

3、修改bin/catalina.sh中的JAVA_OPTS变量,加上zk的配置:

JAVA_OPTS="$JAVA_OPTS -DzkHost=10.120.69.101:2181,10.120.69.100:2181,10.120.69.102:2181/solr55"

4、启动tomcat

bin/startup.sh

注意先为几个脚本加上权限:

chmod +x startup.sh shutdown.sh  catalina.sh

5、验证UI

http://10.120.69.104:8080/solr/index.html

有个小问题:如果上面的URL不加上index.html则加载不成功,看哪里的设置把默认加载index的配置去掉了。这会不会影响索引,等下试一下。

6、建一个测试collection验证功能
因为目前只有一台机器,所以只能建一个shard, 一个副本了。
配置文件使用上面的basic_configs

curl 'http://10.120.69.104:8080/solr/admin/collections?action=CREATE&name=collection_1&numShards=1&replicationFactor=1&collection.configName=basic_configs'

然后在UI上查看是否已经创建成功。

(六)添加其它节点

1、将/home/hadoop/solr-5.5.2、/home/hadoop/tomcat-8.5.4与/disk1/solr55/data/ 三个目录复制到其它机器相同的目录中。

2、启动tomcat

(七)创建core

curl ‘http://10.120.69.104:8080/solr/admin/collections?action=CREATE&name=collection_2&numShards=2&replicationFactor=2&collection.configName=basic_configs’

创建的2个core分别如下图:

(八)使用API索引与搜索

1、索引

public class IndexDemo {    private static final String DEFAULT_COLLECTION = "collection4";    //private static final String SOLR_ZK = "10.120.69.101:2181/solr";    private static final String SOLR_ZK = "10.120.69.101:2181/solr55";    public static void main(String[] args) throws SolrServerException, IOException {        SolrInputDocument doc = new SolrInputDocument();// 实例化索引Doc        doc.addField("id", "index_demo");// 添加主键        //doc.addField("qualifier_col", "valuedemo");// 添加主键        CloudSolrClient client = new CloudSolrClient(SOLR_ZK);// cloud模式        client.setDefaultCollection(DEFAULT_COLLECTION);        client.add(doc);      //client.add("collection1", doc);        client.commit();        client.close();    }}

2、索引

public class QueryDemo {    private static final String DEFAULT_COLLECTION = "collection4";    private static final String SOLR_ZK = "10.120.69.101:2181/solr55";//  private static final String SOLR_ZK = "10.120.69.101:2181/solr";    public static void main(String[] args) throws SolrServerException, IOException {        try (CloudSolrClient client = new CloudSolrClient(SOLR_ZK);) {// cloud模式            //根据id查doc            SolrDocument doc = client.getById(DEFAULT_COLLECTION, "index_demo");            if(null != doc){            for (String field : doc.getFieldNames()) {                System.out.println(field + " : " + doc.getFieldValues(field));            }        }            //根据field查doc            SolrQuery query = new SolrQuery();            //query.setQuery(mQueryString);            query.setRequestHandler("/query");    //          query.set("q", "qualifier_col:valuedemo");//返回index_demo    //          query.set("q", "qualifier_col:valuedemo OR id:index_demo2");//返回index_demo    //          query.set("q", "qualifier_col:valuedemo AND id:index_demo2");//返回空    //          query.set("q", "qualifier_col:valuede*");//返回index_demo            QueryResponse response = client.query(DEFAULT_COLLECTION, query);            for(SolrDocument doc2 :response.getResults()){                System.out.println(doc2.getFieldValue("id"));            }        }    }}

(九)zk中的内容

[zk: 10.120.69.101(CONNECTED) 16] get /solr5/configs             clusterstate.json   aliases.json        live_nodes          overseer            overseer_elect      collections

通过命令上传的配置文件都在configs目录中,collections中是各个collection的信息。
其它目录的详细信息以后再分析。

(十)创建新的core

1、准备配置文件

2、上传至zk

java -classpath .:/home/hadoop/tomcat-8.5.4/webapps/solr/WEB-INF/lib/* org.apache.solr.cloud.ZkCLI -cmd upconfig -zkhost 10.120.69.101:2181,10.120.69.100:2181,10.120.69.102:2181/solr55 -confdir /home/hadoop/solr/myconf/ -confname myconf

3、创建core

curl 'http://10.120.69.104:8080/solr/admin/collections?action=CREATE&name=collection2&numShards=2&replicationFactor=1&collection.configName=myconf'
原创粉丝点击