数据仓库系统,Shark 0.2 发布
jopen 12年前
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;