尝试使用Solr在HDFS上实现搜索引擎我已经成功安装了Hadoop但是在配置Solr时遇到了一些错误......对Solr来说很新。请帮忙解决这个问题
solrconfig.xml中
<directoryFactory name="DirectoryFactory" class="solr.HdfsDirectoryFactory">
<str name="solr.hdfs.home">hdfs://127.0.0.1:10001/home/hadoop/hadoop-datastore/tmp/dfs/solr</str>
<str name="solr.hdfs.confdir">/home/hadoop/hadoop-1.2.1/conf</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.blockcache.write.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>
请让我知道我在这个档案上的错误是什么
我试图启动Solr,请让我知道这是否正确
java -Dsolr.directoryFactory=HdfsDirectoryFactory -Dsolr.lock.type=hdfs -Dsolr.hdfs.home=hdfs://127.0.0.1:10001/home/hadoop/hadoop-datastore/tmp/dfs/solr -Dsolr.hdfs.confdir=/home/hadoop/hadoop-1.2.1/conf -jar start.jar
启动时出现错误消息
ERROR org.apache.solr.core.CoreContainer – Unable to create core: collection1
org.apache.solr.common.SolrException: Problem creating directory: hdfs://127.0.0.1:10001/home/hadoop/hadoop-datastore/tmp/dfs/solr/collection1/data
at org.apache.solr.core.SolrCore.<init>(SolrCore.java:834)
at org.apache.solr.core.SolrCore.<init>(SolrCore.java:625)
at org.apache.solr.core.CoreContainer.createFromLocal(CoreContainer.java:557)
at org.apache.solr.core.CoreContainer.create(CoreContainer.java:592)
at org.apache.solr.core.CoreContainer$1.call(CoreContainer.java:271)
at org.apache.solr.core.CoreContainer$1.call(CoreContainer.java:263)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.RuntimeException: Problem creating directory: hdfs://127.0.0.1:10001/home/hadoop/hadoop-datastore/tmp/dfs/solr/collection1/data
at org.apache.solr.store.hdfs.HdfsDirectory.<init>(HdfsDirectory.java:68)
at org.apache.solr.core.HdfsDirectoryFactory.create(HdfsDirectoryFactory.java:154)
使用Hadoop 1.2.1
请帮助我启动此搜索功能
答案 0 :(得分:0)
对于将来可能会遇到类似问题的人。
这可能是由多种原因引起的。检查这些:
确保使用正确的HDFS NameNode主机名/端口。在OP的配置中为hdfs://127.0.0.1:10001
,但NN RPC的默认端口为8020。
确保将配置添加到solrconfig.xml中。它应同时具有<directoryFactory>
和<lockType>hdfs</lockType>
。
在<directoryFactory>
块中描述了将Solr与HDFS数据目录一起使用时,因此应注释掉默认<dataDir>
。
用户solr
应该是HDFS上solr数据根目录的所有者。如果使用root或hdfs用户的CLI创建集合,则可能会搞砸。