Hive 日志分析的大数据存储优化探讨
摘要:由于近些年我国信息化水平的提升,数据为我们工作与生活带来了不可估量的机制,怎样快速地转化大数据为可用信息,可以说是现阶段研究的重要课题。该研究基于 Hive 磁盘利用率与数据仓库查询性能的优化方式,有助于在专用场景中对 Hive 日志查询速率进行全面提升。该研究首先对 Hadoop 和大数据研究现状进行分析,其次探讨 Hive 日志分析的优化大数据存储策略,以期能够对大数据存储提供有效借鉴。
关键词:Hive 日志;大数据;存储优化
中图分类号:TP311.13;TP333 文献标识码:A 文章编号:1673-1131(2015)10-0130-02.
近年来社会信息发展水平的不断提升,使得我们的日常生活与工作逐渐离不开信息的支撑,通常信息中内含很多数据,充分挖掘所隐含的数据,有助于挖掘与利用其价值,并创造更多财富。大数据的特征主要包括以下几点:Value、Volume、Variety、Velocity。从表面可以看出,大数据的一个重要特征就是“大”,以往技术不能解决的数据被称为大数据,在现代化数据规模不断提升过程中,怎样存储是目前需要解决的关键性问题。数据为我们的工作与生活带来了不可估量的机制,怎样快速地转化大数据为可用信息,可以说是现阶段研究的重要课题。在大数据处理平台中,经多年发展与完善,Hadoop 分布式计算集群逐渐成为大众处理大数据的重要介质,同时不断优化 Hadoop 中的 Hive 数据仓库存储结构,提升 Hive 数据读写效率,此为本研究所探讨的重要内容。
1 Hadoop 和大数据研究现状
1.1 Haoop 与 Hive 的研究现状
作为一种分析大数据的常用工具,Hadoop在日常生活与工作中发挥着非常重要的作用与功能,而作为 Hadoop 中应用比较常见的一个数据仓库,Hive的主要特点是对开发Map-Reduce进行不断简化,该数据仓库备受工程师认可与接受。Hive 本身属于海量数据存储仓库,因为 Hadoop 平台特征,随着近些年数据量查询时间的不断增加,非定制化Hive指数阶也随之不断增长。在数据量过大的情况下,常规 HiveQL 查询需要消耗几天或者几十个钟头,因此,优化 Hive 是急需解决的问题。制化的Hive 引擎,能够依照系统特性对 Hive 存储结构进行动态调整,在很大程度上提升存储效率,降低查询时所消耗的时间比率,同时能够降低数据存储空间,在空间与时间上优化 Hive。
1.2 大数据研究现状
阿里巴巴、谷歌、搜狐等互联网企业成功催生了大数据与云计算。无论是大数据、云计算,还是互联网企业应用,其主要目标都在于创建一个高性能、低成本、易操作以及可扩展的海量数据存储系统。高性能,实际上是通过负载均衡机制和集群任务调配,有效处理和相应计算有相关性能;所谓低成本,就是大数据存储系统负载均衡与自动容错机制能够在普通PC中构建;可扩展,指的就是海量数据存储系统扩大集群规模,保证系统性能的不断提升;易操作,其实就是完善监控、与运维海量数据存储系统,并将这些信息发送给接口 api。基于金融、互联网以及通信等发展需求,与以往数据存储系统相比,大数据系统自身存储内容变化比较明显,满足大数据存储需求,传统关系型数据库要想满足该需求往往具有非常大的难度。
本文针对Hive 数据仓库查询性能和磁盘利用率的一种 优化策略,以便提升 Hive 在某些专用场景下的查询分析速度。文章提出了一种基于日志分析的存储格式优化策略,从数据分区优化策略,数据存储格式优化策略,去除冗余数据表和去除冗余字段策略,以及字段存储类型等 4 个角度进行优化。
2 Hive 日志分析的优化大数据存储策略
2.1 大数据存储优化策略概述
作为Hadoop中的一种数据仓库工具,Hive的主要作用在于,HDFS 中所储存的大数据,依照具体要求将这些数据映射成数据表,同时能够将与 SQL 相类似的 HiveQL 数据查询功能提供给用户,并转化使用者所提交的 Query 为 Map-Reduce任务。将类 SQL 查询结构提供给用户是 Hiv 日志的主要优势,能够在短时间内统计分析数据,无需对 Map-Reduce 任务进行编写,由此Hive数据仓库不需要实施专业优化设计,在很大程度上提升了大数据查询分析效率。本研究依照数据存储结构特性与 HiveQL 日志查询分析功能提出优化 Hive 数据存储方略。采用 Hive 日志分析方法不断优化 Hive 大数据存储,一般分为以下操作步骤:①全面分析常用查询日志,也就是说,依照使用者日常习惯对数据分区结构进行定制;②数据导入格式为已优化的专用列式存储结构;③依照数据表与表中字段物理意义,将其与数据表与压缩重复字段合并起来;④依照字段在数据表中的取值对字段存储类型进行不断优化;⑤对UDF进行编写,在确保用户日常习惯不变情况下,实施上述数据存储优化。通过以上优化,有助于缩短 HiveQL 数据查询时间,缩小数据在 HDFS 的占用空间。
2.2 根据日志查询进行分区优化
通常而言,Hive日志都会实时记录自身运动情况,这样就为操作者实际应用提供了很多便利条件,可以以编写Hive功能的方式对日志进行分析,采用 Hive 的 EXPLAIN 特性,笔者可以得到查询语句的抽象语法树,而本研究采用抽象语法树嫩巩固对语句语法结构进行查询。采用正则表达式获取特征数据,得到语法语句结构,同时详细编写shell 脚本,批量执行 EXPLAIN 所发出的命令,能够在短时间内对用户语法习惯加以理解,将数据支持提供给分区优化。对字段实施分区,有助于缩减数据查询时间,一般在未优化的 Hive 内,数据查询提交后,Hive会全满扫描与条件相满足的输入数据,对分区进行合理划分,提交单次任务后,能够根据任务限定条件对关键分区大数据进行扫描,确保全面提高 Hive 数据查询效率。
2.3 最佳 Hive 数据存储格式的选择
创建数据表时,必须选择相应的文件存储格式,数据格式在Hive0.9版本中主要分为用户自定义格式、RCFILE、TEXTFILE 等,区分以上格式的方法是列式储存、行式储存以及压缩算法等存在很大区别。依照 Hive 数据表格本身所具有的特性与Hive日志分析用户习惯,对文件存储格式进行合理选择,有助于查询效率的提升,同时也有助于缩短耗费时间。Hive 日志默认储存格式为 TEXTFILE,存储方式为文本文件,在加载TEXTFILE 数据过程中无需压缩,对数据查询任务进行处理时,同样为根据行列对数据进行读取,无需压缩与解压,在频繁更新数据中比较适用。SEQUENCEFILE 通常采用行式存储方式,然而存储内容为二进制流压缩文件,因为 SEQUENCEFILE 在 Hadoop 生态系统下属于标志性文件格式,所以,Hadoop数据在其它工具中的通用性非常好,数据与其它系统相比不存在可读性和可扩展性。
RCFILE 存储方式为列式,首先,基于 HDFS 结构,若干HDFS 共同构成一个表,各 HDFS 中,以 row group 为单位的FCFile 对数据进行组织,而且同一表中的 row group 具有相同的大小,而且各 row group 内部有三部分:第一部分为 syncmarker,其作用是对 HDFS 块内部 row Group 进行区分;第二部分为 metadata header,其作用是对 row group 数据进行记录,并记录列数据字节;第三部分为row group实际数据,存储 方式为列。通过列式存储,表中对小量数据进行查询,具有非常高的性能。然而,因为该方式为列式存储,而且对压缩算法进行了应用,全表查询性能要比前两种格式低。
3 结语
本研究主要探讨大数据存储优化中对Hive日志分析的应用,本研究结果显示,通过 Hive 日志分析不断优化大数据存储,有助于提升 Hive 数据存储查询效率与磁盘利用率。
参考文献:
[1] 王正也,李书芳.一种基于 Hive 日志分析的大数据存储优化方法[J].软件,2014,35(11):94-100.
[2] Anand Rajaraman, Mining of Massive Datasets [M], Cambridge University Press, 2012.
[3] Thusoo A, Sarma J S, Jain N, et al. Hive: a warehousing solution over a map-reduce framework[J]. Proceedings of theVLDB Endowment,2009, 2(2): 1626-1629.
作者简介:王悦(1972-),男,陕西西安人,硕士,工程师,研究方向为计算机网络及安全。