[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