简体   繁体   English

如何在Apache SOLR Cloud模式下加载本机库(.so)?

[英]How to load native library(.so) in Apache SOLR Cloud mode?

I have written a SOLR custom query parser (implementation of org.apache.solr.search.QParser). 我已经编写了一个SOLR自定义查询解析器(org.apache.solr.search.QParser的实现)。 My query parser uses some third-party jars. 我的查询解析器使用了一些第三方jar。 One of the third-party jar requires a native library(.so file) to work. 第三方jar之一需要本机库(.so文件)才能工作。 This plugin is working fine when running solr in non-cloud mode, but when I run it on cloud mode, SOLR throws these errors: 当在非云模式下运行solr时,此插件可以正常工作,但是当我在云模式下运行时,SOLR会引发以下错误:

java.lang.UnsatisfiedLinkError: Native Library /opt/solr-6.2.0/lib/xyz.so already loaded in another classloader

I have kept all my third-party and query parser jars and .so file in SOLR_HOME/lib directory and have modified: 我已将所有第三方和查询解析器jar和.so文件保留在SOLR_HOME / lib目录中,并进行了修改:

  1. Added lib dir= "${solr.install.dir:../../../..}/lib/" to solrconfig.xml 在solrconfig.xml中添加了lib dir =“ $ {solr.install.dir:../../../ ..} / lib /”

  2. In SOLR_HOME/bin/solr file: 在SOLR_HOME / bin / solr文件中:

    SOLR_START_OPTS= "-Djava.library.path=$SOLR_TIP/lib/" SOLR_START_OPTS =“ -Djava.library.path = $ SOLR_TIP / lib /”

Please help. 请帮忙。 Thanks in advance. 提前致谢。

Finally, I found the solution for this(credit goes to my one of my senior). 最终,我找到了解决方案(信用归我的上级之一)。 When running in cloud mode, follow these instructions: 在云模式下运行时,请遵循以下说明:

  1. Create lib directory inside SOLR_HOME and put native-library(.so) file there. SOLR_HOME内创建lib目录,并在SOLR_HOME放置native-library(.so)文件。
  2. In SOLR_HOME/bin/solr file, add this line to SOLR_START_OPTS : SOLR_HOME/bin/solr文件中,将此行添加到SOLR_START_OPTS

    SOLR_START_OPTS= "-Djava.library.path=$SOLR_TIP/lib/" SOLR_START_OPTS =“ -Djava.library.path = $ SOLR_TIP / lib /”

  3. Create lib folders in each node library (ie SOLR_HOME/example/cloud/node1/lib, SOLR_HOME/example/cloud/node2/lib) and put all your custom plugin jars into these newly created lib folders. 在每个节点库中创建lib文件夹(即SOLR_HOME / example / cloud / node1 / lib,SOLR_HOME / example / cloud / node2 / lib),并将所有自定义插件jar放入这些新创建的lib文件夹中。

  4. Restart the solr in cloud mode. 在云模式下重新启动Solr。

Hope, it will help ! 希望会有所帮助!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM