solrcloud 8.5.0 环境搭建
solr 8.5.0 单机版搭建教程参考: https://blog.youkuaiyun.com/tianwenxue/article/details/105723904
solrcloud 是将多个 solr 服务作为集群。受限于 lucene 的底层机制,单个 solr 服务可以索引的文档数据最大为 int 的最大值,大概 21亿。solrcloud 的文档数取决于 solr 服务的个数。理论上,solrcloud 文档数 = solr 节点数 * 21亿。
1. solr zk 操作
solr8.5.0 提供了对zk的操作工具。 solrcloud 集群配置统一存储在zookeeper中。
./bin/solr zk upconfig|downconfig -d <confdir> -n <configName> [-z zkHost]
solr zk cp [-r] <src> <dest> [-z zkHost]
solr zk rm [-r] <path> [-z zkHost]
solr zk mv <src> <dest> [-z zkHost]
solr zk ls [-r] <path> [-z zkHost]
solr zk mkroot <path> [-z zkHost]
1.1 在 zookeeper 初始化 solr 配置存储目录
bin/solr zk mkroot /solr -z host172.dataojo.com:2181
1. 服务器节点
host172.dataojo.com
host174.dataojo.com
1. 索引存储在系统磁盘
1.1 修改 host172.dataojo.com 节点上 solr 环境参数配置
vim bin/solr.in.sh
# 升级solr堆内存
SOLR_HEAD="8g"
# 修改zk集群
ZK_HOST="host172.dataojo.com:2181,host173.dataojo.com:2181,host174.dataojo.com:2181/solr"
#修改主机节点名称,不同主机节点需要设置为不同名称
SOLR_HOST="host172.dataojo.com"
1.2 将配置好的solr环境分发到 host174.dataojo.com
# 分发到其他节点
scp -r solr-8.5.0 host174.dataojo.com:/opt/
# 在 host174.dataojo.com 节点修改 solr.in.sh配置
#修改主机节点名称
SOLR_HOST="host174.dataojo.com"
1.3 启动
#启动172节点
./bin/solr start
#启动174节点
./bin/solr start
1.4 访问 solr admin
通过浏览器访问 http://host172.dataojo.com:8983 或 http://host174.dataojo.com:8983
1.5 创建 collectioin
1.6 通过 zkCli.sh 连接zookeeper集群,可以查看配置
# 查看 ls /solr/configs 目录下,可以看多已经默认上传了一份 _default名称配置
[_default]
2. 索引存储在hdfs
在创建 collection 是,使用默认配置项,会将数据存储在系统磁盘。如果希望更改数据存储位置,改为存储到 hadoop hdfs 文件系统中,可以复制一份配置信息,修改数据存储位置,然后上传到 zk中。
2.1 复制slor 默认配置信息
#切换到默认配置目录
cd /opt/software/solr-8.5.0/server/solr/configsets
#复制一份配置信息
cp -r _default _hdfs
vim _hdfs/conf/solrconfig.xml
<!--替换 <directoryFactory>...</directoryFactory> 配置修改成如下-->
<!--注意 hdfs 目录中的用户写入权限 -->
<directoryFactory name="DirectoryFactory" class="solr.HdfsDirectoryFactory">
<str name="solr.hdfs.home">hdfs://host172.dataojo.com:9000/solr</str>
<bool name="solr.hdfs.blockcache.enabled">true</bool>
<int name="solr.hdfs.blockcache.slab.count">1</int>
<bool name="solr.hdfs.blockcache.direct.memory.allocation">true</bool>
<int name="solr.hdfs.blockcache.blocksperbank">16384</int>
<bool name="solr.hdfs.blockcache.read.enabled">true</bool>
<bool name="solr.hdfs.nrtcachingdirectory.enable">true</bool>
<int name="solr.hdfs.nrtcachingdirectory.maxmergesizemb">16</int>
<int name="solr.hdfs.nrtcachingdirectory.maxcachedmb">192</int>
</directoryFactory>
<!-- 替换 <lockType>${solr.lock.type:native}/<lockType> 配置修改如下-->
<lockType>${solr.lock.type:hdfs}</lockType>
2.2 上传配置文件到zookeeper中
./bin/solr zk upconfig -d /opt/software/solr-8.5.0/server/solr/configsets/_hdfs/conf -n _hdfs -z host172.dataojo.com:2181/solr
2.3 使用新的配置创建 collection
可以通过 zookeeper 客户端查看 zookeeper 中 /solr/configs 信息。会发现新增加了配置,通过 solr admin 创建 collection 时,也会列出可用的配置信息。
创建完 collection 后,可以查看 hdfs 中的存储目录,会发现多了对应 collection 的目录,说明solr 的索引数据已经存储到 hdfs 中了。