[Hadoop 2.2 + Solr 4.5]系列之四:基于HDFS的Solr配置


[Hadoop 2.2 + Solr 4.5]系列之四:基于HDFS的Solr配置

 

说明: 在作者上官网上下载solr的时候 solr最新版本已经发布到solr4.5.1了,这里我们就使用solr4.5.1代替了。

另外: solr4.4 以后的版本支持查询HDFS

 

1、下载Solr4.5.1、解压、赋予 用户Hadoop


 

1)、下载地址: Solr-4.5.1

2)、unzip 解压后,赋于hadoop用户

# chown -R hadoop:hadoop /usr/solr-4.5.1
# mv solr-4.5.1 solr
# su - hadoop

 

2、配置Solr 采用HDFS作为其INDEX Store.


 

作者根据官网:WIKI进行配置

https://cwiki.apache.org/confluence/display/solr/Running+Solr+on+HDFS

另外: 替换掉solr服务下的5个jar文件:4个hadoop-*.jar + 1个protobuf-java-2.5.0.jar

1):/usr/solr/example/solr/collection1/conf/solrconfig.xml

找到directoryFactory 的配置,替换为Hdfs存储,配置如下:

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

根据文档要求:

  • You should specify a lock factory type of 'hdfs' or none.

找到lockType,并替换为:

<lockType>${solr.lock.type:hdfs}</lockType>

该文档配置完毕。

2)、配置Hadoop有操作HDFS的权限。

注意不配置的话会报无法create hdfs data Directory的错误!

配置:/usr/hadoop/etc/hadoop/hdfs-site.xml

 <property>
         <name>dfs.webhdfs.enabled</name>
         <value>true</value>
 </property>

<property>
        <name>dfs.permissions.enabled</name>
        <value>false</value>
</property>

 

3)、替换jar包

网上下载protobuf-java-2.5.0.jar。直接google搜索下载就行。

$ cd /usr/solr/example/solr-webapp/webapp/WEB-INF/lib
$ rm hadoop-*.jar
$ rm protobuf-java-2.5.0.jar
$ cp /usr/hadoop/share/hadoop/common/hadoop-common-2.2.0.jar ./
$ cp /usr/hadoop/share/hadoop/hdfs/hadoop-hdfs-2.2.0.jar ./
$ cp /usr/hadoop/share/hadoop/common/lib/hadoop-auth-2.2.0.jar ./
$ cp /usr/hadoop/share/hadoop/common/lib/hadoop-annotations-2.2.0.jar ./
$ cp ~/protobuf-java-2.5.0.jar ./

#注意: 我将protobuf-java-2.5.0.jar文件上传到了/home/hadoop/下的。然后才cp过来的。

 

4)、启动solr

$ cd /usr/solr/example
$ java -jar start.jar

 

5)、访问Solr服务

再启动没有抛出任何异常后,访问

http://master.hadoop:8983/solr

 

 

3、使用HDFS作为存储测试


这里我们只是简单的做一个测试,并没有修改collection1的schema.xml的配置。HDFS数据使用的是上一节中,我们Mapred job生成的Lucene index。

[Hadoop 2.2 + Solr 4.5]系列之三:MapReduce + Lucene 生成Index文件

查看mapred job生成的lucene文件地址为:

查看lucene collection1的data文件为:

然后执行hadoop dfs -cp

$ hadoop dfs -cp -f /output/test_lucene_99/mmmm/part-00000 /solr/collection1/data/index


#另外:/output/test_lucene_99/mmmm/part-00000中的index.done是个空文件,在MapReduce Job执行生成Lucene完成后被创建的。

 

最后查看Reload Index,查看效果:      效果一

 

 由于,我们的文档是随便生成的,没有配置schema,另外Mapred的map函数也没有进行对应的格式解析,简单的以行数为key,该行字符串为value,所以无法进行select查询,

但是可以进行效果二:

 

 

完毕,下面将对Map方法和solr进行详细的配置与设计,期待中....

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM