APP下载

基于Hadoop平台的大数据可视化分析实现与应用

2022-08-18李林国查君琪李淑敬

关键词:分布式可视化数据库

李林国,查君琪,赵 超,叶 文,李淑敬

(阜阳师范大学 信息工程学院,安徽 阜阳 236041)

1 概述

科学计算可视化是一种将科学计算问题以可见图表、动画等方式呈现的技术手段.根据应用层级和分析对象的差别,它分为数据可视化、信息可视化和知识可视化.随着大数据技术的应用越来越广泛,可视化技术能够将浩瀚、枯燥的大数据以更加鲜活的方式呈现,并且可以基于偏好或应用领域呈现更多的大数据细节和有效信息.然而传统的数据可视化技术在处理海量、异构和多维度数据时遇到了较大瓶颈[1].因此,大数据可视化技术已经成为大数据分析领域的研究热点,它以人类认知规律和实际需求为出发点,通过计算机技术将复杂的大数据进行信息处理,根据应用目的,将核心数据或信息以可视化的方式呈现,在利于应用大数据信息的同时,提高大数据信息的可读性、可见性,从而提高大数据的实践应用价值.

众所周知,大数据已经深入应用到社会生活的各个领域,如零售、金融、餐饮、通信、电子政务、辅助医疗、体育健康、休闲娱乐等[2].在目前最流行的大数据处理平台中,Hadoop是最受关注、运用较多的一种[3].其中Rackspace Hosting公司以基于Hadoop开发的日志分析系统替代基于MySQL的日志处理模式,实现了大数据的有效分析及应用[4-5].Oracle公司利用 Hadoop设计了Elalytics等系统平台,完成了Facebook等社交平台大数据的处理和分析[6].此外,亚马逊、阿里巴巴、京东、拼多多等线上交易平台通过用户行为数据分析实现了购物推荐等便捷服务功能[7-8],腾讯也利用Hadoop为QQ、微信等软件产生的大数据进行分析和挖掘,总结用户的兴趣偏好等有效信息,从而不断完善软件功能和服务[9-10].作为世界最大的中文搜索引擎,百度通过搭建Hadoop集群完成广告精准投放、用户的满意度分析等[11].通过上述基于Hadoop的大数据相关应用综述,大数据处理已经深入人们日常生活的方方面面,因此研究其可视化技术将变得越来越具有实际应用价值.

2 大数据可视化技术分析

2.1 Hadoop平台核心技术

Hadoop是由Apache软件基金会开发的一款分布式开源数据和计算框架,它支持Java等程序设计语言的应用,其在大数据处理和复杂数据集存储等方面性能卓越[12].狭义上的Hadoop专指HadoopCore,它由HDFS(Hadoop Distributed File System,Hadoop分布式文件系统)和MapReduce引擎(可进行并行处理的架构)组成.另外,更加广泛意义上的Hadoop用于泛指由Hadoop核心平台所形成的生态系统(Hadoop Ecosystem),去除Hadoop本身的核心框架(HDFS+MapReduce),还包括Hive、HBase等数据仓库、Sqoop等数据迁移配件和数据可视化工具等[13].接下来,本文将逐一介绍和分析分布式文件系统、并行计算结构,及数据仓储、数据迁移和数据可视化等方面的核心技术.

2.1.1 HDFS文件系统与MapReduce并行处理结构

大数据系统的核心仍然是基于初始收集的海量数据,因此数据的存储模式是大数据系统的基础和核心.基于大数据的分布式特征,Hadoop使用的存储系统为HDFS,其核心正是分布式的.在具体设计中,大数据首先被切块(一般每块大小为64兆),然后按照分布式分散存储的理念,将这些切块数据分别存储到Hadoop系统的不同集群或计算机上.在读取系统数据时,这种分布式存储结构能够自由地实现从不同机器或集群中并行提取相关切块文件,从而提高大数据提取速度.另外区别于其他文件系统,它以流的结构存取数据,且只支持尾部追加数据.

在数据安全性方面,HDFS采用备份机制,将同一块数据分别存储到不同的机器或集群中,一旦某个机器或集群出现故障,可以轻松地从其他备份机器或集群中重新恢复数据.这种设计极大地提高了文件系统的数据安全性.

作为HadoopCore的另一个核心组成部分,MapReduce实现了基于分布式存储大数据的规模化并行处理.它的核心是Map和Reduce两个函数,Map实现数据到键值对的转换,Reduce以Map的结果作为输入处理键值对数据,当多个Map和Reduce并行处理时,可以极大地提高大数据处理的效率.其核心思想是通过Map和Reduce的方式将数据以键值对的模式进行碎片化处理,从而实现大数据变小数据,最终完成碎片数据的并行处理.

该框架除了通过构造两个独立的函数实现数据碎片化并行处理以外,还通过两个固定函数的定义降低了程序员的负担,不需要大数据程序员具有很高的分布式编程经验,只需设置好Map和Reduce两个函数即可,另外该框架中还有一个Main函数,支持类似于Java等程序语言的嵌入式编程,从而控制算法的流程和结构,并最大化地降低程序员的学习负担.

2.1.2 Hive与HBase数据分析系统

Hive是用于Hadoop平台的一种分布式数据分析框架,它不仅能够实现Hadoop平台的数据存取和转换,还提供了丰富的SQL查询处理手段.为了衔接底层并行处理结构,Hive的查询语句被系统转换为Map和Reduce函数.利用这两个函数实现并行处理,可以极大地降低查询成本.同时,与HDFS类似,它也采用流模式进行数据输入和输出,不支持数据的随机存取.但是Map和Reduce函数的转换需要消耗一定的资源,因此对大规模查询,效率将会下降,其实时查询的效果也不佳.

HBase是一种基于HDFS的数据库,且它是开源和基于列的,通常传统数据库均是基于行进行数据存取和查询的,而HBase则基于列进行相关操作.它的另外一个重要特征是可以用于存储非结构化数据(这正是大数据环境下亟待解决的问题).传统数据库一般用于存储符合某一范式的结构化数据,但是大数据时代,非结构化数据将成为主流(如网络平台上发布的照片,其分辨率、格式、颜色模式等不可能完全统一).因此,HBase既是基于HDFS的,也是对HDFS的有效补充,可以有效地处理非结构化数据.

本系统中,由Hive和HBase相互协作完成底层数据处理.首先,通过Hive对HDFS中的原始数据进行一定程度的清洗、转换和计算;然后,以列的模式存储于HBase格式的数据表中;最后,上层可以嵌入Java API实现数据的高层应用.

2.1.3 Sqoop数据迁移

基于2.1.2节的分析,大数据时代将会产生大量的非结构化数据,这是传统的关系型数据库无法解决的困难.另外不同类型的数据库在数据存取和表示方面也会有很多细微的差别.最终将这些不同类型、不同种类的数据库集中到Hadoop平台时,必须对数据结构进行一定程度的转换.Sqoop正是一种专门针对Hadoop与关系型数据进行相互转换的工具.

Sqoop不仅可以实现将其他类型的数据或数据库导入到Hadoop文件系统,也可以有效地实现反向操作.它是大数据处理系统的必备环节,也是进行后续大数据可视化分析的基础.本系统应用过程中,将根据具体应用场景,将原始数据通过Sqoop迁移到Hadoop文件系统,再进行后续的查询、优选和可视化操作.

2.2 Echarts可视化处理

Echarts是由百度公司开发的开源可视化图形工具库.它为使用者提供了丰富的图表样式、直观且可交互的处理模式及友好的环境界面.本系统将根据应用场景,将前期大数据处理的结果数据,采用Echarts进行可视化呈现,从而提高大数据应用的直观性.

综合以上几个步骤,本系统中大数据可视化的处理流程可以总结为几个步骤:第一,采集并将数据导入到Hadoop平台;第二,通过Hive进行数据预处理;第三,对数据进行筛选、优化等处理,并将结果数据存入Hbase数据表;第四,根据需要对数据进行统计分析,如果有必要,可以形成报表;第五,通过Echarts等可视化工具实现大数据的图表或动画模式呈现.

3 系统的设计与实现

3.1 系统设计的流程及核心要素

大数据可视化呈现是基于平台中所有相关企业的业务数据构建的,由于原始数据采用的是多类型数据库系统,且业务数据一般分散存储在不同的服务器上,因此首先需要将数据集成,把分散的企业数据从分布式数据库集成到Hadoop集群中,从而完成初始数据收集.

接下来,本系统根据可视化需求构建数据空间,并以此搭建Hive预处理数据库.基于初始提供数据的结构以关系型数据库为主,需利用迁移工具Sqoop将数据从关系型数据库迁移至Hadoop的HDFS存储器上,进而再将其加载到便于检索、查询的Hive数据库.然后利用HQL语句对数据进行查询分析,并将查询结果存入HBase数据库,接下来将相应的查询结果与可视化的设计主题相结合,构造对应的可视化模型,并将模型以固定形式存入到HBase,最后使用Echarts可视化插件对分析模型进行图形可视化呈现.

3.2 Hive数据仓库的搭建及处理

为了保证数据应用之前的格式统一性,Hive数据库起到至关重要的作用.本系统中Hive数据库既能对原始数据进行格式统一,也能保证数据的可靠和完整性,同时它也为数据统计、可视化呈现等模块提供基础.因而,本系统将Hive定性为所有数据分析任务的统一数据入口.在此基础上对Hive中的数据进行优化、分析(包括数据的规范化表示、大数据稀疏表示、数据智能优化等环节).

3.3 Hive、MySQL、HBase数据互导

大数据处理的核心要素是数据的归一化表示和存储,为了实现不同种类或结构的数据共用,本系统利用Sqoop完成数据在不同数据系统之间的互导.它的处理过程为:首先将Hadoop平台下的数据切分为若干小数据集,并构建MapReduce任务处理分割后的小数据集.数据互导过程如下:

(1)使用Sqoop将数据从Hive导入MySQL

启动Hadoop集群、MySQL服务.登录数据库并创建可视化所需原始数据表单,并通过shell命令导入数据,如图1所示.

图1 原始数据表单数据导入

(2)使用Sqoop将数据从MySQL导入HBase

启动HBase服务,并新建一个终端,执行相关命令将数据导入HBase,如图2所示.

图2 HBase数据导入

(3)使用HBase Java API将数据从本地导入HBase

本系统采用Java程序实现HBase数据导入功能.导入数据后,运行hadoop jar命令(本系统详细命令为:hadoop jar/usr,local/bigdatacase/hbase/ImportHBase.jar HBaseImportTest/usr/loacal/bigdatacase/dataset/usr_action.output),从而为可视化分析提供符合要求的输入数据.

3.4 数据可视化分析

本文采用Echarts图表绘制工具绘制可视化图形,此外,针对某些特殊需求,在可视化插件无法实现的地方也可采用自定义可视化算法.其中针对大数据分析流程部分如图3所示.

图3 大数据分析流程图

整个可视化分析具体步骤如下:

(1)连接MySQL,并获取数据.根据具体可视化需求,通过SQL语句查询数据.

(2)根据可视化需求,利用相关函数得到样本相关信息并绘制图表,从而进行可视化展示.如分析某网站用户的消费行为:

1)每月的产品购买数量,其命令操作如图4所示.

图4 购买数量统计操作

分析结果如图5所示.

图5 每月用户购买张数趋势图

从图中可以看到,销量在前几个月异常高涨,并在3月达到最高峰,后续销量较为稳定,且有轻微下降趋势.

2)用户消费金额、消费次数的描述统计,命令操作为:grouped_usr = df.groupby(‘user_id’).

其分析结果如表1所示,从表中可以看出用户平均消费106元,其中位值只有43,且有土豪用户消费13 990元.结合分位数和最大值看,平均数仅和 75 分位接近,因此肯定存在小部分的高频消费用户.

表1 用户消费金额及消费次数统计表

3)用户消费金额分析,其命令操作如图6所示.

图6 消费金额分析操作

分析结果如图7所示.从直方图可知,用户消费金额绝大部分呈现集中趋势,高消费用户在图上几乎看不到,从而验证了消费行为的行业规律.结合销量和用户消费金额的可视化分析,可以让卖方和买方动态监控产品情况,商家可以根据这些清晰的可视化曲线、图表适时制定相关促销政策或活动,消费者也可以根据这些可视化图表在合适的时机购买所需商品.

图7 用户消费金额分布图

4 总结

本文运用大数据的相关技术(如分布式文件系统HDFS、MapReduce计算框架、Hive数据仓库等)进行数据分析,然后对这些数据进行可视化处理,并以更加清晰的方式呈现大数据分析的结果.在实现过程中,本文综合运用大数据采集、处理、分析和相关可视化工具及软件,将分析结果用图、表等形式呈现,使结果更加直观,且构建了完整的大数据分析框架,实现了大数据的自动采集、分析和处理.本系统突出了大数据的实际应用,体现了大数据的强大功能.为用户利用大数据平台进行数据分析提供了一个较完善的模板.

猜你喜欢

分布式可视化数据库
基于CiteSpace的足三里穴研究可视化分析
思维可视化
基于CGAL和OpenGL的海底地形三维可视化
“融评”:党媒评论的可视化创新
分布式光伏热钱汹涌
分布式光伏:爆发还是徘徊
数据库
数据库
数据库
数据库