pb自定义多曲线图_如何使用Greenplum提高PB级数据处理能力

fb31ce0d1faf4d3f1809f53066aeb2b7.png

作者 个推高级数据研发工程师 糖炒栗子

前言:近年来,移动互联网、物联网、云计算的快速发展,催生了海量的数据。在大数据处理方面,不同技术栈所具备的性能也有所不同。如何快速有效地处理这些体量庞大的数据,令不少开发者为之苦恼。

随着Greenplum的异军突起,以往大数据仓库所存在的很多问题都得到了有效解决,Greenplum也成为新一代数据库的典型代表。本文对个推(每日互动)在处理庞大的数据量时,如何选择有效的技术栈进行了深入研究,并结合自身业务场景,详细分析了Greenplum在个推中的实践。

01

Greenplum诞生背景

2002年,互联网数据量正处于快速增长期,一方面传统数据库难以满足当前的计算需求,另一方面传统数据库大多基于SMP架构,扩展性能差。因此面对日益增长的数据量,SMP架构难以继续支撑,开发者需要一种数据库,可以支持分布式并行数据计算能力,Greenplum便应运而生。

和传统数据库的SMP架构不同,Greenplum是一种完全无共享(Share Nothing)的结构,相比SMP,扩展能力明显提升。Greenplum系统主要基于MPP架构,由多个服务器通过节点互联网络连接而成,每个节点只需访问自己的本地资源(包括内存、存储等)。

e9da29fa886212b53b0adef19e85bd0e.png

02

解读Greenplum架构

Greenplum主要由Master主节点和Interconnect网络层以及负责数据存储和计算的多个节点共同组成。

68325aff4986aa5de2076211abce1797.png

图片来源自Greenplum社区

Master上有主节点和从节点两部分,两者主要的功能是生成查询计划、派发、协调Segment并行计算,同时通过Master维护global system catalog。global system catalog这个全局目录存着一组Greenplum数据库系统本身所具有的元数据的系统表。Master通常不参与数据交互,Greenplum所有的并行任务都是在Segment的数据节点上完成的。因此,Master节点不会成为数据库的性能瓶颈。

中间的网络层Interconnect,主要负责并行查询计划Dispatch分发,同时通过libpq网络连接协调QE节点上      执行器的并行执行。正是因为Interconnect的存在,Greenplum才能实现对同一个集群中多个PostgreSQL实例的高效协同和并行计算。

结构图下方是负责数据存储和计算的节点,每个节点上     有多个实例。每个实例都是一个PostgreSQL数据库,同一机器上的实例共享节点的IO和CPU,而不同机器间相互独立。PostgreSQL在稳定性和数据处理性能方面较优,同时又有丰富的语法支持,满足了Greenplum的功能需要。

03

Greenplum的优势

Greenplum之所以能成为处理海量大数据的利器,与其所具备的几大优势密不可分。

优势一:支持数据快速加载和并行计算,大幅提升数据处理效率;

40cd6413ae0a3f1859dc343eefb9fe8c.png

 图片来源自Greenplum社区

Greenplum的数据管道可以高效地将数据从磁盘传输到CPU,而目前市面上常用的计算引擎Spark在传输数据时,则需要为每个并发查询分配一个内存,这对大型数据集的查询十分不利。Greenplum能够并行加载数据,具备实时查询功能,可以对大数据集进行更高效的计算。

优势二:扩展性能增强

Greenplum基于MPP架构,节点之间完全不共享,同时又可以并行查询,因此其在进行线性扩展时,数据规模可以达到PB级别。目前,Greenplum已经实现了开源,并且社区生态活跃,对于使用者而言,也是极为可靠的。

优势三:功能性优化

Greenplum支持复杂的SQL查询,大幅简化了数据的操作和交互过程,而目前流行的HAWQ、Spark SQL、Impala等技术基本都是基于MapReduce所进行的优化,虽然部分技术也使用了SQL查询,但是对SQL的支持比较有限。

我们针对目前市面上的几款主流工具,进行了多维度的对比,如下图所示:

方案

方式

优点

缺点

Green-

plum

实时数据直接读取GPDB,历史数据每天聚合一份存入GPDB

1.原先是商业数据库,容灾性好,稳定。2.查询速度快

超大规模集群扩展性有待验证

phoenix

HBase存储原始数据,通过phoenix查询

主要依赖HBase,使用起来方便;同时支持SQL查询

二级索引会带来数据量的飞速增长,而且当业务维度非常多,如果使用二级索引数据量会很大;HBase会开启协处理器的模式,对运维会有影响

Impala+

kudu

流式数据进来后先入到kudu中,实时数据通过Impala查询kudu。每天将kudu的数据转化成parquet格式存储在HDFS中,历史数据通过Impala查询parquet,在页面展示时将实时数据和历史数据union展示

计算和存储分离,存储能直接使用HDFS,查询速度较快

Impala查询对内存要求高,kudu容灾性并不佳。

04

Greenplum的容错机制

Greenplum数据库简称GPDB,它拥有丰富的特性,支持多级容错机制,具备高可用性能。 

