Solr是一个开源搜索平台,用于构建搜索应用程序。 它建立在Lucene(全文搜索引擎)之上。 Solr是企业级的,快速的和高度可扩展的。 使用Solr构建的应用程序非常复杂,可提供高性能。
为了在CNET网络的公司网站上添加搜索功能,Yonik Seely于2004年创建了Solr。并在2006年1月,它成为Apache软件基金会下的一个开源项目。并于2016年发布最新版本Solr 6.0
,支持并行SQL查询的执行。
Solr可以和Hadoop一起使用。由于Hadoop处理大量数据,Solr
帮助我们从这么大的源中找到所需的信息。不仅限于搜索,Solr也可以用于存储目的。像其他NoSQL数据库一样,它是一种非关系数据存储和处理技术。
总之,Solr是一个可扩展的,可部署,搜索/存储引擎,优化搜索大量以文本为中心的数据。
Apache Solr特点
Solr是Lucene
的Java API的包装。因此,使用Solr,可以利用Lucene
的所有功能。 让我们来看看Solr的一些最突出的特点 -
- Restful APIs − 要与Solr通信,并非一定需要有Java编程技能。相反,您可以使用
restful
服务与它通信。可使用文件格式(如XML
,JSON
和.CSV
)在Solr
中作为输入文档,并以相同的文件格式获取结果。 - 全文搜索 - Solr提供了全文搜索所需的所有功能,例如令牌,短语,拼写检查,通配符和自动完成。
- 企业准备 - 根据企业/组织的需要,Solr可以部署在任何类型的系统(大或小),如独立,分布式,云等。
- 灵活和可扩展 - 通过扩展Java类并相应配置,可以轻松地定制Solr的组件。
- NoSQL数据库 - Solr也可以用作大数据量级的NOSQL数据库,可以沿着集群分布搜索任务。
- 管理界面 - Solr提供了一个易于使用,用户友好,功能强大的用户界面,使用它可以执行所有可能的任务,如管理日志,添加,删除,更新和搜索文档。
- 高度可扩展 - 在使用Solr与Hadoop时,我们可以通过添加副本来扩展其容量。
- 以文本为中心并按相关性排序 - Solr主要用于搜索文本文档,结果根据与用户查询的相关性按顺序传送。
与Lucene
不同,在使用Apache Solr时,可不需要具有Java编程技能。它提供了一个完整的准备部署服务,以构建一个自动完成的搜索框,Lucene
是不提供的。 使用Solr
可以扩展,分配和管理大规模(大数据)应用程序的索引。
Lucene在搜索应用程序
Lucene是简单但强大的基于Java的搜索库。 它可以在任何应用程序中用于添加搜索功能。 Lucene是一个可扩展的高性能库,用于索引和搜索几乎任何类型的文本。 Lucene库提供任何搜索应用程序所需的核心操作,例如索引和搜索。
如果有一个具有大量数据的门户网站或平台,那么我们将很可能需要在门户/平台中提取一个搜索引擎从巨大的数据库中提取相关信息。Lucene作为任何搜索应用程序的核心,提供与索引和搜索相关的重要操作。
Solr搜索引擎基础
搜索引擎是指一个庞大的互联网资源数据库,如网页,新闻组,程序,图像等。它有助于在万维网上定位信息。
用户可以通过以关键字或短语的形式将查询传递到搜索引擎中来搜索信息。 搜索引擎然后搜索其数据库并向用户返回相关链接。
比如下面常用到两个搜索引擎 -
-
百度
-
谷歌
搜索引擎组件
一般来说,搜索引擎有三个基本组件,如下所列 -
- Web爬虫 - Web爬虫也称为蜘蛛或机器人。 它是一个收集网络信息的软件组件。
- 数据库 - Web上的所有信息都存储在数据库中。它们包含大量的Web资源。
- 搜索接口 - 此组件是用户和数据库之间的接口。它帮助用户搜索数据库。
搜索引擎是如何工作的?
任何搜索应用程序都需要执行以下一些或全部操作。
步骤 | 标题或名称 | 描述 |
---|---|---|
1 | 获取原始内容 | 任何搜索应用程序的第一步是收集要进行搜索的目标内容。 |
2 | 构建文档 | 从原始内容构建文档,让搜索应用程序可以很容易地理解和解释。 |
3 | 分析文档 | 在索引开始之前,将对文档进行分析。 |
4 | 索引文档 | 当文档被构建和分析后,下一步是对它们建立索引,以便可以基于特定键而不是文档的全部内容来检索该文档。索引类似于在书开始页或末尾处的目录索引,其中常见单词以其页码显示,使得这些单词可以快速跟踪,而不是搜索整本书。 |
5 | 用于搜索的用户接口 | 当索引数据库就绪,应用程序可以执行搜索操作。 为了帮助用户进行搜索,应用必须提供用户接口,用户可以在其中输入文本并启动搜索过程 |
6 | 构建查询 | 当用户做出搜索文本的请求,应用程序应该使用该文本来准备查询对象,然后可以使用该查询对象来查询索引数据库以获得相关的细节。 |
7 | 搜索查询 | 使用查询对象,检查索引数据库以获取相关详细信息和内容文档。 |
8 | 渲染结果 | 当收到所需的结果,应用程序应决定如何使用其用户界面向用户显示结果。 |
看看下面的插图。 它显示了搜索引擎功能的总体视图。
除了这些基本操作之外,搜索应用还可以提供管理 - 用户界面以帮助管理员基于用户简档控制搜索的级别。搜索结果分析是任何搜索应用程序的另一个重要和高级方面。
Solr Windows环境安装配置
在本章中,我们将讨论如何在Windows环境中设置Solr。要在Windows系统上安装Solr,需要按照以下步骤 -
- 访问Apache Solr的主页,然后点击下载按钮或直接访问:http://lucene.apache.org/solr/downloads.html 。
- 选择一个镜像以获取Apache Solr。从那里选择下载名称为
Solr-6.4.0.zip
的文件。 - 将文件从下载文件夹移动到所需的目录并解压缩,在这个示例中,我们解压到
D:softwaresolr-6.4.0
目录下。
假设您也将下载了Solr文件将其解压到D:softwaresolr-6.4.0
目录下。在这种情况下,可以按照以下方式启动Solr
,如下面的屏幕截图所示。
要验证安装,请在浏览器中使用以下URL
。
如果安装过程成功,那么将看到Apache Solr用户界面的仪表板,如下所示 -
设置Java环境
我们还可以使用Java库与Apache Solr进行通信; 但在使用Java API
访问Solr之前,需要为这些库设置类路径。
注:以下为 Linux 系统的设置方法,如在Window上设置,可直接将类路径加入到环境变量中。
设置类路径
在.bashrc
文件中将类路径设置为Solr库。在任何编辑器中打开.bashrc
,如下所示。
$ gedit ~/.bashrc
设置Solr库的类路径(HBase中的lib文件夹),如下所示。
export CLASSPATH = $CLASSPATH://home/hadoop/Solr/lib/*
这是为了防止在使用Java API访问HBase时发生“未找到类(class not found)”异常。
Hadoop配置使用Solr
Solr可以和Hadoop一起使用。 由于Hadoop是用于处理大量数据,Solr帮助我们从这么大数据源中找到所需的信息。在本节中,我们将了解如何在系统上安装Hadoop。
下载Hadoop
下面给出了如何将Hadoop下载到系统中的步骤。
第1步 - 打开Hadoop主页 - www.hadoop.apache.org/。 单击链接版本,如下面的屏幕截图中突出显示。
它将重定向到Apache Hadoop发布页面,其中包含有关各种版本的Hadoop源代码和二进制文件镜像的链接,如下所示:
步骤2 - 选择最新稳定Hadoop版本(在本教程中,选择的是2.6.4
),并单击其二进制链接。 它将转到一个页面,其中提供了Hadoop二进制文件的镜像。单击其中一个镜像下载Hadoop。
从命令提示符下载Hadoop
打开Linux终端并以超级用户(root
)身份登录。
$ su
password:
转到需要安装Hadoop的目录,并使用之前复制的链接将文件保存在此目录下,如下面的代码块所示。
# cd /usr/local
# wget http://redrockdigimark.com/apachemirror/hadoop/common/hadoop-
2.6.4/hadoop-2.6.4.tar.gz
下载Hadoop后,使用以下命令解压缩。
# tar zxvf hadoop-2.6.4.tar.gz
# mkdir hadoop
# mv hadoop-2.6.4/* to hadoop/
# exit
安装Hadoop
按照下面给出的步骤在伪分布式模式下安装Hadoop。
第1步:设置Hadoop
可以通过将以下命令附加到〜/ .bashrc
文件来设置Hadoop
环境变量。
export HADOOP_HOME = /usr/local/hadoop export
HADOOP_MAPRED_HOME = $HADOOP_HOME export
HADOOP_COMMON_HOME = $HADOOP_HOME export
HADOOP_HDFS_HOME = $HADOOP_HOME export
YARN_HOME = $HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR = $HADOOP_HOME/lib/native
export PATH = $PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
export HADOOP_INSTALL = $HADOOP_HOME
接下来,将所有更改应用到当前运行的系统,执行以下代码 -
$ source ~/.bashrc
第2步:Hadoop配置
可以在位置“$HADOOP_HOME/etc/hadoop
”目录中找到所有Hadoop配置文件。需要根据您的Hadoop基础结构对这些配置文件进行更改。
$ cd $HADOOP_HOME/etc/hadoop
为了在Java中开发Hadoop程序,必须通过将JAVA_HOME
值替换为系统中Java的位置来重置hadoop-env.sh
文件中的Java环境变量。
export JAVA_HOME = /usr/local/jdk1.7.0_71
以下是必须编辑以配置Hadoop的文件的列表 -
- core-site.xml
- hdfs-site.xml
- yarn-site.xml
- mapred-site.xml
core-site.xml
core-site.xml
文件包含诸如用于Hadoop实例的端口号,为文件系统分配的内存,用于存储数据的内存限制以及读/写缓冲区大小的信息。
打开core-site.xml
并在<configuration>,</ configuration>
标签中添加以下属性。
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
hdfs-site.xml
hdfs-site.xml
文件包含本地文件系统的复制数据值,namenode
路径和datanode
路径等信息。表示要存储Hadoop基础架构的位置。
假设有以下数据。
dfs.replication (data replication value) = 1
(In the below given path /hadoop/ is the user name.
hadoopinfra/hdfs/namenode is the directory created by hdfs file system.)
namenode path = //home/hadoop/hadoopinfra/hdfs/namenode
(hadoopinfra/hdfs/datanode is the directory created by hdfs file system.)
datanode path = //home/hadoop/hadoopinfra/hdfs/datanode
打开此文件,并在<configuration>,</ configuration>
标记中添加以下属性。
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>file:///home/hadoop/hadoopinfra/hdfs/namenode</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>file:///home/hadoop/hadoopinfra/hdfs/datanode</value>
</property>
</configuration>
注意 - 在上述文件中,所有属性值都是用户定义的,您可以根据Hadoop基础结构进行更改。
yarn-site.xml
此文件用于在Hadoop中配置yarn
。 打开yarn-site.xml
文件,并在此文件中的<configuration>,</ configuration>
标记之间添加以下属性。
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
mapred-site.xml
此文件用于指定使用的MapReduce
框架。默认情况下,Hadoop包含yarn-site.xml
模板。 首先,需要使用以下命令将文件从mapred-site,xml.template
复制到mapred-site.xml
文件。
$ cp mapred-site.xml.template mapred-site.xml
打开mapred-site.xml
文件,并在<configuration>,</ configuration>
标签中添加以下属性。
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
验证Hadoop安装
以下步骤用于验证Hadoop安装。
第1步:命名节点设置
使用命令“hdfs namenode -format
”设置namenode
,如下所示。
$ cd ~
$ hdfs namenode -format
预期输出结果如下 -
10/24/14 21:30:55 INFO namenode.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG: host = localhost/192.168.1.11
STARTUP_MSG: args = [-format] STARTUP_MSG: version = 2.6.4
...
...
10/24/14 21:30:56 INFO common.Storage: Storage directory
/home/hadoop/hadoopinfra/hdfs/namenode has been successfully formatted.
10/24/14 21:30:56 INFO namenode.NNStorageRetentionManager: Going to retain 1
images with txid >= 0
10/24/14 21:30:56 INFO util.ExitUtil: Exiting with status 0
10/24/14 21:30:56 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at localhost/192.168.1.11
************************************************************/
第2步:验证Hadoop dfs
以下命令用于启动Hadoop dfs。执行此命令将启动Hadoop文件系统。
$ start-dfs.sh
输出结果如下 -
10/24/14 21:37:56
Starting namenodes on [localhost]
localhost: starting namenode, logging to /home/hadoop/hadoop-2.6.4/logs/hadoop-
hadoop-namenode-localhost.out
localhost: starting datanode, logging to /home/hadoop/hadoop-2.6.4/logs/hadoop-
hadoop-datanode-localhost.out
Starting secondary namenodes [0.0.0.0]
第3步:验证Yarn脚本
以下命令用于启动Yarn
脚本。执行此命令将启动 Yarn 实例。
$ start-yarn.sh
输出结果如下 -
starting yarn daemons
starting resourcemanager, logging to /home/hadoop/hadoop-2.6.4/logs/yarn-
hadoop-resourcemanager-localhost.out
localhost: starting nodemanager, logging to /home/hadoop/hadoop-
2.6.4/logs/yarn-hadoop-nodemanager-localhost.out
第4步:在浏览器上访问Hadoop
访问Hadoop的默认端口号为50070
。使用以下URL在浏览器上获取Hadoop服务。
得到结果如下 -
在Hadoop上安装Solr
按照以下步骤下载并安装Solr。
第1步
通过单击以下链接打开Apache Solr的主页 - http://lucene.apache.org/solr/
第2步
点击下载按钮(在上面的截图中箭头突出显示)。点击后将被重定向到Apache Solr的各种镜像的页面。 选择一个镜像并单击它,这将重定向到一个页面,您可以下载Apache Solr的源文件和二进制文件,如下面的屏幕截图所示。
第3步
选择Solr-6.2.0.tqz
的文件夹将它下载到系统的文件夹中。提取下载的文件夹的内容。
第4步
在Hadoop主目录中创建一个Solr
的文件夹,并将解压缩文件夹的内容移动到其中,如下所示。
$ mkdir Solr
$ cd Downloads
$ mv Solr-6.2.0 /home/Hadoop/
验证
进入到solr
主目录的bin
文件夹,并使用version
选项验证安装,如以下代码块所示。
$ cd bin/
$ ./Solr version
6.2.0
设置主目录和路径
使用以下命令打开.bashrc
文件 -
[Hadoop@localhost ~]$ source ~/.bashrc
现在设置Apache Solr的home
和path
目录如下 -
export SOLR_HOME = /home/Hadoop/Solr
export PATH = $PATH:/$SOLR_HOME/bin/
打开终端并执行以下命令 -
[Hadoop@localhost Solr]$ source ~/.bashrc
现在,可以从任何目录执行Solr
命令。