1、毕业论文设计题目METECLOUD平台下基于HIVE的气象数据仓库构建的研究学生姓名学号20091346087院系计算机与软件学院专业网络工程指导教师二一三年五月十五日0声明本人郑重声明1、持以“求实、创新”的科学精神从事研究工作。2、本论文是我个人在导师指导下进行的研究工作和取得的研究成果。3、本论文中除引文外,所有实验、数据和有关材料均是真实的。4、本论文中除引文和致谢的内容外,没有抄袭其他人或其他机构已经发表或撰写过的研究成果。5、其他同志对本研究所做的贡献均已在论文中作了声明并表示了谢意。作者签名日期1目录1引言111研究背景112研究现状213研究意义32相关工具321VMWAREW
2、ORKSTATION8322HADOOP423HIVE524ECLIPSE63METECLOUD架构分析631METECLOUD的架构632METECLOUD平台存储体系结构中的HIVE733AVARTARNODE机制84HIVE结构分析941HIVE与HADOOP的关系942HIVE的数据存储1243HIVE的实现过程1444HIVE与数据库的比较145气象数据处理1551气象数据集介绍1552处理数据存储的多维分析模块16253数据的直存与转存实现1754对数据的其他直接操作186数据仓库的实现与测试1861数据仓库工具配置18611配置HIVE18612基于ECLIPSE搭建HIVE开发
3、平台2062测试结果23621HIVECLI处理气象数据23622基于ECLIPSE平台处理气象数据268小结29致谢29参考文献301METECLOUD平台下基于HIVE的气象数据仓库构建的研究南京信息工程大学计算机与软件系,南京210044摘要气象存储系统是气象的核心系统,是集气象资料的收集与处理、气象数据的存储管理及检索等多环节的综合应用系统。云计算是分布式计算,并行计算和网格计算的发展成果,这将对气象行业有重大而深远的影响。本文首先对METECLOUD(METEOROLOGICALCLOUD,气象云平台)的架构和其中具体的一些构成进行了分析;然后分析了HIVE的数据存储过程和实现过程;
4、并且还研究了对气象日值数据的转存实现。通过进行实验测试,结果分析表明,HIVE是一种可以存储、查询和分析大规模数据的机制,更好管理大量气象数据资料。关键字云平台;METECLOUD;HIVE;气象数据;数据仓库1引言11研究背景气象行业是一个资源极其丰富、数据极其庞大的行业。随着气象事业现代化水平不断提高,特别是现代气象业务体系不断地发展和完善,气象业务、科研和管理活动中累积和收集了大量的气象信息资源。而且随着自动站、雷达、雨量标校站、卫星站等气象观测站的建立,气象资料数据也在与日剧增。气象业务数据主要包括气象台站的各类要素资料,如降水量、气温、相对湿度、日照时数等以及云图、各时次格点场、雷达
5、以及其它图像数据等,可看出气象数据其庞大程度1。省级单位气象数据的来源主要有卫星通道、国际互联网、内部业务系统和单位交换等,其中通过卫星通道接收的气象数据量最大,每日可达700兆左右。然各级的气象台站手机的各种资料每天都有若干时次,收集存储的的数据资料数据总量达上百兆,总的资料甚至可达GB量级。而雷达、卫星云图以及相关预报产品数据,每天能达到20GB左右,主要是图片数据和气象专用格式的格点数据。由此可以看出,气象业务数据不仅种类繁多,数据信息量十分庞大,而且用户服务响应时效和对资源分配结构的合理程度要求也非常高2。气象存储储系统是气象的核心系统,是集气象资料的收集与处理、气象数据的存储管理及检
6、索等多环节的综合应用系统。因此建立一个可进行数据抽取,转化,加载,共享大量数据的气象信息数据库非常有必要而且意义重大。云计算是一种近几年提出的计算模式,是分布式计算、并行计算和网格计算的发展。目前,亚马逊、微软、谷歌、IBM、英特网等的公司纷纷提出了“云计划”,例亚马逊、IBM和谷歌联合进行的“蓝云”计划等1。这对云计算的商业价值给予了巨大的肯定。同时学术2界也纷纷对云计算进行深层次研究,不可回避的是,云计算将给依托信息处理交换的各行各业带来巨大变革,同样将对气象领域产生重大而深远的影响。12研究现状(1)气象数据存储技术系统现状目前国内外许多气象部门都是采用文件系统作为气象资料存储方式,不同
7、科学数据采用不同格式,同时有相应存储管理系统用来完成数据的读写和检索。我国气象数据存储依旧是以观测点和气象资料接收设备终端为主,所应用的存储系统还是具有商业化性质的ORACLE、SYBASE和INFORMIX等的数据库系统。但是,这些系统目前还不能够很适应气象资料书目的庞大和其类型的复杂性。于是便想可以把庞大的气象资料用文件形式来存储。美国的AWIP的格点数就是采用NETCDF的格式存储的,而云图和雷达数据是直接存储为原始数据文件;我国气象部门使用的MICAPS是采用了类似的存储方式2。以文件形式的气象资料可以采用用先进的文件压缩技术进行压缩,这样可以大大节省磁盘的空间。国内的气象存储一般都采
8、用单一的数据库存储或者简单的文件库,但是每个气象部门的气象资料都是有所不同的,事实上每个气象部门都会设立不同的气象存储系统。现在已经提出采用数据库与文件库结合的方式,这样小数据采用关系数据库存储,大的文件数据采用文件库存储并且辅以数据库进行索引管理。近几年来,公共需求的不断增长,气象数据也是在不断增长,气象行业不断地需要买进昂贵的网络设备,而云计算存储可以提供无限的廉价存储和计算能力,利用云计算存储模式,数据存储在云端,再由专业的服务商提供维护,把分布在大量分布式计算机上的存储内存集中在一起成为一个虚拟的资源池,并通过网络为用户提供使用存储服务,这样气象科技人员只要用廉价的终端设备连接到云存储
9、上面,就可以分享到所需要的数据资料了。云计算可以存储大量的气象信息数据,并且可以节省很大一部分的经济开支,这对气象事业有很大的影响。(2)云存储系统现状云存储(CLOUDSTORAGE)是与云计算同时兴起的概念,存储在云计算中的基础支撑作用和地位正被业界广泛认同的。云存储技术在各行各业的应用正如火如荼的开展着,例如在谷歌的应用平台里,用户只要登录后就可以使用应用平台里的各种功能,还可以进行文档编辑和修改并保存在个人的存储空间里;还有像最近恨过的苹果公司推出了ICLOUD云服务,只要用户有一台IOS5操作系统的苹果设备并开启ICLOUD就可以在苹果所提供的5GB空间中备份很多内容;在国内云存储行
10、业也正在加速升温,酷盘、金山快盘、华为DBANK网盘等免费的云存储服务企业正在大幅扩张业务。本段内容更改(3)HIVE使用现状在商业智能行业,被收集到并分析的数据集的规模正在快速增长,这使得传统的数据仓库解决方案费用变得十分昂贵。HADOOP是当下流行的分布式计算开源框架,其正被YAHOO,FACEBOOK等公司广泛使用。HADOOP能存储和处理非常大的数据量。然而,HADOOP中的3MAPREDUCE编程模型水平比较低,需要开发人员编写自定义的程序,这使得难以维护和重新使用。于是提出了HIVE,建立在HADOOP之上的一个开源数据仓库解决方案。若本来是执行在HADOOP上的被编译成MAPRE
11、DUCE的工作操作,HIVE支持使用类似SQL语句的HQL语句进行该查询操作。此外,HQL语句允许用户插入自定义的MAPREDUCE到查询的脚本。HQL语言包括了原始类型表支持的类型系统,类似数组和MAPS的集合,或者相同嵌套组成的集合。HIVE还包括了一个包含元数据模式和统计的仓库的系统目录,这有益于数据的探索,查询优化和查询的编写。在FACRBOOK公司,HIVE的仓库包含了超过700TB的数据量和成千上万的数据表,这些数据被广泛用于每月超过200的用户的报告和ADHOC分析中3。13研究意义随着时代的进步人类生活水平的不断提高,本身的生活质量是越来越受到人们所关注与重视的,那么生活质量的
12、提高必然与天气气候的变化是息息相关的,总是希望生活在一个不错的生活环境下的。过去人们都只是通过电视台播出的气象预报来了解有关天气变化,现在人们可以通过网络等多种渠道了解气象的各方面详细准确的信息,那么为公众提供这些信息必须要有一个巨大的数据仓库的支持才能实现,所以建立一个气象数据仓库是非常有必要的。随着信息的发展,云计算的出现,云计算技术对气象行业的可观影响是大家有目共睹的,并且通过云计算技术下建立在HIVE之上的数据仓库能够存储大量数据,供大家查询与分析,所以推动云计算技术在气象行业的应用是很有必要的。2相关工具21VMWAREWORKSTATION8VMWAREWORKSATION4是一款
13、可以提供用户在一个桌面上同时运行不同的操作系统以及同时进行开发、测试和部署新的应用程序的,功能十分强大的桌面虚拟计算机软件。VMWAREWORKSTATION是非常便于携带的虚拟机器,能够在一部实体机器上模拟完整的网络环境。VMWAREWORKSTATION相对于市面上其他的虚拟计算机软件,其有更好的灵活性与先进的技术。对于虚拟机方面的初学者而言,相对在虚拟网路、实时快照、拖曳共享文件夹以及支持PXE等方面,VMWARE的特点都使它成为了必不可少的工具。(1)VMWAREWORKSATION特点VMWAREWORKSATION允许在一台虚拟机的内部同时运行应用程序和操作系统。虚拟机是是独立于运
14、行主机操作系统的离散环境。在VMWAREWORKSATION中,用户不仅可以在一个窗口中加载一台运行自己的操作系统和应用程序的虚拟机。用户还可以通过一个网络共享虚拟机例如一个公司局域网,在桌面上运行的多台虚拟机之间相互切换,或者挂起和恢复虚拟4机以及退出虚拟机,即便这样也都不会影响用户的正在运行的应用程序和主机操作4。(2)VMWAREWORKSATION特性使用UNITY来集成客户机和宿主机;更加强大的VM录制与回放功能;支持智能卡与相关读卡器;增强型ACE;改进型3D图形支持(3)VMWAREWORKSTATION8新功能1)随时随地访问VMWAREWORKSTATION提供了一种无缝的方
15、式,虚拟机在任何地方运行,用户都可以随时访问所需要的所有虚拟机。从网络中的任何地方远程连接到基于VMWAREWORKSTATION、VMWAREVSPHERE和VMWAREVCENTER运行的虚拟机,不仅能充分地利用本地PC,还能充分利用内部云。2)共享优势开始与用户的团队、部门或者组织中的任何人员共享虚拟化的优势。将VMWAREWORKSTATION8作为服务器运行,用户的虚拟器将在用户注销后继续长时间的运行。这是在更新近生产的环境中测试应用程序的最便捷的方式,而且对用户访问提供企业级的控制。3)新的界面、新的工作方式VMWAREWORKSTATION8用户界面已经做过全面重新地设计和简化了
16、,采用了经过简化后的菜单、更新的工具栏、文件夹视图、活动缩略图栏和新的虚拟机库。通过新的虚拟机库,可以方便地查看本地的和远程的虚拟机。无论实在本地PC上、VMWAREVSPHERE服务器上还是网络中的其他VMWAREWORKSTATION8实例上运行的虚拟机,都可以通过筛选和搜索快速找到所需的虚拟机4。4)释放PC的潜能VMWAREWORKSTATION8让借助虚拟机完成的工作继续提升一个台阶。它率先支持带71声道的高清音频和USB3以及蓝牙设备。通过对虚拟SMP、3D图形及64GBRAM支持的巨大改进,用户可以在虚拟机中运行大部分要求苛刻的应用程序。VMWAREWORKSTATION8如此强
17、大,用户可以在VMWAREVSPHERE上运行64位的虚拟机,而VMWAREVSPHERE本身也是在VMWAREWORKSTATION虚拟机中运行的。5)从用户的桌面到内部云直接拖放虚拟机,即可将其从用户的PC移到VMWAREVSPHERE服务器上。这是从用户的PC将完整的应用程序环境部署到服务器上最简单的方式,可便捷地进行进一步测试、调试或者分析。VMWAREWORKSTATION8的新界面,重新得到设计和优化,简单极致,操作简单。22HADOOPHADOOP5是一个由APACHE基金会开发的分布式系统基础架构。它可以在大量的廉价硬件设备组成的集群上运行应用程序,为应用程序提供一组稳定而可靠
18、的接口,这样做的主要目标是为了构建一个具有高可靠性与良好扩展性的分布式系统。HADOOP实现了一个分布式文件系统(HADOOPDISTRIBUTEDFILESYSTEM),简称HDFS。HADOOP结构包括HDFS和MAPREDUCE。HDFS十分适合那些有着超大数据集的应用程序,因为HDFS不仅设计可以用来部署在低廉的硬件上,并且HDFS有着高容错性的特点,除此之外它还可以提供高传输5率来访问应用程序数据6。HDFS放宽了对POSIX的要求,这样不仅可以以流的形式访问文件系统中的数据,并且具有着大量特定的优点,例如HADOOP可以运行在廉价的PC上;HDFS的备份恢复机制以及MAPREDUC
19、E的任务监控机制保证了分布式处理的可靠性;分布式文件系统的高效数据交互实现以及MAPREDUCE结合LOCALDATA处理的模式,为高效处理海量的信息做了基础准备;而且不论是存储还是计算都支持大规模的扩展,这也是HADOOP的设计根本5。即便不了解分布式底层的具体细节,用户依旧可以充分利用集群高速的运算存储的威力来开发分布式程序。(1)HADOOP的优点高扩展性HADOOP是利用可用的计算机集簇间进行分配数据来完成计算任务的系统,这些可用的计算机集簇可以很方便地扩展到大数量的节点中。高可靠性人们十分信任HADOOP的处理数据能力以及按位存储方式。高容错性HADOOP能自动保存数据的多个副本,并
20、且能重新自动分配失败的任务。高效性HADOOP处理速度非常快,因为其能够在节点间动态地移动数据,并且保证各个节点的动态平衡。HADOOP运行在LINUX生产平台上是非常理想的,因为HADOOP自带有JAVA语言编写框架。HADOOP上的应用程序也可以使用其他语言编写。(2)HADOOP的架构HADOOP由许多元素构成,其最底部是HDFS,HDFS存储HADOOP集群中所有存储节点上的文件。HDFS的上一层是MAPREDUCE引擎,该引擎是由JOBTRACKERS与TASKTRACKERS组成的。简易的HADOOP集群视图如图21所示格式更改CLIENT(计算机)客户端NAMENODE名称节点D
21、ATANODE数据节点TCP/IPNETWORKINGTCP/IP网络METADATA元数据DATANODE数据节点DATANODE数据节点DATANODE数据节点图21HADOOP简化集群视图23HIVEHIVE7是一个基于HADOOP的数据仓库工具,可将结构化的数据文件映射为一张数据库表,并且提供完整的SQL查询功能,它可以将SQL语句转换成MAPREDUCE任务再运行。这样6的优点是学习成本低,可以通过SQL语句快速实现简单的MAPREDUCE的统计,不必去开发专门的MAPREDUCE应用,十分适合数据仓库的统计分析。HIVE提供了一系列的工具,可以用来进行数据提取转化和加载,这是一种可
22、以存储、查询和分析存储在HADOOP中的大规模数据的机制。HIVE定义了简单的类似SQL的查询语句,称为HQL,它允许熟悉SQL的用户查询数据。同时,这个语言也允许熟悉MAPREDUCE开发者的开发自定义的MAPPER和REDUCER来处理内建的MAPPER和REDUCER们无法完成的复杂分析工作。HIVE没有专门的数据格式,HIVE可以很好地工作在THRIFT之上,控制分隔符,也允许用户自己制定的数据格式。HIVE体系结构具体包括用户接口,云数据存储,解释器、编译器、优化器、执行器,HADOOP5。下面具体介绍各方面(1)用户接口主要有三个,分别为CLI,CLIENT和WUI。其中最常用的是
23、CLI,CLI启动的时候,会同时启动一个HIVE的副本。CLIENT是HIVE的客户端,用户连接到HIVESERVER。在启动CLIENT模式时,需要指出HIVESERVER所在的节点,并且在该节点上启动HIVESERVER。WUI是通过浏览器访问HIVE。(2)云数据存储HIVE将元数据存储在数据库中,例如MYSQL、DERBY。HIVE中的云数据包括表的名字,表的列以及分区和其属性,表的属性(是否为外部表等),表的数据所在目录等。(3)解析器、编译器、优化器、执行器解释器、编译器、优化器完成HQL查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在HDFS中,并
24、在随后有MAPREDUCE调用执行。(4)HADOOPHIVE的数据存储在HDFS中,而且大部分查询由MAPREDUCE完成(其中不包括的查询,比如SELECTFROMDATAMETE不会生成MAPREDUCE任务)。格式更改24ECLIPSEECLIPSE8集成开发环境在JAVA开发人员中得到普及使用,因为它是一个开放源代码并基于JAVA的可扩展开发平台。就ECLIPSE而言,它只是一个框架和一组服务,只用于通过插件组件构建开发环境。好的是,ECLIPSE附带了一个标准的插件集合,包括了JAVA开发工具。ECLIPSE是在WINDOWS下的,HIVE是在LINUX下的。3METECLOUD架
25、构分析31METECLOUD的架构本文是用HADOOP集群构建METECLOUD平台,METECLOUD只要是分为四层用户层、应用层、平台层和硬件层,如图31所示。(1)用户层指在METECLOUD平台搭建完成后,各个气象部门的用户都可以访问使用。7用户层中的各个气象部门不仅可以利用这个平台中的平台层进行应用开发,还可以直接使用应用层进行数据存储和分析。(2)应用层主要包括气象服务、气象数据存储分析、气象数据转存和集群管理。本文研究HIVE对气象数据进行的处理,及其中气象日值数据的转存实现。(3)平台层主要由HDFS、MAPREDUCE、HIVE、HBASE、ZOOKEERER和AVARTAR
26、NODE机制组成。(4)硬件层主要由各气象局提供的存储和计算服务的服务器、高性能计算机和光纤组成。硬件层只有数据中心的管理者才可以对其进行管理,其他普通用户基本是涉及不到的。32METECLOUD平台存储体系结构中的HIVE在METECLOUD中,数据在HDFS中使用HIVE表进行转存。HIVE的主要组成在本文4节HIVE结构分析中有详细介绍。用户先通过WEB接口提交数据到METECLOUD平台,然后通过接口输入历史数据并存储在HDFS中的HIVE数据库里,之后当用户要执行查询语句时,驱动程序(DRIVER)就可以从编译器获得一个HQL字符串的PLAN,除此驱动程序也可以发送一个MAPREDU
27、CE下的含有DAG的PLAN到执行引擎,例如SELECTFROMTABLE。此外用户可以直接或间接地通过MAPREDUCE操作数据或者执行应用程序。所有的文件和表都存储在HDFS中9。具体的相关流程结构,即METECLOUD平台存储体系结构如图31所示8HIVE服务器服务器多个服务器METEOROLOGICALAPPLICATIONS气象应用EXECUTIONENGINE执行引擎COMPILER编译器DRIVER驱动程序MAP/REDUCEHDFSWEBGUI外部接口HBASEMETASTORE系统目录DATA数据应用层客户层平台层硬件层图31METECLOUD平台的存储体系结构33AVART
28、ARNODE机制AVATARNODE10是HDFS上的一个补丁包,所以AVATARNODE的部署和使用都在HDFS上进行。AVATARNODE包括PRIMARYAVATARNODE、STANDBYAVATARNODE、NFS服务器和DATANODES(数据节点)以及CLIENTS(客户端)。其中PRIMARYAVATARNODE和STANDBYAVATARNODE、NFS服务器都只有一个,而DATANODES(数据节点)以及CLIENTS(客户端)都有多个。AVATARNODE采用了PRIMARYAVATARNODE、STANDBYAVATARNODE进行元数据同步,而却DATANODES分别
29、向这两个AVATARNODE上报同样的BLOCK位置和心跳等信息,除此AVATARNODE使用NFS作为元数据同步的共享存储10。因此AVATARNODE可以解决绝大部分的DOWNTIME。具体AVATARNODE的系统架构图如下9CLIENT客户端CLIENT客户端CLIENT客户端CLIENT客户端NATANODE(PRIMARY)NFS服务NATANODE(STANDBY)NATANODE00NATANODE02NATANODE03NATANODE01DATANODES向PRIMARYAVATARNODE和STANDBYAVATARNODE发送心跳和BLOCK位置等信息用户访问写入日志读
30、取PRIMARY日志并日志镜像做CHECKPOINT图32AVATARNODE系统架构图图32所示中PRIMARYAVATARNODE是指对外提供服务的NAMENODE(名称节点);STANDBYAVATARNODE也是对外提供服务的NAMENODE,运行一个NAMENODE进程,和PRIMARYAVATARNODE的内存元数据保持同步,而当PRIMARYAVATARNODE无法对外服务的时候,STANDBYAVATARNODE就将接替PRIMARYAVATARNODE的对外服务;PRIMARYAVATARNODE和STANDBYAVATARNODE通过NFS服务进行元数据同步,PRIMARY
31、AVATARNODE向NFS共享目录写入日志记录,STANDBYAVATARNODE定期读入NFS共享目录总的日志记录到内存进行合并,NFS协议的自身机制可以确保STANDBYAVATARNODE在接替PRIMARYAVATARNODE的时候,内存中的元数据与之前的PRIMARYAVATARNODE内存元数据完全一致;DATANODES将PRIMARYAVATARNODE和STANDBYAVATARNODE视为两个NAMENODE,将分别上报BLOCK信息等;CLIENTS是FACEBOOK提供的AVATARNODE的客户端。格式更改,合为一段4HIVE结构分析41HIVE与HADOOP的关系
32、(1)构建在HADOOP上的HIVEHIVE是构建在HADOOP之上的,HQL中对查询语句的解释、优化和生成查询计划都是10由HIVE完成的,而所有的数据都是存储在HADOOP中的,查询计划被转化为MAPREDUCE任务,在HADOOP中执行的11。而且HADOOP和HIVE都是用UTF8编码的,这也是它们两的共通。具体之间的架构联系如图41所示MAPREDUCEHIVEHDFSWEBGUI外部接口DB计数单位DATA数据THRIFTAPI(通过THRIFT软件框架进入API接口)METASTORE系统目录HIVECLI(HIVE接口之一)BROWSINGDDLQUERIES浏览DDL查询PA
33、RSER分析者OPTIMIZER优化者PLANNER设计者EXECUTION执行SERDE(SERIALIZE/DESERILIZE用于序列化和反序列化)THRIFTJUTEJSON图41HIVE与HADOOP之间的架构联系图(2)HIVE的体系结构主要分为以下几个部分用户接口,包括CLI、CLIENT、WUI;元数据存储,通常是存储在关系数据库如MYSQL、DERBY上;解释器、编译器、优化器、执行器;HADOOP,用HDFS进行存储,利用MAPREDUCE进行计算7。下面具体介绍各个部分(1)用户接口主要有三个CLI、CLIENT和WUI。其中最常用的为CLI,CLI启动的时候,会同时启动
34、一个HIVE副本。CLIENT是HIVE的客户端,用户连接至HIVESERVER。在启动CLIENT模式的时候,需要指出HIVESERVER所在的节点,并且在该节点上启动HIVESERVER。WUI是通过浏览器访问HIVE的。(2)云数据存储方面HIVE将元数据存储在数据库中,如MYSQL、DERBY。HIVE中的元数据包括表名,表的列和分区及其属性,表的属性(是否是外部表等),表的数据所在目录等数据。11(3)编译器、编译器、优化器完成HQL查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在HDFS中,并在随后有MAPREDUCE调用执行。(4)HIVE的数据存
35、储在HDFS中,大部分的查询都由MAPREDUCE完成(包含的查询,比如SELECTFROMTBL是不会生成MAPREDUCE任务的)。CLI命令行(外部接口之一)WEBGUI(外部接口之一)JDBC/ODBC应用编程接口APITHRIFTSERVER提供简单的APIDRIVER(COMPILER,OPTIMIZER,EXECUTOR)掌管HQL语句生命周期(周期包括编译,优化,执行)METASTORE系统目录JOBTRACKERMAPREDUCE中的载体之一NAMENODE名称节点HIVEHADOOPNAMENODETASKTRACKER(MAPREDUCE中另一个载体)NAMENODETA
36、SKTRACKER(MAPREDUCE中另一个载体)NAMENODETASKTRACKER(MAPREDUCE中另一个载体)图42HIVE架构图42所示主要体现了HIVE的一些组成部分和其与HADOOP的交互关系。(1)HIVE提供了外部接口,即用户接口命令行(CLI)和WEBGUI以及应用编程接口(API)JDBC(JAVADATABASECONNECTIVITY)JAVA数据库连接接口与ODBC(OPENDATABASECONNECTIVITY)开放数据库互连接口。补充(2)THRIFTSERVER提供了一个很简单的API用来执行HQL语句。THRIFT框架提供了多语言服务,使用一种语言加
37、JAVA编写的客户端,也支持其他语言编写。THRIFT客户端可由不12同语言生成,例如用来构建通用驱动的程序如JDBCJAVA,ODBCC,而且用PHP、PERL、PYTHON等语言编写的脚本驱动也可以生成。(3)DRIVER掌管HQL语句的生命周期,包括编译,优化和执行。DRIVER用来接收来自THRIFT服务器或者其他接口的HQL语句。DRIVER会创建一个SESSIONHANDLE用来统计执行时间,输出行个数等信息。(4)COMPILER是由DIRVER调用将接受得到的HQL语句转换成MAPREDUCE任务中的DAG组成的一个策略。OPTIMIZER是优化过程。(5)EXECUTIONE
38、NGINE方面DIRVER提交单独的MAPREDUCE任务到执行引擎(EXECUTIONENGINE),这些任务来自DAG并以拓扑顺序被提交,目前为止,HIVE都是使用HADOOP作为执行引擎。42HIVE的数据存储(1)HIVE数据存储的基本概念HIVE的数据存储是建立在HADOOPHDFS上的,没有专门的数据存储格式;存储的结构主要包括数据库、文件、表和视图;HIVE默认可以直接加载文本文件,还支持SEQUENCEFILE、RCFILE;创建表的时候,用户直接告诉HIVE数据的列分隔符和行分隔符,HIVE就可解析数据了12。(2)HIVE的数据模型HIVE中包括以下数据模型TABLE,EX
39、TERNALTABLE,PARTITION,BUCKET。1)数据模型数据库类似传统数据库的DATABASE,在第三方的数据库里实际是一张表2)数据模型表表分为TABLE内部表,PARTITION分区表,EXTERNALTABLE外部表,BUCKETTABLE。内部表与数据库中的TABLE在概念上市类似的,每一个TABLE在HIVE中都是由一个相应的目录存储数据。内部表的创建过程和数据加载过程(这两个过程可以在同一个语句中完成),在加载数据的过程中,实际数据会被移动到数据仓库目录中;之后对数据的访问将会直接在数据栈公开目录中完成。删除表时,表中的数据和元数据将会被同时删除。PARTITION分
40、区表对应于数据库中的PARTITION列的密集索引;在HIVE中,表中的PARTITION一一对应于表下的目录,所有的PARTITION的数据都存储在对应的目录中。EXTERNALTABLE外部表指向在HDFS中已经存在的数据,可以创建PARTITION。外部表和内部表在元数据的组织上是相同的,然而实际上数据的存储有较大的差异。外部表只有一个过程,加载数据和创建表同时完成,并不会移动到数据仓库目录中去,只是与外部数据建立一个链接。当删除一个外部表的时候,仅仅删除了该链接。BUCKETTABLE指定列计划HASH,根据HASH值切分数据,目的是为了并行,每一个BUCKET对应一个文件。(格式,本
41、来分成几小段的,现在合为一段)3)数据模型视图13视图与传统的数据库的视图类似;视图是只读的;视图基于的基本表,如果改变,就是指增加不会影响视图的呈现;如果删除视图,会出现问题;如果不指定视图的列,会根据SELECT语句的生成数据模型(3)数据存储操作题目更改1)字符集HADOOP和HIVE都是用UTF8编码的,所以所有的中文都必须用UTF8编码,这样才能正常使用。中文数据LOAD到表里面时,如果字符集不同很有可能全是乱码然后需要转码,但是HIVE本身没有函数可以来转码。2)压缩HIVEEXECCOMPRESSOUTPUT这个参数,默认是FALSE,但是很多的时候要单独再设置一遍,否则会对结果
42、进行压缩,如果用户后面的那个文件要在HADOOP上直接操作,那是绝对不能压缩的3)COUNT(DISTINCT)当前的HIVE不支持在一条查询语句中有多个DISTINCT,如果要在HIVE查询语句中实现多个DISTINCT的话,需要使用至少N1条的查询语句(N为DISTINCT的数目),前N条查询分别对N个列去重,那最后一条查询语句就会对N个去重之后的列做JOIN操作,得到最终结果。4)JOIN只支持等值连接5)DML操作只支持INSERT/LOAD操作,无UPDATE和DELTE6)HAVING不支持HAVING操作,如果需要这个功能要嵌套一个子查询用WHERE限制7)子查询HIVE不支持W
43、HERE子句中的子查询8)JOIN中处理NULL值的语义区别SQL标准中,任何对NULL的操作(例如数值比较,字符串操作等)结果都是NULL。HIVE对NULL值处理的逻辑和标准基本是一致的,除了JOIN时的特殊逻辑。这里的特殊逻辑是指,HIVE的JOIN中,作为JOINKEY的字段比较,NULLNULL是有意义的,并且返回值是TRUE。9)分号字符分号是SQL语句结束标记,虽然在HQL中也是,但是在HQL中,对分号的识别没有那么明确。10)INSERT根据语法INSERT必须加“OVERWRITE”关键字,也就是说每一次插入都是一次重写,那么新增数据关键在于,关键字UNIONALL的应用,即
44、将原有数据集合新增数据集进行结合,然后重写表。再插入数据时,是按照后面的SELECT语句总的字段顺序插入的,就是当ID和VALUE的位置互换后,VALUE将被写入ID,并同时ID被写入VALUE,这样改变插入的次序。对于插入的初始值是插入数据时,后面的字段的初始值应注意表定义中的一致性13。1443HIVE的实现过程元数据都是在HQL语句编译的时候被生成一个存储在HDFS中的XML文件,然后运行MAPREDUCE时候,将其传递给MAPPER和REDUCER(减少后期访问)。查询解析(QUERYPARSER)是实现中最主要的操作,即HIVE体系结构中DRIVER的绝大部分14,具体的步骤分为解析
45、,类型检测语义分析,优化和PHYSCIALPLAN生成。(1)解析(PARSE)使用ANTLR解析HQL语句,并产生AST抽象语法树(ABSTRACTSYNTAXTREE)。(2)类型检测和语义分析分析所有输入输出的TABLE,并创建LOGICALPLAN。通过一种中间表示结构QUERYBLOCK(QB)TREE,将AST转换成OPERATORDAG将嵌套的QUERIES变成父子关系的QBTREE。(3)优化(OPTIMIZATION)主要的五个元素为NODE,GRAHPWALDER,DISPATCHER,RULE,PROCESSOR。简单的几个优化处理方式列剪裁(COLUMNPRUNING)
46、只有需要用到的列才进行输出;谓词下推(PREDICATEPUSHDOWN)尽早进行数据过滤,减少后续处理的数据量;分区裁剪(PARTITIONPRUNING)只读取满足分区条件的文件;MAPJOIN对于JOIN中的一些小文件,可以在MAP阶段进行JOIN操作;JOINREORDERING进行JOIN操作时将在REDUCER中的小TABLE放入内存中,而大TABLE通过STREAM方式读取;GROUPBY优化进行局部聚合优化(包括HASHBASED和SORTBASED),对于SKEW的KEY(KEY的ROWNUM和SIZE在REDUCE中非常不均)可以进行两次MAPREDUCE的方式优化(4)P
47、HYSICALPLAN的生成根据上一步产生的结果,将其分解成一些MAP/REDUCE操作,并将最终结果写入到HDFS中。44HIVE与数据库的比较数据库是可以用在ONLINE上的应用,而HIVE是为数据仓库而设计的(HIVE中不支持对数据的改写和添加,所有的数据都是在加载的时候就已经确定好的)15。由于HIVE采用了SQL的查询语句HQL,所以很容易将HIVE理解为数据库,其实不然。从结构上看,HIVE和数据库除了拥有类似的查询语句外,再没有其他类似之处了,HIVE与数据库在各方面的具体异同情况如表41所示表41HIVE与数据库的比较查询语言HQLSQL数据存储位置HDFSRAWDEVICE或
48、者LOCALFS数据格式用户定义系统决定15数据更新支持不支持索引无有执行MAPREDUCEEXECUTOR执行延迟高低可扩展性高低数据规模大小5气象数据处理51气象数据集介绍本文我们研究处理中国地面国际交换站气候资料日值数据集,其数据集代码SURF_CLI_CHN_MUL_DAY_CES,建立于2005年7月26日,该数据集来源于各省、市、自治区气候资料处理部门逐月上报的地面气象记录月报表的信息化资料。中国地面国际交换站气候资料日值数据集文件命名为SURF_CLI_CHN_MUL_DAY_CESYYYYTXT,其中“YYYY”表示年份,数据集为中国194个国际交换站1951年以来地面日值数据
49、集,包括信息有平均气压、最高气压、最低气压、平均气温、最高气温、最低气温、平均相对湿度、最小相对湿度、平均风速、最大风速及风向、极大风速及风向、日照对数和降水量等数据。具体部分数据截图如图51所示,这是已经经过处理并存储为制表符格式的文件图51已处理的数据集截图如图51所示中第一行为例,其中“58251”是指区站号,“1954”指年,“11”指月,“1”指日,“0”指本站气压,“32766”指2M处干球气温,“32766”指极端最高气温,“32766”指极端最低气温,“10183”指水汽压,“40”指相对湿度,“137”指风速,“111”指0厘米地温,16“74”指20_20时降水量,“95”指最高气温。52处理数据存储的多维分析模块云数据仓库对大量数据处理都会包括数据挖掘,多维分析服务,还有数据展示的服务。本文主要研究数据的多维分析模块,大体云数据仓库处理数据框图如图52所示数据WEBUI外部接口MAPREDUCEHDFSHIVE多维分析模块OLAPHADOOP数据挖掘模块数据展示模块数据载入模块图52云数据仓库处理数据框图HADOOP及其相关的子项目组成提供了一个应用云计算技术的基础平台。在云数据仓库的整体架构中,HIVE是基于HADOOP构建了数据库,而HADOOP中分布式文件系统HDFS有良好扩展性、安全的优点,MAPREDUCE对存储在HDFS中的数据进行分布式和并行计