列式大数据分析数据库-Vertica

通信大数据分析及应用2019-02-04 09:00:52

本文介绍了什么

´ 电信级大数据分析典型需求

´ Vertica数据库特点及与其他数据库对比

´ Vertica核心技术介绍

´ 基于Vertica的典型分系统架构简介


电信级大数据分析典型需求

´ 海量数据存储:年分析数据量达到PB

  • Counter数据:各网元收集的统计数据,可用于监控和测量网络性能

  • MR详单:即手机向网络上报的无线性能测量报告,反映了用户实时无线环境真实情况

  • CDR数据:呼叫详单记录,由各个接口中与该事件相关的信令综合而成,是对用户在移动网络中的通话、短信、数据业务的事件记录

  • IUPS数据:对Iu-PS接口上采集的PS域信令面和用户面数据解析而成的话单数据

  • Gn数据:对Gn口原始码流解析得到的数据,主要反映用户使用各类数据业务的详细情况

  • 工参、投诉、设备告警、路测等其他数据

´ 高速数据汇总及分析:保证按天、按月滚动的分析模块能够及时完成

´ 少量的实时查询需求:从海量详单数据中迅速定位单个用户,例如用户轨迹查询

´ 结论:需要一种兼具数据仓库功能、数据分析功能的数据库;对信息检索速度要达到秒级;对超大数据集的汇总、关联操作要下降到分钟级(传统数据库如Oracle往往需要数小时)


Vertica特性

´ 大规模并行处理(MPP):基于廉价的X86服务器集群,获得高性能的分析处理能力。

´ 列式存储:为大多数分析型数据库所采用,区别于传统的交易型数据库(如Oracle),适用于按列高速查询,性能提升在50-1000倍。

´ 标准化的接口:基于SQL语句和传统的JDBCODBC等程序接口,利于现有数据分析系统移植。

´ 灵活的部署方式:既可部署于传统的本地硬盘存储,也可部署在HDFS存储系统上,方便与Hadoop系统集成。

´ 查询优化器:根据用户查询特性优化存储结构和查询算法,进一步提升查询性能(关联、分组等查询性能可再提高5-10倍)。

´ 丰富的管理和监控工具:为不同用户(数据分析、实时查询、数据导入等)分配各自系统资源(CPU、内存等),拥有图形化的网页监控界面。


Vertica与传统交易型数据库对比

传统数据库以交易型数据库为主,比如OracleMySQL,这些数据库的物理存储格式都是行存储,适合数据频繁的增删改操作(如股票交易系统),但对于统计分析类的查询,行存储其实效率很低。而以Vertica为代表的分析型数据库,采用了MPP列式存储方式,注重字段统计、汇总等分析操作,而弱化了记录的插入、删除操作。

下面对比两类数据库在执行分析任务时的差异。



VerticaNoSQL数据库对比

随着“大数据”的兴起,互联网企业纷纷推出了所谓NoSQL的新型数据库。这类数据库最大的特点是不再使用SQL语句进行数据查询,而采用Map/Reduce等技术处理数据,适合处理互联网产生的海量 非结构化数据(不再以“表”来组织数据)。与之相比,Vertica数据库更倾向于使用传统的SQL语言,处理结构化的数据,最近几个版本的Vertica也引入了Hadoop接口,使之具备了一定的非结构化数据处理能力。

下面对比VerticaHbase,一种典型的NoSQL数据库。



VerticaImpala对比

Impala是一款SQL on Hadoop开源数据库,最显著的特点是其结合了HDFS分布式存储系统和SQL查询语句,此外它采用“列式存储”的设计,这使其成为了一款高速的分析型数据库。尽管如此,Vertica与之相比,依然具有查询效率更高、运行更稳定、资源管理更方便等优势。



VerticaImpala测试对比

针对日常分析常用的三类SQL查询:记录统计、关联、分组汇总,我们使用相同硬件和数据源做了如下测试,可以看出Vertica具有明显速度优势。

测试环境

5HP-C7000刀片服务器组成的Vertica集群

1台主节点 + 5台从节点,HP-C7000刀片服务器组成的Impala集群



Vertica核心技术——大规模并行计算(MPP


´ Vertica采用无资源共享的大规模并行处理架构,节点间通过TCP/IP网络进行通信,每个节点采用本地磁盘来存储数据。

´ Vertica根据数据表内容自动的在集群之间划分数据,查询规划器决定如何应对查询语句,并将相应的工作派发到不同的合作结点上,然后再收集每个结点的部分结果,最后将部分结果整理成最后的查询结果,返回给查询用户。

´ Hadoop等集群采用的主-从节点规划不同,Vertica所有节点完全对等,数据加载可以并发在所有节点同时执行,数据的查询也可以在任意节点发起。

´ Vertica支持在线集群扩展,并在完成节点添加/删除后重新分配数据。


Vertica核心技术——Projection与列式存储


对于典型的分析查询而言,往往不需要读取整张表的没一行数据,而只需要获取所有列数据的一个子集。列式存储正是基于这一原则,在执行分析查询时跳过无关的列,从而节省了大量的I/O资源消耗。

在Vertica中,“表”仅仅表示逻辑上的二维数据结构,真正存储的数据结构是将表拆分得到的列的组合,称为Projection

Projection存储的不仅仅是数据。为了优化查询性能,Vertica系统针对每列数据的特点,会采用不同的编码和压缩算法、不同的排序方式及系统冗余设置等规则组织projection,再分散存储到数据库集群的各个节点上。

这些Projection的建立规则可以通过查询优化器(下面会介绍)自动生成,也可以由有经验的数据库管理员手动设置。通过这一系列的压缩及优化存储,可以进一步降低系统I/O消耗,提高查询效率。


Vertica核心技术——K-Safety容错机制


Vertica通过维护数据的多个冗余备份来实现高可用性。Vertica保证冗余数据被散列存储在不同的结点上,Vertica 将其称之为K级系数安全性(K-safety),K指的是Vertica能够容忍的可能发生故障数据结点的个数。系统会按K的取值在各节点上设置数据备份。

上图是一个典型的5节点集群,设置K=1,其中节点1存储有节点2的备份projection,节点2存储有节点3的备份projection,以此类推。在此设置下,任一节点宕机都不会影响数据库的正常运转。

通过合理的集群配置,可以在同时宕机数超过K值的情况下依然正常运转,理论上最大宕机节点数可以达到集群节点总数的一半。例如上图中,当节点2已经宕机,此时若节点45再发生宕机,依然不会发生数据丢失;但此时若节点13发生故障,数据丢失将不可避免。


Vertica核心技术——查询优化器



查询优化器通过分析数据库的负载与常用数据分析的计算特性,调整库内数据的存储、压缩、分布方式,从而根据用户需求优化数据库的数据装载或查询性能。

优化流程

  1. 首先根据数据平台常用查询,结合日常数据库监控数据,分析优化需求。

  2. 将优化需求(如样例查询及优化参数)提供给优化器,生成数据库优化脚本。

  3. 检查、部署优化脚本,测试优化效果。

优化关键点:

´ 存储速度优先VS查询速度优先

´ Projection建立数量和建立方式

´ 优化流程是一个循环、往复、不断提升的过程


Vertica在分析系统中的定位

´ Vertica数据库并不是用来取代传统的数据库OracleMySQL等)或各类基于Hadoop的数据库系统的,而更多地是互补与整合的关系。

´ 在一个完善的分析系统中,传统的数据库往往是那些规范化的数据来源,比如电信运营商的用户帐单、工参信息等,又或者是互联网行业的用户资料、交易信息等。

´ Hadoop系统则是那些非结构化的数据来源,如电信运营商各网元、接口采集的数据,又或者是互联网的各类XMLJSON文件。此外,HadoopMap/Reduce机制还非常适于各类海量数据的规整和缩减。

´ 在此基础上,Vertica分析型数据库利用其快速、灵活、易用的特性,完成各类数据的关联、汇总等分析工作。

´ 在顶层采用SASR等拥有成熟的回归、聚合模型工具做深度数据挖掘和数据可视化。


Vertica应用案例1:某电信运营商数据分析系统


电信运营商大数据分析的典型应用包括:

  • 终端用户行为分析

  • 详单分析

  • 网络优化/性能分析

  • 信令分析

  • 用户粘性和ARPU分析

……


Vertica应用案例2Twitter用户分析系统


Twitter大数据分析典型应用:

  • 客户行为分析

  • 交易分析

  • 社交关系分析

  • 个人需求识别和信息推送

……


What is More

´ 一个优秀的数据分析平台起始于高质量的数据归整与数据引入。

´ VerticaSASIBM SPSS Modeler等分析工具对接,利用这些工具搭建模型,实现更加灵活、深入的数据分析。

´ 利用Vertica提供的C++JavaR语言接口,编写用户自定义扩展程序(User-DefinedExtensions, Udx),可以满足那些使用SQL无法实现或对性能要求更高的分析需求。

´ 数据平台的搭建,仅仅是大数据分析的第一步,如何从这海量数据中发掘出真正的金矿,有赖我们打破固有思路,积极学习和探索,共同迎接这个大数据的时代!


本内容为中国联通网研院大数据独家提供,我们将定期分享大数据领域的前沿动态和创新理念,如需转载或合作,请与bigdata_server@163.com或微信号chengxz01联系。



Copyright © 古田计算器虚拟社区@2017