多维分析技术在大数据环境下的发展

2018-03-19 16:22眭冠男
电脑知识与技术 2018年4期
关键词:大数据

眭冠男

摘要:在大数据时代,涌现了大量基于Hadoop的多维分析技术,分析性能不断提升,该文选取了几项有代表性的技术进行了介绍,并分析了它们的特点。最后,对基于大数据的多维分析技术进行了总结和展望。

关键词:多维分析;OLAP;大数据

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2018)04-0004-02

1 概述

随着多维分析技术的发展,分析系统的数据量呈指数级增长,传统的多维分析技术无论在存储方面还是在大规模数据技术方面都遭遇到性能瓶颈,同时对数据分析的精确性和速度等要求逐渐提高,已经无法满足企业的要求。近年来,大数据技术得到了快速的发展,分布式文件系统HDFS和MapReduce编程模型成为了应对海量数据的有效技术,Hadoop生态圈的迅速成熟,Hive、HBase、HadoopDB 等 NoSQL等技术相继出现,上述技术都提供了海量数据多维分析功能,在各领域得以广泛应用。本文在综述多维分析技术发展的基础上,重点对几个有代表性的多维分析技术进行了介绍。可以预见,未来在大数据多维分析系统中,这些技术会在市场中占有重要位置。

2 传统多维数据分析技术介绍

多维数据分析技术是对数据的收集、管理和分析的过程,通过它使企业的数据分析人员获得知识,为公司做出决策提供重要的支持。多维分析系统的后台通常是由数据库或数据仓库存储数据,经过OLAP服务器实现数据分析,而前台通过图表、表格等展示工具来为用户展示,它是多种计算机技术和信息处理技术的组合,技术主要包括:数据库和数据仓库技术(Data Warehousing)、数据抽取转换加载技术(ETL-Extraction Transformation Loading)、联机分析处理技术(OLAP-Online Analytical Process)、数据挖掘技术(Data Mining)、前端展现技术等。

联机分析处理(On-Line Analytical Processing OLAP)是一种共享多维信息的快速分析技术[1],也是进行多维分析的重要技术。OLAP定义了事实表和维表,通过事实表和维表构建多维数据模型,然后经过OLAP服务器将数据存储在OLAP服务器或者数据仓储中,数据分析人员可以通过前端展示工具,从多个维度的组合、粒度的划分等等将数据以图表的方式展示出来,供决策人员和高层管理人员进行分析。OLAP可以完成的查询操作有多表关联,可以使用聚合函数如count,sum,avg等,它的多维分析操作还有切片、切块、钻取、旋转等,提高了分析的灵活性,满足了不同分析的需求。

OLAP的数据存储格式主要有3种形式[2],分别是ROLAP,MOLAP和HOLAP。

3 大数据环境下的多维分析技术

传统的多维分析系统也存在着许多不足,业务要求经常改变,这样就导致将业务模型也进行调整,而业务的维度和度量一旦发生变化,OLAP中的多维数据模型也需要重新构建;业务人员在同一个模型上进行多维分析,同时也限制了業务人员分析问题的角度,从分析数据中隐含的信息变成了普通的日常报表;数据的大量增加使传统的多维分析系统快速准确的工作。

使用Hadoop[4]进行多维分析,首先能解决上述问题,HDFS有着优秀的高容错和高吞吐量的特点,可以存储的文件支持高速增长的数据,解决了数据存储问题;其次MapReduce[5]有很强的分布式并行化处理能力,在上千台机器组成的集群上运行处理大规模数据,它并不会由于数据的增加使开销大大增加,可以很好的完成OLAP的计算工作。总之,Hadoop可以支持各种结构和非结构的数据存储和计算,包含了各种各样的维度组合,即使维度的数量大大增加,也不会显著影响分析的性能。

Hadoop在可伸缩性、健壮性、计算性能和成本上具有无可替代的优势,事实上已成为当前互联网企业主流的大数据分析平台,以此为基础,出现了大量基于大数据的多维分析方法[6]。

3.1 Hive

在大数据时代,Hadoop作为一个开源框架,已经成为了一种标准规范,越来越多的工具都在围绕着Hadoop来工作。Hive[7] 是建立在 Hadoop 上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL ),这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的工具。

Hive由元存储,驱动,查询编辑器,执行引擎以及对外提供接口的客户端组件组成,HQL查询语句从客户端提交后,经过查询编译器,运用 元存储中的元数据进行类型检测和语法分析,生成一个逻辑方案,然后通过的优化处理,产生一个 MapReduce 任务。

Hive中提供的SQL语句也称为HiveQL,其中HiveQL提供了数学和统计函数、字符串函数、日期函数、条件函数、聚集函数以及处理XML和JSON的函数,用户也可以自定义函数完成自己的需求。Hive在运行的过程中有良好的容错性,如果一个节点出错,SQL查询仍然可以完成。但是HiveQL相比SQL同样有着许多不足,Hive中的数据无法进行更新和删除,所以Hive对事务支持比较弱,无法进行联机事务处理,只能进行联机分析处理;同时由于Hive中的查询时间花费开销大,所以不能用在实时交互系统中。

3.2 Impala

虽然Hive为大数据多维分析提供了支持,但是由于Hive的底层是MapReduce任务,计算过程中I/O操作过多,运行效率比较低,为了提高SQL-on-Hadoop的效率,大量的SQL-on-Hadoop工具开始产生。Apache Impala[9]是由Cloudera开发并开源的一款基于HDFS/Hbase的MPP SQL引擎,它拥有和Hadoop一样的可扩展性、也提供了类SQL语法,能查询存储在Hadoop的HDFS和HBase中的PB级大数据。在多用户场景下也能拥有较高的响应速度和吞吐量。

MPP是海量数据实时分析架构,传统的基于MPP的数据库中每一个节点都会安装独立的操作系统和数据库,当进行查询的时候,将计算分到各个节点中进行,然后将结果返回并合并。在Impala中,各个节点不在执行MapReduce任务,这样大大减少了时间消耗。

Impala自身包含三个模块:Impalad、Statestore和Catalog。Statestore和Catalog主要进行元数据的管理和监控,Impalad模块完成查询任务。在进行数据查询时,用户程序通过Impala 客戶端发送Sql语句给Impala;当Impala中任意一个节点收到请求后,此节点编作为此次查询过程的协调器,然后对用户的请求进行解析,根据元数据了解各个节点的状态,将任务分发,优化执行计划,每个节点对数据进行访问,可以直接从HDFS读取,也可以从HBase获取,最后将结果汇总后返回到客户端。

Impala和Hive对比,性能更加优秀,查询的效率提高了3到90倍,Impala不再使用MapReduce运算来得到数据,而是通过生成执行计划树,将计划分到各个节点执行返回数据,中间的结果不会写到磁盘,这样就减少了大量开销;Impala同时还具有灵活性,本地数据本地化处理,降低网络的瓶颈。但是它的缺点同样有不少,首先容错性低,如果一个节点失败即代表整个查询失败,内存溢出导致任务失败,不支持SerDe和用户自定义函数UDF、UDAF等。

3.3 Sparksql

Spark SQL 是一个用来处理结构化数据的spark[10]组件。它提供了一个叫做DataFrames的可编程抽象数据模型,并且可被视为一个分布式的SQL查询引擎。sparksql执行sql任务的运算引擎是spark core,从而充分利用spark内存计算及DAG模型的优势,大幅提升海量数据的分析查询速度[11]。

core、catalyst、hive、hive-Thriftserver是SparkSQL的四个模块,core处理数据的输入输出,从不同的数据源获取数据(RDD、Parquet、json等),将查询结果输出成schemaRDD;catalyst处理查询语句的整个处理过程,包括解析、绑定、优化、生成逻辑执行计划和物理查询计划,最后转换为有向无环图执行查询, catalyst处于最核心的部分,其性能优劣将影响整体的性能;hive对hive数据的处理,hive-ThriftServer提供CLI和JDBC/ODBC接口。

除了catalyst在查询上进行了优化外,SparkSQL在存储上也进行了优化,内存列存储,首先数据的存储方式是列存储,数据加载到了内存中进行缓存,在查询的时候可以直接从内存中读取;为了更高效地利用内存,还可以对数据采用编码压缩方法降低硬盘开销、内存开销和网络传输开销,如PassThrough、RunLengthEncoding等。

3.4 Apache Kylin

