Journal of Computer Applications
计算机应用,2〇l8, 38(5): 1^9-1345ISSN 1001-9081
CODEN JYIIDU2018-05-10
www.joca
文章编号:1001-9081 (2018)05-1339-07 DOI:10.11772/j.issn.1001-9081.2017102475
基于HBase和Hive的航班延误平台的存储方法
吴仁彪,刘超,屈景怡
(中国民航大学天津市智能信号与图像处理重点实验室,天津300300)
(*通信作者qujingyicauc@ 163. com)
摘要:针对我国目前航班延误平台的移植难、可扩展性差,无法适应民航高速发展所带来的大数据量存储的现状,设计了面向大数据的跨平台、高适用性与高扩展性的航班延误平台。该平台以大数据工具LeafLet为可视化载体,在地图界面实时显示航班轨迹并将轨迹数据加载至HBase数据库中,并且利用信息摘要算
法(MD5)重新设计与优化航班数据表的行键,以解决其递增的飞行时间特性产生的“热点”问题;针对HBase过滤器多级查询的缺陷,提出了基于SolrCloud的关联查询算法,利用SolrCloud实现对行键与索引字段的分层存储,从而实现HBase二级快速索引;最 后在HBase的历史航班数据与飞行计划数据基础上,构建基于H ive的海量航班信息数据仓库。实验结果显示,航班延误大数据平台的可扩展性与搭建的航班信息数据仓库可以满足民航对数据集中统一存储的需求,而多条件查询的响应速度与无二级索引的集相比提高了上百倍,并且这种优势随着航班数据量的增长愈发明显。
关键词:大数据平台;航班延误;HBase;Hive;SolrCloud; LeafLet
中图分类号:TP311.1 文献标志码:A
Storage method for flight delay platform based on HBase and Hive
WU Renbiao, LIU Chao, QU Jingyi
(Tianjin Key Laboratory f or Advanced Signal Processing, Civil Aviation University of China, Tianjin300300, China) Abstract:In the view of the problem that the portability and expansibility current flight delay platform in China can not adapt to the status of large data storage brought by rapid development of Chinese civil aviation,a flight delay big data platform with cross platform,high availabilit
y and high expansion was designed.The platform used a big data tool LeafLet as a visual carrier,displayed the flight trajectory in the map interface,and loaded trajectory data to HBase database.Message-Digest Algorithm (MD5) algorithm was used to redesign and optimize the rowkey of flight data table to solve its“hot spot”problem brought by incremental flight time.Considering the shortcomings of m ulti-level query of HBase filte r,a query algorithm based on SolrCloud was proposed,which utilized SolrCloud to realize hierarchical storage of row and index fields,so as to realize HBase two-level fast indexing.Finally,based on historical flight data and flight plan data of HBase,a massive flight information data warehouse based on Hive was constructed.The experimental results show that the expensibility of large data platform for flight delays and the construction of flight information data warehouse can meet the demand of civil aviation for unified storage of data,and the response speed of the multi-condition query is improved by hundreds of times compared with the cluster without second index,and this advantage becomes more and more obvious as the flight data amount grows.
Key words: big data platform;flight delay;HBase;Hive;SolrCloud;LeafLet
〇引言
根据中国民航航空局发布的2016年民航行业发展统计 公报,2014年,全国民航运输机场起降架次793. 3万架次,比上一年增长8.4% ;2015年,全国民航运输机场起降架次856.6万架次,比上一年增长8.0% ;2016年,全国民航运输机 场起降架次923. 8万架次,较上一年增长7. 9%[1]。航班架 次如此高速的增长,对民航信息技术部门来说不仅是数据流 的增加、业务的拓宽以及工作量的加重,而且这些新的挑战对 民航海量数据的存储以及处理速度提出了新的要求。由此可 见,民航界逐步向数据量大、文件类型多、价值密度低与速度时效高的“4V”特性的大数据行业发展[2]。为了应对航班持 续稳定高速增长的挑战,亟需探索新的海量航班延误平台的 设计方法和机制。目前我国民航使用的是由国家空管局与航 空公司合作的航空类企业开发的航班延误平台,主要面向旅 客提供机票购买、酒店预订、航班路线查看、行程记录等服务,同时帮助旅客实时查看航班准点信息,获得航班起飞时间与 到达时间,国内比较常用的应用有航班管家、航旅纵横、飞常 准等APP,国外有PlaneFinder、FlightTrack等。目前这些国内 APP大多数是基于传统基础架构的,航班数据一般存储于价 格昂贵的大型服务器上,数据库管理软件采用关系型数据库 系统,比如Oracle、SQL Server等,而报表系统也正是建立在这
收稿日期:2017-10-19;修回日期:2017-12-14;录用日期:2017-12-29。
基金项目:国家自然科学基金资助项目(11402294);天津市智能信号与图像处理重点实验室开放基金资助项目(2017ASP-TJ01)。
作者简介:吴仁彪(1966—),男,湖北武汉人,教授,博士生导师,博士,主要研究方向:自适应信号处理、现代谱分析及其在雷达、卫星导航和 空管中的应用•,刘超(1991 一),男,湖北黄冈人,硕士研究生,主要研究方向:航空运输大数据;屈景怡(1978—),女,天津人,副教授,博士,主要研究方向:航空运输大数据、神经网络。
1340
计算机应用
第38卷
N
So [B a ;[B a ;图1
航班延误大数据平台系统架构模型 Fig.    1
System architecture model o f flig h t delay big data platform
HBase 是一种构建在分布式文件系统(Hadoop  Distributed File  SyS tem ,HDFS )之上的分布式、面向列的、可伸缩的动态模
式数据库,用于实时读写、随机访问超多规模数据集,包括主 服务器HMaster 、管理和服务区域块HRegionServer ,以及作为 协调服务中心的ZooKeeper 。本文搭建的HBase 集体系框 架图2所示。
H M a s te r
(h a d o o p O l)
客户端
\ H R e g io n S e rv e r
H R e g io n S e rv e r H R e g io n S e rve r \ (h a d o o p O l)
(hadoop()2)
(hadoopOS)
图2
H B ase 集的体系框架Fig. 2
Framework of HBase cluster
S olr 是一个基于Lucene 而实现的开源搜索服务器,除了
提供强大的全文搜索外,还包括如图3所示的高亮显示、动态 聚类、数据集合、切面检索等功能[15]。SolrCloud 实现了基于 S olr 的分布式检索,作为集的配置信息中心—
ZooKeeper
实现了自动容错功能,保证了航班延误大数据平台稳定性。
图3
Soli •组成模块
Fig. 3
Solr component module
H iv e 是一个利用类似传统S Q L 语句H iv e Q L 实现海量数
据的查询、转换、提取等操作的数据仓库,H iv e 的组成模块如 图4所示,它提供了三种用户接口 :命令行模式、浏览器模式 以及基于T h r i f t 服务器的客户端模式[16]。Hadoop 集支持 处理T B 或P B
级以上数据,以Hadoop  M a p R e d u c e 为框架的
H iv e 因此也能满足有延迟的海量数据交互查询和分析要求。
I  F P L 报文丨| A C A 结构化数据| P I
些关系型数据库上,业务耦合度紧密,系统扩展性较差、成本较高。
作为高效的数据存储和处理能力的HBase 数据库可以轻 松满足海量航班数据扩展的要求[3],文献[4 -7]将HBase 数 据库分别应用于城市智能交通系统、船舶自动识别系统、云智 能室内环境监测系统、生物D N A 与蛋白质对存储等领域,都 验证了 HBase 作为大规模数据存储的可靠性。文献[8]基于 协处理器在HBase 区域直接创建二级索引,需要将不同索引 字段组合一同存进HBase 索引表,造成了额外存储空间的浪 费。文献[9]基于S olr 实现了 HBase 数据库中数据的检索, 然而只是简单地实现了 HBase 二级索引,并未将索引的建立 与查询一体化,仅在S olr 管理页面进行了检索,没有考虑实际 页面加载大量数据所带来的延迟问题。H ive 作为Hadoop 生 态圈的数据仓库工具,利用存储于Hadoop 底端的海量分布式 文件进行MapReduce 离线并行计算,并提供类SQL 语 句的开发语言,其优势在于快速实现数据的统计分析,而不必 特定编写MapReduce 任务。文献[12 - 13 ]在H ive 基础上构 建了一种并行数据仓库,验证了千万条数据复杂查询和多维 分析的性能,确保了联机查询和分析的可操作性。
因此,本文在上述技术基础上,设计了基于大数据架构的 航班延误平台,其主要特在于结合了 H B a s e 数据库和
S o lrC lo u d 搜索引擎,利用H B a s e 可扩展性和S o lrC lo u d 支持的 S Q L 功能接口的特点,并合理设计行键,从而实现了海量航班
数据存储以及基于W eb 界面的航班实时跟踪,然后给出两种 航班数据查询算法,通过实验验证了该查询算法的高效性。 最后,设计了基于H
i v e
的航班数据仓库,为航班延误的治理
提供了决策层面的技术支持。
1本文整体架构设计
J 2E E 是一种利用Java 2平台来简化企业解决方案的开
发、部署和管理相关复杂问题的体系架构,它使用了多层分布 式的应用模型,包括客户层、W eb 层、
业务层、企业信息系统 层[14]。本文在J 2E E 的体系结构基础上,引人大数据计算组 件、大数据分布式数据库、大数据可视化等组件,重新设计了 海量航班监控平台的系统架构模型。
如图1所示,航班延误大数据平台由航班监控模块、航班 查询模块和航班分析模块组成。航班监控模块负责航班的监 控显示,定时请求航班数据存储层以获取临时缓冲表的最新 航班数据,并依据成功执行回调数据里的航班号这一字段在
L e a fL e t 地图添加新的移动图标或为原有移动图标添加新的
航路点;航班数据查询模块负责海量历史航班数据的搜索查 询,结合S d r 搜索引擎,为H B a s e 海量航班数据提供多条件过 滤查询的功能;航班数据分析模块负责将H B a s e 表中的每曰 航班数据抽取、转换、加载进H iv e 数据仓库,并调用S p a r k 引 擎将H iv e 中的数据转换成图表,以供决策支持。
基于H B a s e 海量航班数据存储、基于S o lrC lo u d 海量航班 二级索引以及基于H iv e 海量航班数据仓库的构建是航班延 误平台存储的核心组成部分,下面分别对这三部分所涉及的 功能模块进行介绍。
U D P 协议数据(
发射端lr
丨R PC 接口
才数据库
w 数据库G e 数据库(]々se 数据库〇
E T L
衫________________
|~F u sion C h arts 图表组件
1T
|
S p a rk 弓丨擎
I
3H
M y S (
[j m
数据数据S
i
数据’
「H iv e 数据仓库1
管理:hbase的特性有哪些
Y A R 芦结构化数据1
存储平台H D F S  |非结构化数|RS 报文|基础数据源|气象报文|丨航班图片
航班延误大数据平台系统架构模型
S o lr
iR equest H a n d le rs l iResponse W rite rs l I  U pd a te  H a n d le rs I
L uce n e  |
索引读取/搜索
|
文本解析| |索引写入
|
航班
航班
L e a fL e t 航班查询模块监控模块地图库分析模块
__________________
协服中、L '分
式调务-|
第5期吴仁彪等:基于HBase和Hive的航班延误平台的存储方法1341
H iv e| O D B C| JD B C|
C L I | |H W I |T h r if t S erver
D riv e r
(编译器、优化器、执行器)
M e ta store
H adoop |M a pR educe | |HDFS^
图4 H iv e组成模块
Fig. 4 Modules of H ive
2基于HBase海量航班数据存储方案设计海量航班数据的集中存储目前是各大航空公司亟待解决 的问题,
逐步由传统的关系型数据库转到可扩展的NoSQL型 分布式数据库将是民航业未来数据存储方向。HBase数据库 作为一种构建在HDFS之上的分布式、面向列的、可伸缩的动 态模式数据库,通常用于实时读写、随机访问超大规模数据 集,可以作为海量航班数据存储很好的选择。
2. 1 HBase数据库部署与设计
HBase遵从主从服务器架构,它由H Region服务器(RegionServer)和 HBase Master 服务器(HMaster)构成。HBase服务器的所有协调服务由ZooKeeper进行协调,除此之 外,ZooKeeper还负责Hbase命名空间里的m eta表信息的存 储,感知RegionServer的健康状态,通过ZooKeeper的Master Election机制保证HMaster单个机制,避免HMaster的单节点 故障[17]。
HBase自带ZooKeeper■,本文在HBase集所在三台机器 上独立部署ZooKeeper,避免HBase和ZooKeeper的强親合,方 便后期对HBase集的升级、管理以及对航班延误大数据平 台的扩展,因此本文禁用H Base自带的ZooKeeper。同时,考 虑到ZooKeeper作为SolrCloud的集中式配置中心,而它的作 用是分布式协调者,一旦组件信息、索引信息等配置变动,所 有的机器都可以通过它感知到,同时ZooKeeper可以为突然 崩溃的程序提供自动容错的机会,通过重新选出候选者,从而 执行上次未完成的任务。独立部署的ZooKeeper■也可以为 HBase二级索引提供支持,实现自动负载均衡。
2. 2海量航班数据rowkey的设计
由于航班数据的索引不直接采用Coprocessor协处理器 方案,而是引人了 HBase与S olr结合的方案,所以HBase中行 键无需依据索引字段来设计,行键的设计需要尽量避免“热 点”问题™。“热点”问题是由于将递增的航班飞行时间当 作行键,向HB ase写人操作总是集中在一个数据管理基本单 元区域块region上。解决的思路是随机散列化飞行时间,并 提前为航班数据表建立预分区,随机散列化飞行时间采用信 息摘要算法(Message-Digest Algorithm,MD5 )[19]。飞行时间 tim e由不含分隔符的飞行日期与实际飞行时间两部分组成,时间格式不够的填充位用零补足。由于航班查询模块会根据 每个飞机图标的航班号直接索引,所以行键末位还需要拼接 上航班号,最后需要将飞行时间转换为哈希值再转换化Bytes 类型,加上自身和航班号转为Bytes类型的值,即可组成最终 行键。最后生成rowkey的函数如(1)所示:
rowkey= MD5AsHex(time) + time+ 航班号
(1)
2.3海量航班数据列簇的设计
航班数据主要字段包括:航空公司、航班号、尾流号、起飞机场、降落机场、起飞日期、预计起飞时间、实际起飞时间、预 计降落时间、实际降落时间、延误时长等109个字段。起飞时 间与降落时间采用4位时间占位符进行存储,精确到分钟级 别。飞行日期采用8位占位符,其他字段统一解析成字符串 类型存储。因为列簇越少时region刷新I/O开销越少,且航 班数据各字段应用较统一,所以所有字段共同构
成航班数据 唯一列簇FProperties。海量航班数据列簇设计如表1所示。
表1海量航班数据表结构
Tab.    1 Structure o f massive flig h t data table
RowKey Colum nFamily :FProperties
rowkey A irlin e A irlin e id
FlightN um FlightN um id
TailN um TailN um id
DepTime DepTim eid
2.4海量航班数据索引字段的存储
为了实现多条件查询的业务需求,本文设计了基于Solr+ HBase的存储组合方案。HBase作为航班数据主表的存储机 制,Solr作为主表rowkey以及涉及条件过滤字段的存储机制。过滤查询6个字段包括:飞行日期、航空公司号、尾流号、航班 号、起飞机场、降落机场。S olr模式配置中7个参数类型都是 字符
串:indexed属性必须全部设置为true,最终返回值为符 合条件的rowkey字段,固只需要将rowkey的stored属性设置 为tm e,其他无关过滤字段设置为false,以便节省存储空间,uniqueKey对应的字段为rowkey,条件过滤字段设置信息如表 2所示。
表2条件过滤字段信息表
Tab. 2Inform ation table o f conditional filte r fields
fields type indexed stored
rowkey string true true
flightday
origin
string
string
true
true
false
false
dest string true false
a irline id string true false
tailnum string true
true
false flightnum string false
实现基于Soli■索引数据存储的基本思路是在往HBase主 表插人航班数据之前,调用HBase的Server端的协处理器Obervers,Observers是散布在 RegionServer 端的 hook钩子,这 些hook函数是实现二级索引条件存储的基础,RegionServer 会调用Observers的钩子函数prePut,读取P u t类包含的mwkey以及查询字段,将rowkey设置为模式配置中的唯一键,同其他字段一同封装在Document中并保存到缓存里,
达 到上限之后则将缓存内所有的数据提交到SolrCloud中,从而 在SolrClmid中为所有的涉及条件过滤的字段建立索引。钩 子函数完成索引数据提交之后,Region Server才会真正去执 行插人操作,将航班号、起飞机场、降落机场、尾流号、起飞时 间等信息插人HBase主表中。
实际情况下,飞机在空中飞行时持续报告它的飞行信息,接收端必须一直处于接收状态,比如实际情况下飞机上的广 播式自动相关监视(Automatic Dependent Surveillance -
1342计算机应用第38卷
B ro a d c a s t,A D S-B)发射机与地面的A D S-B接收机之间的航班 信息传输。类似发射机采用U D P( U ser Datagram P ro to c o l)的
客户端来代替,类似接收机以部署的服务器端来代替,客户端 是一个由C++编写的可执行程序,启动后创建客户端数据报
套接字并开启线程,间隔将每行数据拼接成字符串并放进缓
存,利用抓取到的应用程序数据直接抛到网络中,从而向应用 层提供无连接的服务。
3基于SolrCloud的海量航班数据关联查询
在建立上述海量航班飞行数据存储及二级索引的基础 上,本文利用存储于SolrCloud中的索引文件及返回的行键对 航班飞行数据进行多级关联查询。多条件查询请求参数标记 为以(^»,(^,(^,砰,(3〇,卯),其中:卯表示飞行日期,(^ 表示航空公司号,Q T表示尾流号,Q F表示航班号,Q0表示起 飞机场,Q D表示降落机场。根据航班查询模块所选的参数,出符合查询条件(QD,QA,QT,QF,Q0,QD)的所有飞行数 据,并在W eb界面分页显示。除了采用基于SolrCloud索引策 略,还给出基于F ilte r过滤器的查询策略,并针对每种查询策 略提出一■种查询算法。
算法1基于F ilte r过滤器的多条件索引查询。
输入封装QD,QA,QT,QF,QO,Q D查询条件的
实际查询过程如图5所示:1)建立完索引;2)客户端直 接发送包含(Q D,Q A,Q T,Q F,Q0,Q D)查询请求S Q L命令, S olr C lie n t通过内部处理逻辑接收并解析S Q L语句后依据分 片数目启动分布式查询,查询结果返回给最初的R e p lic a, R e p lic a基于一定的规则合并子查询结果;3 ) R e p lic a将最终结 果返回给用户,这些符合查询条件的结果是以集合形式返回,而这些结果正是H B a s e中符合过滤条件数据的行键,这样用 户就可以快速获得符合过滤条件的ro w k e y值,拿到这些m w k e y之后放进缓存列表中;4)根据这些行键在H B a s e中执 行批量查询,依据行键到对应的re g io n位置,获取re g io n所 对应的列的值;5 )H B a s e最终返回符合过滤条件的所有结果。
采用Soli■作为HBase的二级索引替代方案,除了因为 Solr拥有独立、高并发的企业级搜索优势外,还因为它是采用 纯Java并基于文本搜索引擎库Lucene而开发的子项目,与目 前大数据HBase、H ive、HadooP等组件能很好地兼容,并能支 持多种输出格式,包括可扩展标记语言(Extensible Markup Language,XML)JavaScript 对■象标i己语言(JavaScript Object Notation,JSON)、扩展样式表转换语言(Extensible Stylesheet Language Transformation,XSLT),支持的分页索引功能弥补了 HBase数据库分页索引的不足,也方便了后期对航班延误大 数据平台的功能扩展[21]。
co n d itio n M o d e l 〇
输出航班数据结果集列表flig h ts L is t。
先判断每个查询条件是否为空,然后将非空查询条件封 装在它所对应的S in g le C o lu m n V a lu e F ilte i■过滤器中,并依次将 新生成的过滤器放在集合列表中。如果集合列表不为空,根 据集合列表生成过滤器集合,并设置过滤组合条件为“与”,得到符合Q D&Q A&Q T&Q F&Q O&Q D查询要求的组合过滤器 集合,根据过滤器集合设置扫描对象scan,最后通过scan扫 描H B a s e原表,得到集合列表flig h ts L is t返回给客户端。
该算法在查询条件较少且返回的数据量不大的情况下效 果比较好,但是在过滤条件较少时往往导致返回数据量很大,比如只限制Q D与再增加一个Q A查询条件时查询范围也许 会增加一个数量级。其次该算
法使用了全表扫描,这是一种
代价昂贵的查询办法,直接导致查询性能低下,H B a s e查询代 价最小的办法就是通过行键查询,因此本文设计了基于S o lrC lo u d二级索引查询方法,将行键的索引提前存储于S o lrC lo u d中,获取行键后再在主表中依据行键查询。
算法2基于S o lrC lo u d的多条件二级索引查询。
H B a s e二级索引目前业界采用的解决方案主要有
图5基于S o lr的二级索引执行流程
Fig. 5 Secondary index execution flow chart based on Solr
4基于Hive海量航班数据仓库的构建在实现了基于HBase、SdrCl〇U d的航班存储与航班查询 框架后,航班查询和航班跟踪两个在线事务模块基本完成。
M apR educe 方案、IT H B ase 方案、IH B ase 方案、华为的 H In d e x 方案[2°],检索性能正稳步提升。本文在华为协处理器创建二 级索引表的基础上,将H B a s e协处理器所持有的类似触发器 应用于SolrCloud索引字段的创建上,把H B a s e毫秒级实时搜 索的优势与S olr多条件组合查询的优势结合起来,实现了基 于SolrCloud的H B a s e海量数据多条件快速检索。具体查询 步骤如算法2所示:
输入封装Q D,Q A,Q T,Q F, Q O,Q D查询条件的co n d itio n M o d e l 〇
输出航班数据结果集列表flig h ts L is t。通过利用HBase数据库历史航班数据,构建基于H ive海量航 班飞行信息数据仓库来寻与航班延误最具有相关性的指标 参数,统计分析出各大机场日均延误、时均延误等与航班延误 相关的统计分析情况,作为航班延误大数据平台航班数据报表层。
4.1基于H ive海量航班数据仓库多维分析
对于航班飞行信息数据来说,典型的主题域包括航班、机 场等主题。其中航班主题记录了与单个航班延误相关的历史 飞行数据,如计划起飞时间、计划降落时间、实际起飞时间、实
际降落时间等;而机场主题记录了机场全部的历史航班数据,
第5期吴仁彪等:基于HBase和Hive的航班延误平台的存储方法1343包括航班号、尾流号等。本文利用H B a s e提供的航班飞行数
据,在已提前制定的飞行计划静态状态量中加人每日航班飞
行监控状态属性,依据机场和飞机的每日、每月、每季度、每年
航班延误等新规则,将这些规则作为数据维,定时将H B a s e存
储的前一阶段航班数据映射到H iv e中,结合这些航班数据
维,生成符合业务主题的航班延误决策信息,并将决策信息存
人H iv e事实表中,从而实现航班数据的人库操作。
基于H iv e的航班数据仓库系统旨在高效地存储和分析 持续不断产生的海量航班飞行数据,以高度整合的形式集成 与展现历史航班延误数据,能够为航空公司运营者、机场管理 者、空域调度者和旅客提供每月与每季度的延误原因占比、各 大机场与航空公司每季度与每年延误排名情况、机场某月每 日平均延误分钟数、各大机场当日时间区间的延误航班数量 与某飞机的历史延误统计。
4.2基于H iv e的海量航班数据仓库系统结构设计
针对航班延误海量数据和数据仓库统一管理与分析的应 用需求,本文设计了基于H i v e的海量航班数据仓库,系统结 构主要由4层组成:负责底部数据存储的存储层、负责执行 S Q L语句的计算层、负责查询处理的控制层和负责具体业务 需求的应用层。存储层是基于H D F S,数据来源包含HBase 存储的每日飞行数据和提前制定好的飞行计划报文;计算层 由H a d o o p底层M a p R e d u c e与S p a rk底层基于弹性分布数据 集的有向无环图组成,选择的方式由实际业务的需求与繁琐 程度决定;控制层包括H iv e Q L和S p a rk S Q L两种查询语言组 成的数据库引擎,处理来自应用层的不同请求,引擎的选择决 定了计算层的选择方式;应用层主要集成了各大机场延误报 表、航班延误辅助决策等组件,可以实现每日报表的生成。4.3基于H iv e海量航班数据仓库工作流程
航班分析模块为用户提供了良好的W e b界面,利用JSP 标签库来提供执行〇L A P( O n lin e A n a ly tic a l P ro ce ssin g)操作的 相关按钮以及数据显示,主要标签包括地区、机场、飞行日期、飞行时间段等。为了实现对时间维度的上卷、下钻等操作,需 要创建表的时候将默认静态分区属性设置为动态分区属性,后台根据用户的选择实现查询分析处理并将结果保存至M y S Q L数据库中,即可实现针对机场、航班等不同主题的即 席查询,最终以基于F u s io n C h a rts的图表形式呈现。
航班数据仓库的数据加载方式有两种:存储处理程序模 块S to ra g e H a n d le rs用于映射H B a s e已
有历史航班数据,在 H iv e中创建与H B a s e表与列簇相互对应的历史航班数据外 部映射表;批量装载Load方式用于飞行计划静态数据。所有 与主题相关的航班数据装载进H iv e之后,客户端发起航班延 误数据分析请求,进而启动一个S p a r k应用程序,通过S p a rk S Q L解析请求命令,由于已经完成S p a rk与H iv e的整合 配置,S p a rk S Q L可以直接对数据位于H D F S中H iv e表执行关 系型操作,也可以将涉及延误主题的表直接转换成弹性分布 式数据集,进行复杂运算后再保存到延误主题表中。返回符 合查询请求命令的数据之后,根据这些数据完成涉及的查询 与分析、汇总、报表生成等操作,并将最终延误分析结果返回 给客户端。海量航班数据仓库工作过程如图6所示。
Fig. 6 Engineering process o f mass flig h t data warehouse
5实验及结果分析
本实验主要针对多条件查询速度、航班延误大数据平台 的海量航班的可扩展性以及多维展示进行测试。实验环境采 用4个节点的集,外加一个客户端。其中服务器hadoopOl 与 hadoop03 内存 26 GB、硬盘 1TB、2. 40 GHz 的 Xeon E5620 CPU,hadoop02 与 hadoop04 的内存 8 GB、硬盘 500 GB、2. 66 G H z的Quad Q8400 CPU,4台应用服务器节点用于分发航班 数据以及应用逻辑处理;客户端的配置为内存12 GB、硬盘1 TB、3.4 G H z的i7-6700 CPU,用于模拟海量航班的并发请求。
航班延误大数据平台的主界面如图7所示,地图库采用 的是目前最流行的可视化工具之一 LeafLet[22],
大体分成两部 分:侧边航班信息收缩菜单栏和右侧航班实时跟踪界面。收 缩菜单栏包括航班信息、航班数据、天气、延误警示、延误分 析、这6个大模块,并且每个模块都有一级右拉悬浮 页面,可以轻松地关闭悬浮页面并来回自由切换任何一个菜 单。当右侧地图界面任何一架航班被首次点击时,航班信息 栏都会主动弹出包含该趟航班的飞行信息,包括:起飞机场、降落机场、航班号、计划起飞时间、计划降落时间等。
图7航班延误大数据平台可视化界面
Fig. 7 Visualization interface o f flig h t delay big data platform
5. 1基于H B a s e海量航班数据多条件查询速度测试
设定查询条件为6个:飞行日期、航空公司号、尾流号、航 班号、起飞机场、降落机场。测试数据分3组:A组为44. 3万 条,B组为91.1万条,C组为139. 8万条。通过监控层的航班 数据查询模块进行实验验证,参考标准是查询条件输人时刻 到页面获得实时响应这段时间间隔,分别比较H B a s e在算法 1和算法2查询条件下页面响应时间。过滤条件设置如下:条件一起飞机场为S A N;
条件二起飞机场为S A N,飞行日期为2015-01-17;
条件三起飞机场为S A N,飞行日期为2015-01-17,降落 机场为S M F;
条件四起飞机场为S A N,飞行日期为2015-01-17,降落 机场为S M F,航班号为2800