在HDFS上创建Solr核心时出现问题

时间:2016-01-11 11:17:06

标签: solr hdfs

我试图在一个独立的实例(solr-5.3.0和Hadoop 2.7)上创建HDFS上的solr核心。我已经启动了如下服务,

$ bin/solr start -Dsolr.directoryFactory=HdfsDirectoryFactory -Dsolr.lock.type=hdfs -Dsolr.data.dir=hdfs://localhost:9000/tmp -Dsolr.updatelog=hdfs://localhost:9000/tmp -s solr-cores/core1

等待最多30秒才能看到Solr在端口8983上运行[/] 在端口8983上启动Solr服务器(pid = 42277)。快乐的搜索!

尝试创建如下的核心,

bin/solr create -c hdfsstarted -d /home/admin/HadoopTools/solr-5.3.0/server/solr/configsets/data_driven_schema_configs_hdfs/conf -n hdfsstarted

但是低于错误:

  

设置新的核心实例目录:   /home/admin/HadoopTools/solr-5.3.0/solr-cores/core1/hdfsstarted

     

创建新核心' hdfsstarted'使用命令:   http://localhost:8983/solr/admin/cores?action=CREATE&name=hdfsstarted&instanceDir=hdfsstarted

     

错误:错误创建SolrCore' hdfsstarted':无法创建核心[hdfsstarted]引起:协议消息end-group标记与预期标记不匹配。

我修改了solrconfig.xml,如下所示,

<directoryFactory name="DirectoryFactory" class="solr.HdfsDirectoryFactory">
    <str name="solr.hdfs.home">hdfs://10.67.5.244:50070/tmp</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">false</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>
<lockType>
   hdfs
</lockType>

请告诉我如何在HDFS中正确创建核心。

1 个答案:

答案 0 :(得分:0)

  

由以下原因引起:协议消息端组标签与预期标签不符。

发生此错误是因为使用的HDFS端口不正确。参见hdfs - ls: Failed on local exception: com.google.protobuf.InvalidProtocolBufferException:

在这里,您需要将端口从50070(看起来像NameNode Web ui端口)更改为8020或您用作NameNode RPC端口的任何端口:

<str name="solr.hdfs.home">hdfs://10.67.5.244:50070/tmp</str>