Hive、Impala、SparkSQL的主要技术是“大规模并行处理”(Massive Parallel Processing,MPP)和“列式存储”(Columnar Storage)。这些技术使得Hadoop上的SQL查询时间从小时提高到了分钟。但是分钟级别的查询响应并不能满足实时交互的需求。而且有些具体的场景分析可能需要几小时甚至几天才能完成,效率低下。

Apache Kylin[12]是一个由中国人开发的分布式多维分析引擎,提供了Hadoop之上的SQL查询接口及多维分析能力以支持超大规模数据。Kylin的核心思想是预计算,即对多维分析可能会用到的度量进行预计算,将计算好的结果保存为cube存储在HBase中,供查询的时候访问。从而把高复杂度的聚合运算、多表连接等操作转换为对预计算后的cube查询,这使Kylin具有很好的快速查询和高并发能力,Kylin的工作原理本质是MOLAP,也就是多维立方体分析。

Kylin的OLAP引擎框架的核心模块包括元数据引擎(Metadata Manager)、查询引擎(Query Engine)、REST Server、Routing以及Cube构建引擎。Hive中数据是原始数据,Kylin按照建立的cube模型由Cube构建引擎对数据进行计算,然后将其存到HBase数据库中。

4 结束语

随着数据的增长,传统的关系型数据库由于自身的架构问题,已经无法很好地处理单表10亿行数据,而大数据技术的发展,有HDFS解决了海量数据的存储和MapReduce解决了对数据的处理,到如今众多SQLonHadoop技术的出现,这是大数据思路为我们带来了处理海量数据的新思维。

Hive、Phoenix、Impala、Drill、SparkSQL等技术从底层来看有着很多共性:大规模并行处理技术,列式存储,索引和压缩技术,这些技术提高了对数据的处理能力,但是对数据量不是无限制的,如果数据量过大,查询花费的时间仍然可能到小时级别。以上技术属于ROLAP类型。Apache Kylin除了使用了以上技术外,还引入了Cube模式,通过预计算以空间换时间的方式,将查询时间提高到了毫秒级别,并且不会受到数据量的限制。这类技术属于MOLAP类型。

现在已经有越来越多的企业选择大数据多维分析取代传统的多维分析,将来大数据分析技术也会更加准确、稳定、快速地完成数据分析。与此相应的,用户也将会更简洁快速地从自己的大数据中挖掘出有价值的商业信息。

参考文献:

[1] 赵博,叶晓俊. OLAP性能测试方法研究与实现[J]. 计算机研究与发展,2011(10):1951-1959.

[2] 王付山. OLAP技术研究与发展述评[J]. 软件导刊,2007,(19):11-13.

[3] Big Data.Nature,2008,http://www.nature.com/news/specials/bigdata/index.html. (下转第7页)

(上接第5页)

[4] Manoj Kumar Singh, Dr. Parveen Kumar. Hadoop: A Big Data Management Framework for Storage, Scalability, Complexity, Distributed Files and Processing of Massive Datasets. International Journal of Engineering Research and General Science,2014,2(4):89-95

[5] 谢桂兰,罗省贤. 基于Hadoop MapReduce模型的应用研究[J].微型机与应用,2010(8):4-7.

[6] 杜小勇,陈跃国,覃雄派.大数据与OLAP系统[J].大数据,2015(1):55-67.

[7] Thusoo A, Sarma J S, Jain N, et al. Hive -a petabyte scale data warehouse using hadoop[J]. Inproc Icde, 2010, 41(3):996-1005.

[8] 任春华,廖雪花,唐思娩,等. 基于Hive和Impala的物流运力供应链数据仓库研究[J].物流技术,2016,35(01):124-126.

[9] 徐东辉. Impala整体架构及操作[J].电信网技术,2015(8):15-21.

[10] 黎文阳. 大数据处理模型Apache Spark研究[J].现代计算机:专业版,2015(8):55-60.

[11] 郭景瞻. 图解Spark:核心技术与案例实战[M].电子工业出版社,2017.

[12] 蒋守壮. 基于Apache Kylin构建大数据分析平台[M].清华大学出版社,2016.

猜你喜欢
大数据
浅谈大数据在出版业的应用
“互联网+”对传统图书出版的影响和推动作用
大数据环境下基于移动客户端的传统媒体转型思路