【solr】SolrCloud中索引數據存儲於HDFS


SolrCloud中索引數據存儲於HDFS

  本人最近使用SolrCloud存儲索引日志條件,便於快速索引,因為我的索引條件較多,每天日志記錄較大,索引想到將日志存入到HDFS中,下面就說說怎么講solr的索引條件數據存儲到HDFS中。

一、准備工作

  • Solr環境或SolrCloud集群,如果不會安裝可以看一下Solr5.5.4單機部署或者SolrCloud集群部署
  • HDFS分布式系統環境,如果不會安裝的可以看一下Hadoop2.5.0安裝部署
  • 本人就以Solr5.5.4+Tomcat8.5.6單機部署為基礎,下面是我單機Solr信息
名稱 配置
Solr+Tomcat位置 /home/anu/page/tomcat8
Solr_home位置 /home/anu/page/tomcat8/solr_home
HDFS入口地址 hdfs://192.168.219.13:9000

 

二、配置索引數據存儲到HDFS中

 1、啟動HDFS系統,並創建存儲Solr數據路徑

  1)首先啟動HDFS系統,本人使用的是一拖二的HDFS集群,所以都要起起來

  進入namenode節點機器進入./hadoop/sbin 下,使用命令  ./start-all.sh 啟動三台機器上的Hadoop,確保namenode和dataNode都起成功。

  

  其他兩台機器上執行命令: jps能夠查看到NodeManager和DataNode兩個線程,如果存在說明我們的HDFS啟動成功

   

  2)使用命令: hadoop fs -ls / 查看HDFS根目錄下的文件,如果你的根路徑下有文件就可以看到文件啦!

  

  3)使用命令: hadoop fs -mkdir -p /demo/data 在HDFS根路徑下創建demo供Solr數據存儲文件

  

 

 2、修改Solr_home下面文件配置

   1)進入solr_home目錄下,使用命令: mkdir demo  創建demo目錄,同時將./tomcat8/solr_home/configsets/basic_configs下的所有文件都拷貝到剛剛新建的demo下面

  

  2)文件拷貝后,進入./tomcat8/solr_home/demo/conf/ 目錄下,修改solrconfig.xml文件

  替換原有directoryFactory配置為如下

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

  替換原有lockType為如下:

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

  替換原來dataDir為如下:

<dataDir>${solr.data.dir:hdfs://192.168.219.13:9000/demo/data}</dataDir>

  注意:上面所有  hdfs://192.168.219.13:9000 都要換成自己的HDFS入口地址,

 hdfs://192.168.219.13:9000/demo/data  正是我們前面創建的存儲solr數據的路徑

    

  

  

 

 3、替換Solr中的HDFS使用相關jar包

  1)刪除solr自身原有的jar包,進入tomcat8/webapps/solr/WEB-INF/lib 下刪除hadoop-*.jar、protobuf-java-*.jar、htrace-core-3.0.4.jar 

rm hadoop-*.jar
rm protobuf-java-*.jar
rm -rf htrace-core-3.0.4.jar

  

  2)從Hadoop-2.5.0的share文件夾下分別得到對應的jar到tomcat8/webapps/solr/WEB-INF/lib 目錄下,主要jar包如下:

hadoop-common-2.5.0-cdh5.2.0.jar(share/hadoop/common)
hadoop-hdfs-2.5.0-cdh5.2.0.jar(share/hadoop/hdfs)
hadoop-auth-2.6.0.jar(share/hadoop/common/lib)
hadoop-annotations-2.6.0.jar(share\hadoop\common\lib)
commons-collections-3.2.2.jar(share\hadoop\common\lib)
protobuf-java-2.5.0.jar(share\hadoop\common\lib)

   

 

 4、創建core或collection(單機中創建core,集群中創建collection)

   1)啟動Solr,在瀏覽器中訪問http://192.168.219.12:8080/solr/index.html  Solr管理頁面

 

    2)新建一個core或collection,起名為我們創建的目錄名字demo

  

    3)最后看到這個位置data是指向HDFS的路徑地址

   

 

 到此就大功告成啦!

 

注意:在此過程中可能會出現錯誤,大家可以自己到solr日志下面看一下具體是什么錯誤,具體問題具體解決。下面說一下我在裝的時候遇到的問題。

(1)本人是第一次配置這個東東,第一次就出現了錯誤,通過日志看到有java.lang.OutOfMemoryError: Direct buffer memory tomcat錯誤。

解決方案:這個由於內存不足造成的,因為我是在我的虛擬機做實驗的,虛擬機裝的東西有點多,所以報內存溢出,后來關閉幾個程序,再調整一下tomcat的內存就完美解決啦。

 

配置完后可以看一下Solr下面的HDFS數據備份和還原,后面可能有用。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM