vertica在电信的应用
本文介绍了什么
´ 电信级大数据分析典型需求
´ Vertica数据库特点及与其他数据库对比
´ Vertica核心技术介绍
´ 基于Vertica的典型分系统架构简介
电信级大数据分析典型需求
´ 海量数据存储:年分析数据量达到PB级
Counter数据:各网元收集的统计数据,可用于监控和测量网络性能
MR详单:即手机向网络上报的无线性能测量报告,反映了用户实时无线环境真实情况
CDR数据:呼叫详单记录,由各个接口中与该事件相关的信令综合而成,是对用户在移动网络中的通话、短信、数据业务的事件记录
IUPS数据:对Iu-PS接口上采集的PS域信令面和用户面数据解析而成的话单数据
Gn数据:对Gn口原始码流解析得到的数据,主要反映用户使用各类数据业务的详细情况
工参、投诉、设备告警、路测等其他数据
´ 高速数据汇总及分析:保证按天、按月滚动的分析模块能够及时完成
´ 少量的实时查询需求:从海量详单数据中迅速定位单个用户,例如用户轨迹查询
´ 结论:需要一种兼具数据仓库功能、数据分析功能的数据库;对信息检索速度要达到秒级;对超大数据集的汇总、关联操作要下降到分钟级(传统数据库如Oracle往往需要数小时)
Vertica特性
´ 大规模并行处理(MPP):基于廉价的X86服务器集群,获得高性能的分析处理能力。
´ 列式存储:为大多数分析型数据库所采用,区别于传统的交易型数据库(如Oracle),适用于按列高速查询,性能提升在50-1000倍。
´ 标准化的接口:基于SQL语句和传统的JDBC和ODBC等程序接口,利于现有数据分析系统移植。
´ 灵活的部署方式:既可部署于传统的本地硬盘存储,也可部署在HDFS存储系统上,方便与Hadoop系统集成。
´ 查询优化器:根据用户查询特性优化存储结构和查询算法,进一步提升查询性能(关联、分组等查询性能可再提高5-10倍)。
´ 丰富的管理和监控工具:为不同用户(数据分析、实时查询、数据导入等)分配各自系统资源(CPU、内存等),拥有图形化的网页监控界面。
Vertica与传统交易型数据库对比
传统数据库以交易型数据库为主,比如Oracle、MySQL,这些数据库的物理存储格式都是行存储,适合数据频繁的增删改操作(如股票交易系统),但对于统计分析类的查询,行存储其实效率很低。而以Vertica为代表的分析型数据库,采用了MPP列式存储方式,注重字段统计、汇总等分析操作,而弱化了记录的插入、删除操作。
下面对比两类数据库在执行分析任务时的差异。
Vertica与NoSQL数据库对比
随着“大数据”的兴起,互联网企业纷纷推出了所谓NoSQL的新型数据库。这类数据库最大的特点是不再使用SQL语句进行数据查询,而采用Map/Reduce等技术处理数据,适合处理互联网产生的海量 非结构化数据(不再以“表”来组织数据)。与之相比,Vertica数据库更倾向于使用传统的SQL语言,处理结构化的数据,最近几个版本的Vertica也引入了Hadoop接口,使之具备了一定的非结构化数据处理能力。
下面对比Vertica与Hbase,一种典型的NoSQL数据库。
Vertica与Impala对比
Impala是一款SQL on Hadoop开源数据库,最显著的特点是其结合了HDFS分布式存储系统和SQL查询语句,此外它采用“列式存储”的设计,这使其成为了一款高速的分析型数据库。尽管如此,Vertica与之相比,依然具有查询效率更高、运行更稳定、资源管理更方便等优势。
Vertica、Impala测试对比
针对日常分析常用的三类SQL查询:记录统计、关联、分组汇总,我们使用相同硬件和数据源做了如下测试,可以看出Vertica具有明显速度优势。
测试环境:
5台HP-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已经宕机,此时若节点4或5再发生宕机,依然不会发生数据丢失;但此时若节点1或3发生故障,数据丢失将不可避免。
Vertica核心技术——查询优化器
查询优化器通过分析数据库的负载与常用数据分析的计算特性,调整库内数据的存储、压缩、分布方式,从而根据用户需求优化数据库的数据装载或查询性能。
优化流程
首先根据数据平台常用查询,结合日常数据库监控数据,分析优化需求。
将优化需求(如样例查询及优化参数)提供给优化器,生成数据库优化脚本。
检查、部署优化脚本,测试优化效果。
优化关键点:
´ 存储速度优先VS查询速度优先
´ Projection建立数量和建立方式
´ 优化流程是一个循环、往复、不断提升的过程
Vertica在分析系统中的定位
´ Vertica数据库并不是用来取代传统的数据库(Oracle、MySQL等)或各类基于Hadoop的数据库系统的,而更多地是互补与整合的关系。
´ 在一个完善的分析系统中,传统的数据库往往是那些规范化的数据来源,比如电信运营商的用户帐单、工参信息等,又或者是互联网行业的用户资料、交易信息等。
´ Hadoop系统则是那些非结构化的数据来源,如电信运营商各网元、接口采集的数据,又或者是互联网的各类XML、JSON文件。此外,Hadoop的Map/Reduce机制还非常适于各类海量数据的规整和缩减。
´ 在此基础上,Vertica分析型数据库利用其快速、灵活、易用的特性,完成各类数据的关联、汇总等分析工作。
´ 在顶层采用SAS、R等拥有成熟的回归、聚合模型工具做深度数据挖掘和数据可视化。
Vertica应用案例1:某电信运营商数据分析系统
电信运营商大数据分析的典型应用包括:
终端用户行为分析
详单分析
网络优化/性能分析
信令分析
用户粘性和ARPU分析
……
Vertica应用案例2:Twitter用户分析系统
Twitter大数据分析典型应用:
客户行为分析
交易分析
社交关系分析
个人需求识别和信息推送
……
What is More
´ 一个优秀的数据分析平台起始于高质量的数据归整与数据引入。
´ 将Vertica与SAS、IBM SPSS Modeler等分析工具对接,利用这些工具搭建模型,实现更加灵活、深入的数据分析。
´ 利用Vertica提供的C++、Java和R语言接口,编写用户自定义扩展程序(User-DefinedExtensions, Udx),可以满足那些使用SQL无法实现或对性能要求更高的分析需求。
´ 数据平台的搭建,仅仅是大数据分析的第一步,如何从这海量数据中发掘出真正的金矿,有赖我们打破固有思路,积极学习和探索,共同迎接这个大数据的时代!
vertica在电信的应用的更多相关文章
- Vertica 数据库知识汇总篇
Vertica 数据库知识汇总篇(更新中..) 1.Vertica 集群软件部署,各节点硬件性能测试 2.Vertica 创建数据库,创建业务用户测试 3.Vertica 数据库参数调整,资源池分配 ...
- Vertica 7.1安装最佳实践(RHEL6.4)
一.前期准备工作 1.1各节点IP和主机名 1.2上传脚本并设定环境变量 1.3添加信任 1.4前期准备检查并调整 二.Vertica安装 三.集群性能评估 一.前期准备工作: 1.1各节点IP和主机 ...
- Vertica 安装,建库,新建测试用户并授予权限,建表,入库
测试环境:RHEL 6.4 + Vertica 6.1.3-7 需求:搭建Vertica数据库3节点的测试环境,建立测试用户,建表,测试数据入库. 1.各节点关闭防火墙和SELinux,配置主机名,I ...
- Troubleshooting:重新安装Vertica建库后无法启动
环境:RHEL6.5 + Vertica7.1.0-3 1.故障现象 2.重装集群 3.再次定位 4.解决问题 5.总结 1.故障现象 故障现象:Vertica集群安装成功,但是创建数据库后一直无法u ...
- Vertica 分区表设计
Vertica数据库中的表只是一个逻辑概念. 实际存储在磁盘上的是projection. 当创建一张表,没有创建projection时,那么插入数据的时候会自动创建一个默认的projection.如果 ...
- Vertica 分区表设计(续)
在上篇Vertica 分区表设计中,已经提过了Vertica的分区表创建和分区删除,但举例上并不系统, 本篇文章将系统的对分区表设计及后续的删除分区进行讲解. 概述:Vertica分区表(天和月)创建 ...
- Vertica 业务用户指定资源池加载数据
之前在"Vertica 安装,建库,新建测试用户并授予权限,建表,入库"这篇文章也简单介绍过入库部分的内容. 但之前测试用例若用于生产环境有明显的局限性: 1.是用dbadmin管 ...
- Vertica 导出数据测试用例
需求:构建简单的测试用例,完成演示Vertica导出数据的功能. 测试用例:导出test业务用户t_jingyu表中的数据. 一.初始化测试环境 二.导出数据 2.1 vsql命令说明帮助 2.2 导 ...
- Vertica增加一个数据存储的目录
Vertica增加一个数据存储的目录 操作语法为: ADD_LOCATION ( 'path' , [ 'node' , 'usage', 'location_label' ] ) 各节点添加目录,并 ...
随机推荐
- C语言学习笔记(一)_hello world程序中涉及的c语言元素
#include <stdio.h> //使用printf函数之前必须include<stdio.h> int main() { int i; //声明一个变量 printf( ...
- 在easyui中如何修改combobox的下拉框的高度为自适应高度
在easyui中,有时候easyui下拉框的高度比较高,如果我们的值比较少,而下拉框的高度很高的话看起来不好看,修改前效果如下所示: 要修改下拉框的高度和我们的值自适应的 话,只要添加一个panelH ...
- 使用id名称和name直接获取元素
我们知道一些第三方的js库对如何快速选取html中的元素做了一些简化,貌似十分高深莫测,其实也不然.而且js本身自带了对于特殊元素的简便选取的方法,下面就为大家简单介绍下. 在html中,一般最直接的 ...
- 不起眼的 z-index 却能牵扯出这么大的学问
z-index在日常开发中算是一个比较常用的样式,一般理解就是设置标签在z轴先后顺序,z-index值大的显示在最前面,小的则会被遮挡,是的,z-index的实际作用就是这样. 但是你真的了解z-in ...
- VS2016 发布项目提示 CS0006 C# Metadata file 'xxxxxxx.dll' could not be found
生成的时候没有问题,发布项目的时候提示 CS0006 C# Metadata file 'xxxxxxx.dll' could not be found 解决方案,找到 xxxxxxx.dll 这个项 ...
- Nginx+tomcat负载均衡时静态页面报404
百度到的问题解决BLOG http://os.51cto.com/art/201204/326843.htm nginx+2台tomcat负载均衡,应用程序已部署,单独访问tomcat时,可以访问到所 ...
- 让padding、border等不占据宽度
box-sizing:border-box; -moz-box-sizing:border-box; /* Firefox */ -webkit-box-sizing:border-box; /* S ...
- 使用ycsb测试cassandra
参考 https://github.com/cloudius-systems/osv/wiki/Benchmarking-Cassandra-and-other-NoSQL-databases-wit ...
- 第二节(RequestMapping请求方式)学习尚硅谷-springmvc视频教程
项目中,创建测试类SpringMVCTest @Controller @RequestMapping("/springmvc1") public class SpringMVCTe ...
- java学习教程
java依然是目前比较流行的语言.虽然,本人是C#开发者,但是由于公司决定使用java开发,所以只好开始学习java.在学校时候只是接触过没有过深的学习过,而且参加工作后基本也一直在搞C#.好在,现在 ...