Сбой создания коллекции Solr на HDFS - PullRequest
0 голосов
/ 08 сентября 2018

Я пытаюсь запустить Solr 7.4.0 на Hadoop (я успешно установил Hadoop 2.7.6 на Windows 10). Следуя руководству пользователя Solr, я открыл файл «solrconfig.xml» _default config и заменил строку

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

от

<directoryFactory name="DirectoryFactory" class="solr.HdfsDirectoryFactory">
  <str name="solr.hdfs.home">hdfs://localhost: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>

Я запустил SolrCloud на HDFS из командной строки, и он успешно запустился

solr start -c -Dsolr.directoryFactory=HdfsDirectoryFactory -Dsolr.lock.type=hdfs -Dsolr.hdfs.home=hdfs://localhost:9000/solr

Некоторые аргументы, как показано ниже

-Djava.io.tmpdir=d:\Project\Java\hadoop-2.7.6\solr-7.4.0\server\tmp
-Djetty.home=d:\Project\Java\hadoop-2.7.6\solr-7.4.0\server
-Djetty.host=0.0.0.0
-Djetty.port=8983
-Dlog4j.configurationFile=file:d:\Project\Java\hadoop-2.7.6\solr-7.4.0\server\resources\log4j2.xml
-Dsolr.default.confdir=d:\Project\Java\hadoop-2.7.6\solr-7.4.0\server\solr\configsets\_default\conf
-Dsolr.directoryFactory=HdfsDirectoryFactory
-Dsolr.hdfs.home=hdfs://localhost:9000/solr
-Dsolr.install.dir=d:\Project\Java\hadoop-2.7.6\solr-7.4.0
-Dsolr.lock.type=hdfs
-Dsolr.log.dir=d:\Project\Java\hadoop-2.7.6\solr-7.4.0\server\logs
-Dsolr.solr.home=d:\Project\Java\hadoop-2.7.6\solr-7.4.0\server\solr

На следующем шаге я попытался создать коллекцию «Тест», выполнив этот запрос

http://localhost:8983/solr/admin/collections?action=CREATE&name=Test&numShards=1&replicationFactor=1

И Solr возвращает ошибку

............
Caused by: java.nio.file.InvalidPathException: Illegal char <:> at index 4: hdfs://localhost:9000/solr/Test/core_node2/data\
    at sun.nio.fs.WindowsPathParser.normalize(WindowsPathParser.java:182)
    at sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:153)
    at sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:77)
    at sun.nio.fs.WindowsPath.parse(WindowsPath.java:94)
    at sun.nio.fs.WindowsFileSystem.getPath(WindowsFileSystem.java:255)
    at sun.nio.fs.AbstractPath.resolve(AbstractPath.java:53)
    at org.apache.solr.core.SolrCore.initUpdateLogDir(SolrCore.java:1341)
    at org.apache.solr.core.SolrCore.<init>(SolrCore.java:923)
    at org.apache.solr.core.SolrCore.<init>(SolrCore.java:867)
    at org.apache.solr.core.CoreContainer.createFromDescriptor(CoreContainer.java:1135)
    ... 45 more

У кого-нибудь была такая же проблема? Как создать коллекцию SolrCloud и хранить ее в Hadoop?

1 Ответ

0 голосов
/ 10 сентября 2018

Вам нужно будет использовать указанную ниже фабрику каталогов в файле solrconfig.xml.

<directoryFactory name="DirectoryFactory" class="solr.HdfsDirectoryFactory">
<str name="solr.hdfs.home">hdfs://namenodeserver:8020/apps/solr</str>
<str name="solr.hdfs.confdir">/etc/hadoop/conf</str>
<str name="solr.hdfs.security.kerberos.enabled">true</str>
<str name="solr.hdfs.security.kerberos.keytabfile">/etc/security/keytabs/solr.service.keytab</str>
<str name="solr.hdfs.security.kerberos.principal">@principal</str>
<bool name="solr.hdfs.blockcache.enabled">true</bool>
<bool name="solr.hdfs.blockcache.global">true</bool>
<int name="solr.hdfs.blockcache.slab.count">2</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.blockcache.write.enabled">false</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>

загрузить конфиги в zookeeper, как показано ниже.

sh /opt/lucidworks-hdpsearch/solr/server/scripts/cloud-scripts/zkcli.sh --zkhost hostname1.com,hostname2.com,hostname3.com:2181/solr -cmd upconfig --collection Event --confname webconf --solrhome /home/solr/Event/ --confdir /home/solr/Event/conf

Создайте коллекцию hdfs, как показано ниже.

http://solrhostname:8983/solr/admin/collections?action=CREATE&name=Event&numShards=13&replicationFactor=3&maxShardsPerNode=10&instanceDir=hdfs://namenode/apps/solr/Event&config=hdfs://namenode/apps/solr/Event/solrconfig.xml&schema=hdfs://namenode/apps/solr/Event/managed-schema&dataDir=hdfs://namenode/apps/solr/Event/data&collection.configName=webconf
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...