在启动 Solr 的时候设定

这种方式通过运行 bin/solr 的时候加上相关参数,具体如下:

bin/solr start -Dsolr.directoryFactory=HdfsDirectoryFactory		\
			   -Dsolr.lock.type=hdfs 							\
			   -Dsolr.data.dir=hdfs://iteblog-cluster/solr 		\
			   -Dsolr.hdfs.confdir=/home/iteblog/hadoop-conf

很显然,这种方式比较麻烦,不便于管理。

在 solr.in.sh 文件里面设定

solr.in.sh 文件里面可以设定 Solr 的很多环境变量,所以我们也可以在这里面设定索引存放路径的相关配置,具体如下:

SOLR_OPTS="$SOLR_OPTS -Dsolr.directoryFactory=HdfsDirectoryFactory -Dsolr.lock.type=hdfs -Dsolr.hdfs.home=hdfs://iteblog-cluster/solr -Dsolr.hdfs.confdir=/home/iteblog/hadoop-conf"

这种方式只需要设定一次,后面就可以不用修改,相对第一种方式维护起来很简便。

通过 solrconfig.xml 文件设定

我们知道,Solr 里面每个 Core/Collection 都有自己的 solrconfig.xml 配置文件,所以我们也可以在这里设置当前 Core/Collection 索引文件存放路径,具体如下:
我们在 solrconfig.xml 配置文件里面找到下面设置:

<directoryFactory name="DirectoryFactory"
                    class="${solr.directoryFactory:solr.NRTCachingDirectoryFactory}"/>

将上面的内容使用下的替换:

<directoryFactory name="DirectoryFactory" class="solr.HdfsDirectoryFactory">
  <str name="solr.hdfs.home">hdfs://iteblog-cluster/solr</str>
  <str name="solr.hdfs.confdir">/home/iteblog/hadoop-conf</str>
  <str name="solr.lock.type">hdfs</str>
</directoryFactory>

这种方式和前面的区别是:前面的设定是全局有效的,也就是所有的 Core/Collection 索引文件都将会存放到 HDFS 之上;而这种方式是针对单个 Core/Collection 的,所以只有当前 Core/Collection 的索引文件才会存放到 HDFS 之上。

如果你的集群启用了 Kerberos 权限认证,你需要额外添加下面的选项,以便支持 Kerberos 权限认证:

<directoryFactory name="DirectoryFactory" class="solr.HdfsDirectoryFactory">
   ...
  <bool name="solr.hdfs.security.kerberos.enabled">true</bool>
  <str name="solr.hdfs.security.kerberos.keytabfile">/etc/krb5.keytab</str>
  <str name="solr.hdfs.security.kerberos.principal">solr/admin@KERBEROS.COM</str>
</directoryFactory>

上面三种情况最后存放在 HDFS 上的目录如下:

[root@iteblog.com ~]# hadoop fs -du -h /solr
5.3 G  /solr/collection1
5.6 G  /solr/collection2
1.2M      /solr/iteblog

也就是 $solr.hdfs.home/$Core name

SolrCloud 模式的设置和这里的类似,就不在介绍了。关于 Solr 将索引数据存放到 HDFS 上的更多参数请参见 Running Solr on HDFS

本博客文章除特别声明,全部都是原创!
原创文章版权归过往记忆大数据(过往记忆)所有,未经许可不得转载。
本文链接: 【Apache Solr 将索引数据写入到 HDFS】(https://www.iteblog.com/archives/2396.html)
喜欢 (4)
分享 (0)
发表我的评论
取消评论

表情
本博客评论系统带有自动识别垃圾评论功能,请写一些有意义的评论,谢谢!