1

主节点高可用:为了避免主节点单点故障问题,Greenplum特别设置了主节点的副本(称为Standby Master),通过流复制技术实现两者同步复制。当主节点发生故障时,从节点可以成为主节点,完成用户请求并协调查询执行。

2

数据节点高可用:Greenplum每个数据节点都可以配备一个镜像,在6版本之前其通过文件块级别的同步来实现数据同步;在6版本时,Greenplum采用WAL日志复制的方式来实现数据同步(称为filerep技术)。故障检测进程(ftsprobe)会定期探测各个数据节点的心跳,当某个节点发生故障时,GPDB会自动进行故障切换。 

3

网络高可用:为了避免网络的单点故障,每个主机会配置多个网口,并使用多个交换机,防止网络故障时,整个服务器都不可用。

同时,GPDB具有图形化的性能监控功能。基于此功能,用户可以确定数据库当前的运行情况和历史查询信息,同时跟踪系统使用情况和资源信息。

05

Greenplum在个推业务场景中的应用

d7ea006e600bda1876df6061aefeffa9.png

在深入调研了Greenplum之后,我们将它纳入了个推的技术地图中,也在个推的业务线中进行了实践,比如在 “个推应用统计”的业务中。

1.业务痛点:

74dcda156e30c5eb18789c0279ce23e8.png

“个推应用统计”是一款移动APP数据统计分析平台,它能从用户属性、使用行为、行业对比等多指标多维度对APP进行全面统计分析,帮助APP运营者深层次挖掘用户需求,清晰地了解APP所处的行业地位,为产品运营和推广决策提供全方位数据支撑。

最开始,“个推应用统计”中的数据统计主要是用离线统计的方式,后来随着产品的逐渐迭代、优化,很多需求逐渐无法满足了,例如:

1)  部分场景需要实时计算;

2) 用户活跃统计中跨天去重的场景;

3) 指标的统计维度过多,无法提前计算。

2.解决方案:

针对这一系列问题,个推引入了Greenplum作为实时数据分析的工具。目前个推使用的是Greenplum 5.16的版本。

1) 针对实时性的问题。“个推应用统计”每天的事件日志量达几十亿条,在数据导入的时候,我们使用了gpkafka作为实时数据写入的方式。

数据导入的具体流程:

Flume采集日志数据后发送到Kafka集群;

Spark Streaming先消费Kafka集群中的数据,再进行实时数据清洗、处理;

Spark Streaming随后将处理后的数据写入到Kafka集群中;

gpkafka工具消费Kafka集群中的数据,把消费后的数据写入到Greenplum的Heap表中,进行实时的数据分析展示。

c3f43e4e02611d328f3f06c15e2c2a8f.png

2) 针对跨天去重的问题,我们改造了Greenplum,在其基础上融入了Roaringbitmap。在数据处理阶段,定时任务将每天的用户信息构造成bitmap的格式,根据bitmap的“与、或”运算实现多天的用户计算查询。

3) 针对复杂维度统计的场景。“个推应用统计”有一些场景,用户会定义复杂的查询条件,比如多维事件分析、漏斗查询等。“个推应用统计” 查询功能模块,运用了pljava,类似于一个udf脚本,通过在SQL中使用pljava定义的function,实现了复杂统计的快速查询。

3.使用情况

目前个推业务线使用的Greenplum集群规模是10台,每天的数据量达几十亿。在近期,我们也经历了集群的扩容,通过Greenplum中的原生tools对节点进行扩充,对数据进行了自动重分布。Greenplum的一系列自动化工具也让运维人员的的扩容工作变得更加便捷。

4.效果

61cadf594f95081c703e717fd03ad9ff.png

引入Greenplum,极大地增强了个推的数据处理能力,包括海量数据的实时入库、实时查询、标签运算等。当前,数据的高效使用对于企业的重要性不言而喻。构建OLAP分析系统,对于业务的指导、公司的决策,都有举足轻重的作用,而Greenplum正可以帮助企业快速构建分析引擎,实现全面的数据分析。

_

数据查询

业务支持

稳定性

使用前

之前不支持数据实时入库查询,一般以t+1报表的形式

之前使用的HBase、Codis等对业务的支持能力有限

稳定性一般稳定性一般

使用后

基于海量数据的实时入库,以及实时统计,支持数据即时查询

能够支持复杂的SQL查询,完成漏斗统计、多维事件分析等功能

有完整的运维系统支撑,能够对数据库做实时监控和告警

本文主要介绍了个推在Greenplum方面的实践。未来,个推也将对Greenplum进行更深入地研究,例如自定义函数的使用方式,与开发者一同分享如何在生产环境中更好地对Greenplum进行使用。

e97e5e2e713a53089744be5881580a23.gif 6a3b76968d05c351027b418cb8cce3f3.png 03e02ea81c90292746f965a36408854e.png 13882ac1cb06a0679277a1ff28ab234c.gif

331ad4c8f823fc915022c8ddbdffc8c8.gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值