本人最近使用SolrCloud存儲索引日誌條件,便於快速索引,由於個人索引條件較多,天天日誌記錄較大,索引想到將日誌存入到HDFS中,下面就說說怎麼講solr的索引條件數據存儲到HDFS中。html
名稱 | 配置 |
Solr+Tomcat位置 | /home/anu/page/tomcat8 |
Solr_home位置 | /home/anu/page/tomcat8/solr_home |
HDFS入口地址 | hdfs://192.168.219.13:9000 |
1)首先啓動HDFS系統,本人使用的是一拖二的HDFS集羣,因此都要起起來java
進入namenode節點機器進入./hadoop/sbin 下,使用命令 ./start-all.sh 啓動三臺機器上的Hadoop,確保namenode和dataNode都起成功。node
其餘兩臺機器上執行命令: jps可以查看到NodeManager和DataNode兩個線程,若是存在說明咱們的HDFS啓動成功web
2)使用命令: hadoop fs -ls / 查看HDFS根目錄下的文件,若是你的根路徑下有文件就能夠看到文件啦!瀏覽器
3)使用命令: hadoop fs -mkdir -p /demo/data 在HDFS根路徑下建立demo供Solr數據存儲文件tomcat
1)進入solr_home目錄下,使用命令: mkdir demo 建立demo目錄,同時將./tomcat8/solr_home/configsets/basic_configs下的全部文件都拷貝到剛剛新建的demo下面app
2)文件拷貝後,進入./tomcat8/solr_home/demo/conf/ 目錄下,修改solrconfig.xml文件webapp
替換原有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爲以下:oop
<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數據的路徑
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)
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數據備份和還原,後面可能有用。