cloudera search 用來在 hadoop 基礎上建立索引和全文檢索,本文主要記錄如何安裝 cloudera search 的過程,其中也包括如何安裝和啟動 zookeeper、solr、mapreduce等工具和服務。
cloudera search 核心部件包括 hadoop 和 solr,後者建立在 lucene 之上;而 hadoop 也正是在06年正式成為 lucene 的一個子項目而發展起來的。
通過 tika, cloudera search 支援大量的被廣泛使用的檔案格式;除此之外,cloudera search 還支援很多其他在hadoop應用中常用的資料,譬如 avro, sequencefile, 日志檔案等。
用來建立索引和全文檢索的資料可以是來自于 hdfs,譬如日志檔案,hive 或者 hbase 的表等等(通過內建 ngdata 的 lily 項目,對 hbasae 的支援工作也在進行中)。或者通過結合使用 flume 采集于外部資料源,通過一個新支援的 flume sink 直接寫到索引庫裡;同時還可以充分利用 flume 來對要建立索引的資料進行各種預處理,譬如轉換,提取建立中繼資料等。
建立的索引存儲于 hdfs。這給搜尋帶來了易于擴充,備援和容錯的好處。此外,我們還可以運作 mapreduce 來對我們所需要檢索的資料進行索引,提供給 solr。
作業系統:<code>centos6.5</code>
hadoop:<code>cdh5.3.0</code>
在三個節點上安裝 solr-server:
安裝 spark indexer:
安裝 mapreduce tools:
安裝 lily hbase indexer:
注意:lily hbase indexer和 cdh5 工作的時候,你需要在運作 mapreduce 任務之前運作下面指令: <code>export hadoop_classpath=<path to hbase-protocol-**.jar></code>
修改 solr 配置檔案 <code>/etc/default/solr</code> 中 zookeeper 連接配接位址:
修改 solr 配置檔案 <code>/etc/default/solr</code> 中 hdfs 連接配接位址:
設定 hdfs 配置檔案目錄:
如果你配置了 kerberos,則在 kerberos 伺服器上為每個安裝 solr 的節點先生成 solr 的憑證:
然後,将 solr.keytab 拷貝到 /etc/solr/conf:
最後,修改每個安裝了 solr 節點的 /etc/default/solr,例如在 cdh1節點上修改為:
在 hdfs 中建立 <code>/solr</code> 目錄:
如果開啟了 kerberos,則先擷取 hdfs 服務的憑證在運作:
內建 sentry,取消 /etc/default/solr 下面注釋:
內建 hue,取消 /etc/default/solr 下面注釋:
初始化 zookeeper namespace:
注意:你可以添加 <code>--force</code> 參數強制清空 zookeeper 資料,清空之前,請先停止 zookeeper 叢集。
在每一個安裝了 solr server 的節點上運作:
通過下面指令檢視 solr 是否啟動成功:
上面用到了 solrctl 指令,該指令用來管理 solrcloud 的部署和配置,其文法如下:
可選參數有:
<code>--solr</code>:指定 solrcloud 的 web api,如果在 solrcloud 叢集之外的節點運作指令,就需要指定該參數。
<code>--zk</code>:指定 zk 叢集位址。
<code>--help</code>:列印幫助資訊。
<code>--quiet</code>:靜默模式運作。
command 指令有:
<code>init [--force]</code>:初始化配置。
<code>instancedir</code>:維護實體目錄。可選的參數有:
<code>--generate path</code>
<code>--create name path</code>
<code>--update name path</code>
<code>--get name path</code>
<code>--delete name</code>
<code>--list</code>
<code>collection</code>:維護 collections。可選的參數有:
<code>--create name -s <numshards> [-c <collection.configname>] [-r <replicationfactor>] [-m <maxshardspernode>] [-n <createnodeset>]]</code>
<code>--delete name</code>: deletes a collection.
<code>--reload name</code>: reloads a collection.
<code>--stat name</code>: outputs solrcloud specific run-time information for a collection.
``–list`: lists all collections registered in solrcloud.
<code>--deletedocs name</code>: purges all indexed documents from a collection.
<code>core</code>:維護 cores。可選的參數有:
<code>--create name [-p name=value]...]</code>
<code>--reload name</code>: reloads a core.
<code>--unload name</code>: unloads a core.
<code>--status name</code>: prints status of a core.
<code>cluster</code>:維護叢集配置資訊。可選的參數有:
<code>--get-solrxml file</code>
<code>--put-solrxml file</code>
在一個節點上(例如 cdh1)生成配置檔案:
注意:你可以在 <code>/var/lib/solr</code> 建立目錄,維護配置檔案。
執行完之後,你可以修改 $home/solr_configs/conf 目錄下的配置檔案,其目錄下檔案如下。
建立 collection1 執行個體并将配置檔案上傳到 zookeeper:
你可以通過下面指令檢視上傳的 instance:
上傳到 zookeeper 之後,其他節點就可以從上面下載下傳配置檔案。
接下來,還是在 cdh1 節點上建立 collection,因為我的 solrcloud 叢集有三個節點,故這裡分片數設為3,并設定副本為1,如果有更多節點,可以将副本設定為更大的一個數:
1)開啟 hbase replication
lily hbase indexer 的實作依賴于 hbase的replication,故需要開啟複制。将 <code>/usr/share/doc/hbase-solr-doc*/demo/hbase-site.xml</code>檔案的内容拷貝到 <code>hbase-site.xml</code>,注意:删除掉 <code>replication.replicationsource.implementation</code> 參數配置。
2)将 hbase-solr-indexer 服務指向 hbase 叢集
修改 <code>/etc/hbase-solr/conf/hbase-indexer-site.xml</code>,添加如下參數,其值和 <code>hbase-site.xml</code> 中的 <code>hbase.zookeeper.quorum</code> 屬性值保持一緻(注意添加上端口):
最後再重新開機服務:
本文内容主要介紹了如何不使用 cloudera manager 來安裝 cloudera search,下篇文章将介紹如何使用 cloudera search。