solr shard down无法启动

solr 上的一个collection的一个分片处于down的状态,无论如何重启solr都没有任何作用,一直是处于down 的状态。

解决办法:执行splitshard

执行以下链接:

http://serverip:9984/solr/admin/collections?action=SPLITSHARD&shard=shardname&collection=collectionname&wt=xml

刚方法会将原来down的shard,默认分为两个分片即可。

CDH5.13上独立安装Solr7.3.1

CDH5.13默认带的Solr版本号比较低,只有4.10.3。这种低版本无法支持我们的应用需求,所以只能独立安装Solr7.3.1,唯一的缺点就是无法在CDH上面统一管理了。

1、下载Solr的安装包省略,下载后解压Solr安装包。下面的流程默认解压到当前用户根目录,即 ~

2、解压solr7

tar -zxvf solr-7.3.1.tgz

3、创建ZK的solr7 root

cd ~/solr-7.3.1/bin
./solr zk mkroot /solr7 -z 10.127.60.2,10.127.60.3,10.127.60.4:2181
4、查看端口占用情况,避免端口被CDH占用
netstat -nl | grep 9983
或者
sudo netstae -nltp | grep 9983,这样可以拿到正在使用端口的pid
5、执行安装指令。如下指令,在一个物理机上建立两个solr实例。建议将每个实例的数据文件目录放在不同硬盘下。

sudo ./install_solr_service.sh ../../solr-7.3.1.tgz -i /srv/BigData/hadoop/solr1 -d /srv/BigData/hadoop/solr1/solr_data -u solrup -s solr1 -p 9983 -n

sudo ./install_solr_service.sh ../../solr-7.3.1.tgz -i /srv/BigData/hadoop/solr2 -d /srv/BigData/hadoop/solr2/solr_data -u solrup -s solr2 -p 9984 -n

6、修改 /etc/default/solr1.in.sh,改变部分参数。
----HDFS版本
SOLR_JAVA_MEM="-Xms16g -Xmx16g -Dsolr.directoryFactory=HdfsDirectoryFactory -Dsolr.lock.type=hdfs -Dsolr.hdfs.home=hdfs://10.127.60.1:8020/solr7 -XX:MaxDirectMemorySize=20g -Dsolr.autoSoftCommit.maxTime=-1 -Dsolr.autoCommit.maxTime=-1 -XX:+UseLargePages -Dsolr.hdfs.blockcache.slab.count=100"
ZK_HOST="10.127.60.2,10.127.60.3,10.127.60.4/solr7"

---本地
SOLR_JAVA_MEM="-Xms16g -Xmx16g -Dsolr.autoSoftCommit.maxTime=-1 -Dsolr.autoCommit.maxTime=-1 -XX:+UseLargePages"

ZK_HOST="10.127.60.2,10.127.60.3,10.127.60.4/solr7"

SOLR_JAVA_MEM="-Xms32g -Xmx32g -Dsolr.autoSoftCommit.maxTime=-1 -Dsolr.autoCommit.maxTime=-1 -XX:+UseLargePages"

ZK_HOST="10.127.60.2,10.127.60.3,10.127.60.4/solr7"
7、创建collection

---在zookeeper上传配置文件
bin/solr zk upconfig -z 10.127.60.2,10.127.60.3,10.127.60.4:2181 -n mynewconfig -d /path/to/configset

–参考资料:https://lucene.apache.org/solr/guide/7_3/solr-control-script-reference.html#solr-control-script-reference

./solr create -c picc_bigdata -d /zp_test/solor7/conf -n picc_bigdata -s 6

8、如果将数据温江放在HDFS上,solrup用户需要有对应的权限。在HDFS上创建目录 /solr7,同时赋予solrup用户所有权。 hdfs dfs -chown solrup /solr7

Solr索引建立优化

测试环境的硬件情况:四台pc,20颗2核,内存256G,11盘1.4T。带宽为千兆网络,最快传输速度为140MB/S。

测试情况结论:

1、Solr在使用HDFS索引的建立速度远不如本地索引。但是我们在其它公司使用的都是HDFS索引,不至于这么慢。最有可能的情况是网络传输速度不够,因为在其它公司都是使用的双万兆网卡。

2、增加Solr的实例数量,可以增加Solr的分片数量,提高写入速度。

3、每行的数据量越大,也减慢写入速度,毕竟一行的数据字段数越多,一行数据的数据量越大。

4、由于我们只使用批量导入,不是会设计到近实时索引。所以我们禁用了soft commit。而且只在批量导入完成的时候,执行一次hard commit。这样做可以极大的降低solr的压力。因为每一次hard commit或者达到soft commit的阀值的时候,就会触发solr的索引handler更替,以及一系列动作。

禁用软提交的方法:

修改 /etc/default/solr1.in.sh,设置参数-Dsolr.autoSoftCommit.maxTime=-1 -Dsolr.autoCommit.maxTime=-1;

----HDFS版本
SOLR_JAVA_MEM="-Xms16g -Xmx16g -Dsolr.directoryFactory=HdfsDirectoryFactory -Dsolr.lock.type=hdfs -Dsolr.hdfs.home=hdfs://10.127.60.1:8020/solr7 -XX:MaxDirectMemorySize=20g -Dsolr.autoSoftCommit.maxTime=-1 -Dsolr.autoCommit.maxTime=-1 -XX:+UseLargePages -Dsolr.hdfs.blockcache.slab.count=100"

---本地
SOLR_JAVA_MEM="-Xms16g -Xmx16g -Dsolr.autoSoftCommit.maxTime=-1 -Dsolr.autoCommit.maxTime=-1 -XX:+UseLargePages"

SOLR_JAVA_MEM="-Xms32g -Xmx32g -Dsolr.autoSoftCommit.maxTime=-1 -Dsolr.autoCommit.maxTime=-1 -XX:+UseLargePages"