大数据之 Solr 集群搭建

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: Solr是一个基于Java的高性能全文搜索服务器,扩展自Lucene,提供丰富查询语言和优化的查询性能。它支持通过HTTP接口以XML格式进行索引和搜索操作。在集群环境中,涉及解压软件包,配置环境变量,修改Zookeeper参数,文件分发,启动Solr和Zookeeper服务。建议使用非root用户启动,确保安全。启动后,通过WEB UI验证Solr集群部署是否成功,遇到问题如找不到solr.xml文件,可通过指定-Dsolr.solr.home参数解决。

什么是 Solr?

Solr 是一个高性能,采用 Java 开发,基于 Lucene 的全文搜索服务器。同时对其进行了扩展,提供了比 Lucene 更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。

它对外提供类似于 Web-service 的 API 接口。用户可以通过 HTTP 请求,向搜索引擎服务器提交一定格式的 XML 文件,生成索引;也可以通过 Http Get 操作提出查找请求,并得到 XML 格式的返回结果。

Solr 集群搭建

  1. 解压文件
tar -zxvf solr-7.7.3.tgz -C /opt/module/

#修改名称
cd /opt/module/
mv solr-7.7.3/ solr
  1. 配置环境变量
#SOLR_HOME
export SOLR_HOME=/opt/module/solr
export PATH=$PATH:$SOLR_HOME/bin

保存并退出。

  1. 修改配置文件
# 进入 solr 安装目录的 bin 文件夹下
cd /opt/module/solr/bin

# 编辑文件 solr.in.sh
vi solr.in.sh

修改 Zookeeper 参数:

# 其中的连接地址修改为自己的
ZK_HOST="hadoop104:2181,hadoop105:2181,hadoop106:2181"

image.png

  1. 文件分发与同步

将 Solr 分发到其它机器上,并同步环境变量。

scp -r solr/ hadoop105:/opt/module/
scp -r solr/ hadoop106:/opt/module/

scp -r /etc/profile hadoop105:/etc/profile
scp -r /etc/profile hadoop106:/etc/profile

环境变量分发完成后,注意在从机上使用 source /etc/profile 进行环境变量的刷新。

  1. 启动 Solr 集群
启动 Solr 集群前必须先启动 Zookeeper 服务!!!
# 启动 solr
solr start -force

# 停止 solr
solr stop

停止 Solr 服务时如果出现:Found 1 Solr nodes running! Must either specify a port using -p or -all to stop all Solr nodes on this host. 提示,则可以使用 solr stop -p 8983 进行关闭。

由于 Solr 本身并不推荐使用 root 账号进行启动,存在安全风险,可能会导致系统被攻击或者数据泄露,如果想要强行启动可以通过添加 -force 参数进行启动,但并不推荐这种做法。

  1. 新建 Solr 普通用户启动

由于 Solr 的安全性问题,我们不能使用 root 账号直接启动,所以需要创建一个普通用户进行启动。

在三台机器上都执行如下步骤:

# 添加一个普通用户 solr
useradd solr
# 设置一个密码
passwd solr

# 更改 solr 安装目录的所属组
chown -R solr:solr /opt/module/solr

普通用户启动 Solr 集群

# 三台机器都执行
sudo -i -u solr solr start

sudo -i -u 表示以另一个用户的身份登录系统并打开一个新的 Shell。

第一个 solr 表示的是一个普通用户。

第二个 solr 表示的是 Solr 集群安装目录下的 /opt/module/solr/bin/solr 脚本启动文件,因为我们配置了环境变量,所以可以直接写 solr

启动完成后出现 Happy searching! 表示启动成功。

image.png

  1. 启动验证

我们可以访问 Solr 提供的 WEB UI 界面来进行验证,启动完成后,选择任意一台主机地址,访问 Solr 的默认端口 8983 即可进入,例如:192.168.0.104:8983

image.png

进入网页后打开 Cloud,如果发现三台机器都已经启动,则表示 Solr 集群部署完成。

  1. 异常处理

无法进入 Solr 的 WEB UI 界面,可能的原因如下:

  • 一、$SOLR_HOME/bin/solr.in.sh 文件中的 Zookeeper 连接地址/端口是否设置正确。

  • 二、未使用普通用户启动,或者没有把 Solr 的安装文件目录的所属组切换为普通用户,但这种情况一般是可以进入 WEB 界面的,只是一些功能无法使用。

  • 三、配置文件都正确,使用普通用户启动 Solr(如:sudo -i -u solr solr start),且出现了 Happy searching! 的提示,我们会认为启动成功了,但是打开网页访问时会出现如下错误界面:

