CDH key value index lily安裝配置
Key-Value Store Indexer
這個元件非常關鍵,是Hbase到Solr生成索引的中間工具。
Lily HBase Indexer是一款靈活的、可擴充套件的、高容錯的、事務性的,並且近實時的處理HBase列索引資料的分散式服務軟體。它是NGDATA公司開發的Lily系統的一部分,已開放原始碼。Lily HBase Indexer使用SolrCloud來儲存HBase的索引資料,當HBase執行寫入、更新或刪除操作時,Indexer通過HBase的replication功能來把這些操作抽象成一系列的Event事件,並用來保證寫入Solr中的HBase索引資料的一致性。並且Indexer支援使用者自定義的抽取,轉換規則來索引HBase列資料。Solr搜尋結果會包含使用者自定義的columnfamily:qualifier欄位結果,這樣應用程式就可以直接訪問HBase的列資料。而且Indexer索引和搜尋不會影響HBase執行的穩定性和HBase資料寫入的吞吐量,因為索引和搜尋過程是完全分開並且非同步的。Lily HBase Indexer在CDH5中執行必須依賴HBase、SolrCloud和Zookeeper服務。
1.開啟Hbase的複製功能
2、 Hbase表需要開啟REPLICATION複製功能
create 'record', {NAME
=> 'data', REPLICATION_SCOPE => 1}
3、
生成實體配置檔案
solrctl
instancedir --generate /var/lib/solr/solr_config_search_new
4、編輯/var/lib/solr/solr_config_search_new 下生成好的scheme.xml檔案
field
中name是solr中的列名,type是列的型別,indexed是是否建索引,stored是是否儲存資料
5、建立collection例項並配置檔案上傳到zookeeper,命令
solrctl
instancedir --create
waslog /var/lib/solr/solr_config_search_new
6、上傳到zookeeper之後,其他節點就可以從zookeeper下載配置檔案。接下來建立collection,命令:
solrctl
collection --create waslog -s 15 -r 2 -m 50
7.建立morphline-hbase-mapper.xml配置檔案,誰便放在上面路徑下。
table
是hbase裡面的表名,morphlineId的value,要作為下面Morphlines
檔案的ID
<?xml
version="1.0"?>
<indexer table="record" mapper="com.ngdata.hbaseindexer.morphline.MorphlineResultToSolrMapper">
<!-- The relative or absolute path on the local file system to the morphline configuration file. -->
<!-- Use relative path "morphlines.conf" for morphlines managed by Cloudera Manager -->
<param name="morphlineFile" value="morphlines.conf"/>
<!-- The optional morphlineId identifies a morphline if there are multiple morphlines in morphlines.conf -->
<param name="morphlineId" value="wasMap"/>
</indexer>
8、修改Morphlines 檔案, 具體操作:進入Key-Value Store Indexer面板->配置->檢視和編輯->屬性-Morphline檔案
morphlines : [
{
id : wasMap
importCommands : ["org.kitesdk.**", "com.ngdata.**"]
commands : [
{
extractHBaseCells {
mappings : [
{
inputColumn : "data:c1"
outputField : "c1"
type : string
source : value
}, {
inputColumn : "data:c2"
outputField : "c2"
type : string
source : value
}
]
}
}
{ logDebug { format : "output record: {}", args : ["@{}"] } }
]
}
]
inputColumn是hbase裡面的列族和列
outputField是solr中的列,也就是上面scheme.xml檔案配置的field
9、建立hbase-indexer(lily跟solr collection進行關聯起來)
hbase-indexer add-indexer \--name LengJingSearch2 \
--indexer-conf /data/keyValue/conf/morphline-hbase-mapper.xml \
--connection-param solr.zk=test1,test2,test3/solr \
--connection-param solr.collection=waslog \
--zookeeper test1:2181,test2:2181,test3:2181
10、往hbase寫資料
put
'record', 'row1', 'data:c1', 'value1'