1. 程式人生 > >CDH key value index lily安裝配置

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'