image.png

错误原因:javax.servlet.ServletException: javax.servlet.UnavailableException: Error processing the request. CoreContainer is either not initialized or shutting down.

显示处理请求时出错,CoreContainer 未初始化或正在关闭。

于是我就去查看了 Solr 的日志文件,在日志头部发现了如下错误:

org.apache.solr.common.SolrException: solr.xml does not exist in /opt/module/solr cannot start Solr

image.png

显示无法找到 solr.xml 文件。

solr.xml 文件是 Solr 的核心配置文件之一,定义了 Solr 实例的基本配置信息和核心配置信息,是 Solr 正常运行的必要条件之一。

Solr 默认的 solr.xml 文件位于 Solr 安装目录下的 server/solr/ 目录下。

解决方法也很简单,只需要在启动的时候指定 solr.xml 的文件目录即可,如下所示:

sudo -i -u solr solr start -Dsolr.solr.home=/opt/module/solr/server/solr/

通过 -Dsolr.solr.home 参数指定 solr.xml 文件的路径即可,问题得到解决。

但是每次都添加这么一大串参数十分繁琐,我们可以在 $SOLR_HOME/bin/solr.in.sh 文件中直接指定 SOLR_HOME 参数,如下所示:

image.png

SOLR_HOME=/opt/module/solr/server/solr/

注意同步到其它机器上,然后就彻底解决该问题啦!

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
25天前
|
消息中间件 分布式计算 关系型数据库
大数据-140 - ClickHouse 集群 表引擎详解5 - MergeTree CollapsingMergeTree 与其他数据源 HDFS MySQL
大数据-140 - ClickHouse 集群 表引擎详解5 - MergeTree CollapsingMergeTree 与其他数据源 HDFS MySQL
36 0
|
25天前
|
消息中间件 分布式计算 NoSQL
大数据-134 - ClickHouse 集群三节点 安装配置启动
大数据-134 - ClickHouse 集群三节点 安装配置启动
45 0
|
25天前
|
存储 分布式计算 druid
大数据-152 Apache Druid 集群模式 配置启动【下篇】 超详细!(一)
大数据-152 Apache Druid 集群模式 配置启动【下篇】 超详细!(一)
35 1
大数据-152 Apache Druid 集群模式 配置启动【下篇】 超详细!(一)
|
24天前
|
分布式计算 大数据 分布式数据库
大数据-158 Apache Kylin 安装配置详解 集群模式启动(一)
大数据-158 Apache Kylin 安装配置详解 集群模式启动(一)
35 5
|
24天前
|
SQL 分布式计算 NoSQL
大数据-170 Elasticsearch 云服务器三节点集群搭建 测试运行
大数据-170 Elasticsearch 云服务器三节点集群搭建 测试运行
35 4
|
24天前
|
资源调度 大数据 分布式数据库
大数据-158 Apache Kylin 安装配置详解 集群模式启动(二)
大数据-158 Apache Kylin 安装配置详解 集群模式启动(二)
34 2
|
25天前
|
消息中间件 分布式计算 druid
大数据-152 Apache Druid 集群模式 配置启动【下篇】 超详细!(二)
大数据-152 Apache Druid 集群模式 配置启动【下篇】 超详细!(二)
38 2
|
25天前
|
存储 消息中间件 druid
大数据-151 Apache Druid 集群模式 配置启动【上篇】 超详细!
大数据-151 Apache Druid 集群模式 配置启动【上篇】 超详细!
71 1
|
25天前
|
存储 大数据 Apache
大数据-146 Apache Kudu 安装运行 Dockerfile 模拟集群 启动测试
大数据-146 Apache Kudu 安装运行 Dockerfile 模拟集群 启动测试
21 0
|
25天前
|
SQL 消息中间件 分布式计算
大数据-143 - ClickHouse 集群 SQL 超详细实践记录!(一)
大数据-143 - ClickHouse 集群 SQL 超详细实践记录!(一)
56 0

相关产品

  • 云原生大数据计算服务 MaxCompute