前言
在当前企业生产数据膨胀的时代,数据即使企业的价值所在,也是一家企业的技术挑战所在。所以在海量数据处理场景上,人们意识到单机计算能力再强也无法满足日益增长的数据处理需求,分布式才是解决该类问题的根本解决方案。
而在分布式领域,有两类产品是至关重要的,分别分布式存储和分布式计算,用户只有将两者的特性充分利用,才可以真正发挥分布式架构的存储和计算能力。
本文主要向读者们介绍SequoiaDB(分布式存储)和Spark(分布式计算)两款产品的对接使用,以及介绍在海量数据场景下如何提高统计分析性能。
SequoiaDB介绍
SequoiaDB是国内为数不多的自主研发的分布式数据库,特点是同时支持文档存储和块存储,支持标准SQL和事务功能,支持复杂索引查询、与Hadoop、Hive、Spark都有较深度的集成。目前SequoiaDB已经在Github开源。
SequoiaDB在分布式存储功能上,较一般的大数据产品提供更多的数据切分规则,包括:水平切分、范围切分、多维分区(类似partition分区)和多维切分方式,用户可以根据不用的场景选择相应的切分方式,以提高系统的存储能力和操作性能。
Spark 介绍
Spark 近年来发展特别迅猛,特别在正式发布Spark 1.0 版本后,得到了众多硅谷巨头支持,例如:Cloudera、IBM、Hortonworks、Intel等,而且在Spark 2.0宣布支持TPC-DS99后,使用SparkSQL做大数据处理和分析的开发者越来越多,可以预见,Spark将会成为继Hadoop之后最重要和流行的分布式计算框架。
SparkSQL介绍
SparkSQL是Spark产品中一个组成部分,SQL的执行引擎使用Spark的RDD和Dataframe实现。目前SparkSQL已经可以完整运行TPC-DS99测试,标志着SparkSQL在数据分析和数据处理场景上技术进一步成熟。
SparkSQL和另外一款流行的大数据SQL产品–Hive有相似之处,例如两者都使用Thriftserver作为JDBC服务,两个产品都使用相同的metadata代码(实际上SparkSQL复用了Hive的metadata代码)。但是两款产品还是有本质上的区别,最大的不同点在于执行引擎,Hive默认支持Hadoop和Tez计算框架,而SparkSQL只支持Spark RDD计算框架,但是SparkSQL的拥有更加深度的执行计划优化和处理引擎优化。
SparkSQL与SequoiaDB整合
原理介绍
了解Spark技术原理的读者们应该清楚,Spark本身是一款分布式计算框架。它不像Hadoop一样,同时为开发者提供分布式计算和分布式存储,而是开放了存储层的开发接口,只要开发者按照Spark的接口规范实现了接口方法,任何存储产品都可以成为Spark数据计算的来源,同时也包括SparkSQL的数据来源。
SequoiaDB是一款分布式数据库,能够为用户存储海量的数据,但是如果要对海量数据做统计、分析,还是需要借助分布式计算框架的并发计算性能,提高计算效率