Crate安裝和配置

關鍵字:elastichsearch、crate.io、sql

之前介紹過ElasticSearch,它部署簡單,搜索聚合功能強大,而且和其他大數據框架整合起來使用,有一點比較不方便,就是查詢都需要通過JSON作爲請求Body來提交查詢,請求響應也是JSON,作爲習慣使用SQL的我,迫不及待的試用了一下Crate(crate.io),它是在ElasticSearch之上封裝了SQL接口,用戶可以通過SQL語句來完成搜索和統計,支持的SQL語法還蠻多的,很想MySQL。

本文記錄一下Crate的安裝配置(兩個節點的Crate集羣)和簡單使用。

下載和安裝Crate

可以從https://cdn.crate.io/downloads/releases/nightly/下載crate的最新版本。

下載後解壓到指定目錄即可。

配置Crate

Crate的配置和ElasticSearch非常類似,以兩個節點的Crate集羣爲例。

cd $CRATE_HOME/conf

編輯crate.yml,修改以下參數:

  1. cluster.name: lxw1234_crate
  2. node.name: crate_node_17
  3. index.number_of_replicas: 2
  4. path.conf: /home/liuxiaowen/crate-0.54.0/config
  5. path.data: /home/liuxiaowen/crate-0.54.0/data
  6. path.work: /home/liuxiaowen/crate-0.54.0/tmp
  7. path.logs: /home/liuxiaowen/crate-0.54.0/logs
  8. path.plugins: /home/liuxiaowen/crate-0.54.0/plugins
  9.  
  10. network.bind_host: 172.16.212.17
  11. network.publish_host: 172.16.212.17
  12. network.host: 172.16.212.17
  13. gateway.recover_after_nodes: 2
  14. discovery.zen.minimum_master_nodes: 2
  15. gateway.expected_nodes: 2
  16. discovery.zen.ping.timeout: 10s
  17. discovery.zen.fd.ping_interval: 10s

編輯$CRATE_HOME/bin/crate.in.sh,配置節點使用的內存,根據機器自身內存而定,最大內存一般不要超過物理內存的50%;

CRATE_MIN_MEM=8g

CRATE_MAX_MEM=16g

配置JAVA_HOME,我這裏使用了jdk1.8.0_65

啓動Crate

在兩個節點上,
cd CRATEHOME/bin./cratedCrate,path.logs { cluster.name }.log命名的日誌。

使用Crate命令行

類似於其他數據庫,Crate提供了一個命令行來供用戶執行SQL查詢。
cd $CRATE_HOME/bin
執行./crash進入命令行;

crate

在Crate命令行使用\c 172.16.212.17:4200連接到Crate;

創建表

在Crate命令行使用下面的SQL語句創建表:

  1. CREATE TABLE sitelog (
  2. cookieid STRING,
  3. siteid STRING,
  4. visit_id STRING,
  5. pv LONG,
  6. is_return_cookie INTEGER,
  7. is_bounce_visit INTEGER,
  8. visit_stay_times INTEGER,
  9. visit_view_page_cnt INTEGER,
  10. region STRING,
  11. city STRING
  12. );
  13.  
  14.  
  15. cr> show tables;
  16. +------------+
  17. | table_name |
  18. +------------+
  19. | sitelog |
  20. +------------+
  21. SHOW 1 row in set (0.019 sec)
  22. cr>
  23.  

從外部批量加載數據

crate提供了一個COPY命令,用於從外部文本文件加載數據到表中,但只支持JSON格式的文本,比如:

  1. [liuxiaowen@dev sitelog]$ head sitelog_000005_0_9.json
  2. {"cookieid" : "DE9C68B401DBE5566A9676","siteid" : "633","visit_id" : "805cdab5-8361-4134-9bbe-7c54771d4dc8","pv" : 1,
  3. "is_return_cookie" : 0,"is_bounce_visit" : 1,"visit_stay_times" : 0,"visit_view_page_cnt" : 1,"region" : "江蘇","city" : "徐州"}
  4. {"cookieid" : "DE9C68B40422A9566A68F2","siteid" : "633","visit_id" : "7f844323-e0c0-48b4-bc1b-69055ac3c308","pv" : 1,
  5. "is_return_cookie" : 0,"is_bounce_visit" : 1,"visit_stay_times" : 0,"visit_view_page_cnt" : 1,"region" : "江蘇","city" : "徐州"}
  6. {"cookieid" : "DE9C68B4066B7F566A6F36","siteid" : "633","visit_id" : "045c3a13-41bf-45c4-93ce-7725a00ada5f","pv" : 1,
  7. "is_return_cookie" : 0,"is_bounce_visit" : 1,"visit_stay_times" : 0,"visit_view_page_cnt" : 1,"region" : "江蘇","city" : "徐州"}
  8.  

JSON對象中的k需要和表的字段名稱相同。

在Crate命令行使用COPY命令加載數據:

crate

加載的速度還是非常快的。

SQL查詢

可以從Crate官網上查看支持的SQL語法:https://crate.io/docs/reference/sql/dql.html

crate

crate

值得關注的是,Crate在做COUNT DISTINCT查詢的時候,查出來的是真實去重後的數,沒有誤差,但查詢響應時間要慢一些,有待研究。

Crate的監控界面

Crate提供了一個比較炫的監控界面,非常有用,Crate集羣啓動後,在瀏覽器輸入:http://172.16.212.102:4200/admin/ 進入監控界面:

OverView頁面:集羣整體健康及負載狀況。

crate

Tables頁面:Crate中所有Table及Schema的情況。

crate

Cluster頁面:Crate集羣的節點列表及每個節點的健康狀況。

crate

Crate的不足

目前只是簡單安裝試用了一下,發現了幾點不足:

  1. 不支持子查詢;
  2. 不支持諸如CASE WHEN、IF ELSE的邏輯判斷語法,特別是在聚合函數中;
  3. 內置的ElasticSearch版本太低;
  4. 沒有和其他大數據組件的整合。

但它的查詢性能還是很不錯的,關鍵是SQL方便啊。

您可以關注 lxw的大數據田地 ,或者 加入郵件列表 ,隨時接收博客更新的通知郵件。

 

如果覺得本博客對您有幫助,請 贊助作者

轉載請註明:lxw的大數據田地 » SQL for ElasticSearch–Crate.io安裝配置和體驗

喜歡 (7)分享 (0)
</article>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章