前言:谈到当下应用最广的大数据技术,很多人都会说是数据分析;而体现大数据分析能力的则是OLAP。在大数据高速发展时期,多个技术团队基于OLAP的应用需求,开发出多种OLAP技术,如Hive、SparkSql、FlinkSql、Impala、Kylin、ClickHouse、Doris等,或者在实现其他应用需求的时候,发现自带OLAP应用能力,如ES。将OLAP需求拆解,可以分类两类:第一类是在存储系统的基础上,发展灵活的OLAP计算引擎,这类引擎可灵活解析多种存储格式的数据,如MapReduce,SparkSQL、FlinkSQL;第二类是基于固定的存储格式或自建存储系统,自定义查询引擎的,如Hive、impala、Kylin、Druid、ClickHouse、Doris。本文将以第二类OLAP技术为主,第一类为辅助,分析OLAP各阶段发展原因和各技术的特性。
一、OLAP研发目的和功能分析
技术的发展源于当下技术状态和应用需求,OLAP引擎的发展历史也如此。大数据技术的起点源于谷歌的三驾马车,2000年左右,谷歌的市场应用服务产生大量数据,对大量数据的存储、处理、分析、应用成为了当时的需求;2005年前后,谷歌发布了大数据领域三篇划时代论文,构建了三个基础能力:分布式文件存储系统GFS,分布式计算框架MapReduce与早期大数据领域存算一体的BigTable;这三种技术就是如今Hadoop基础。这三种技术架构,基本形成了后续OLAP发展基调:存算分离和存算一体。
1.1 Hive的出现和特性
我们回看一下2008年的技术环境,当时的OLAP大数据技术只有HDFS和MapReduce(Hbase偏向数据应用,不算OLAP)。
当时面临着什么问题呢?
对大数据的分析应用,当时除此这两种技术之外,别无选择,但是这套方案对于多数企业来说太重了,特别是MapReduce的编程太繁琐。在没有大数据技术的时候,类似的场景都是用OLTP数据库做处理,OLTP数据库是存算一体的,只需要简单的写DSL语句,就可以完成传统业务的数据分析,这是一种简单又高效的方式,但当时没有这样大数据场景的数据库。
所以当时发展产生了两个方向:一个是在hadoop生态基