數據倉庫系統,Shark 0.2 發布

jopen 13年前發布 | 13K 次閱讀 Shark

Shark 是一個大型的數據倉庫系統為 Spark 的設計與 Apache Hive 兼容。它處理 Hive QL 的性能比 Apache Hive 快 30 倍。支持 Hive 查詢語言、元存儲、序列化格式和用戶自定義函數。

Shark 0.2是Shark的一個正式發布版本,自從原來的0.1版本原型發布,新的版本帶來了新的特征,性能提升和穩定性

主要變更如下:

Hive兼容性

  • Shark現在和Hive 0.9兼容,引入了很多新的特性,在0.7之上    
  • 完全支持Hive的UDFs和UDAFs
  • Shark 0.2也支持將資源文件(例如:jars)分布到Slaves上,使用Hive的ADD FILE命令

簡化的部署

  • 很大程度上簡化了部署的流程,例如:本地運行Shark包含了一個5分鐘內在本地啟動Shark 0.2的指引
  • 除了運行在Mesos上外,Shark現在也支持Spark的單一部署模式,可以讓你快速的啟動一個集群,而不需要安裝一個外部的集群管理器。單一模式只需要Java在每臺機器上部署,并且部署Spark。

Hive Thrift服務器

  • Yahoo的Ram Sriharsh貢獻了一個Patch,使得Shark的Thrift服務器,和Hive的Thrift服務器兼容
  • Thrift服務器啟動了一個持續運行的服務器,支持多個客戶端連接到它上面。這些客戶端可以訪問相同的倉庫,使用相同的一套緩存表集
  • 為了啟動服務器,在默認的10000端口,只需要輸入:

           $ bin/shark --service sharkserver

 

查詢執行和性能提升 

  • Map端的聚合現在默認打開,如果沒有足夠的Reduce,Shark會默認關閉map端的聚合,用戶再也不必顯式的設置:hive.map.aggr
  • 重寫了Shark的join和group實現代碼,對于有大量唯一Key的查詢,join和group的性能提升了2倍

Spark兼容性

  • Shark 0.2需要Spark 0.6,從而可以利用新版本帶來的新特性和性能提升

其它

  • 如果你覺得_cached是一種hacky的方式,來指示一個表應該在內存中被緩存,shark 0.2支持在創建表的時候,使用表的屬性,指定一個布爾標志來標識是否緩存

           CREATE TABLE myTable TBLPROPERTIES ("shark.cache" = "true") AS SELECT * FROM myInput;

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!