CloudComputing云计算SparkSQL:基于内存的大数据处理引擎文/高彦杰,陈冠诚作为Shark的下一代技术,SparkSQL的性能已完全超过Shark,且由于底层机制相同,用户可以做到无缝迁移,而受到用户的青睐
本文将深入分析SparkSQL架构思路和优化策略,并与同类产品进行比较
104在刚刚结束的SparkSummit2014上,Databricks宣布不再支持Shark的开发,全力以赴开发Shark的下一代技术SparkSQL,同时Hive社区也启动了HiveOilSpark项目,将Spark作为除MapReduce~Tez之外的新执行引擎
根据BigDataBenchmark测试对比数据,Shark的InMemory性能可达到Hive的100倍,即使是OnDisk也能达到1O倍的性能提升,是Hive的强有力的替代解决方案
而作为Shark进化版本的SparkSQL,在最新测试中的性能已超过Shark
本文中,统称SparkSQL、Shark和HiveonSpark为SQLonSpark
虽然Shark不再开发,但其架构和优化仍有借鉴意义,因此文章中也会有所涉及
为什么使用SparkSQL由于Shark底层依赖于Hive,所以这个架构的优势是传统Hive用户可以将Shark无缝集成进现有系统运行查询负载
但也有一些问题:随着版本升级,查询优化器依赖于Hive,不方便添加新的优化策略,需要进行另一套系统的学习和二次开发,学习成本很高
另一方面,MapReduce是进程级并行,~HHive在不同的进程空间会使用一些静态变量,当在同一进程空1司进行多线程并行执行时,多线程同时写同名称的静态变量会产生一致性问题,所以Shark需要使用另一套独立维护的Hive源码分支
为了解决这个问题,AMPLab和Databricks利用Catalyst开发了SparkSQL