数据仓库系统,Shark 0.2 发布

jopen 11年前

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;