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

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

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

01Greenplum诞生背景

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

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

02解读Greenplum架构

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

图片来源自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的功能需要。

03Greenplum的优势

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

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

图片来源自Greenplum社区

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

优势二:扩展性能增强

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

优势三:功能性优化

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

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

04Greenplum的容错机制

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

1

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

2

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

3

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

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

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

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

1.业务痛点:

“个推应用统计”是一款移动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表中,进行实时的数据分析展示。

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

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

3.使用情况

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

4.效果

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

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

greenplum 存储过程_如何使用Greenplum提升PB级数据处理能力相关推荐

  1. greenplum 存储过程_揭秘!Greenplum并行执行引擎到底是如何工作的?

    <深入浅出Greenplum内核>系列直播以每月一场的速度持续推出中.在第一场<架构解读>直播里,我们了解了Greenplum的整体架构.存储管理.索引.查询执行.事务与日志等 ...

  2. Greenplum数据库(一)Greenplum简介及安装

    1. Greenplum数据库简介 Greenplum是基于开源PostgreSQL的分布式数据库,采用shared-nothing架构,即主机.操作系统.内存.存储都是每台服务器独立自我控制,不存在 ...

  3. Flink实践 | 360 政企安全基于 Flink 的 PB 级数据即席查询实践

    摘要:本文整理自 360 政企安全集团的大数据工程师苏军以及刘佳在 Flink Forward Asia 2020 分享的议题<基于 Flink 的 PB 级数据即席查询实践>,文章内容为 ...

  4. 360 政企安全集团基于 Flink 的 PB 级数据即席查询实践

    摘要:本文整理自 360 政企安全集团的大数据工程师苏军以及刘佳在 Flink Forward Asia 2020 分享的议题<基于 Flink 的 PB 级数据即席查询实践>,文章内容为 ...

  5. QCon大会实录:PB级数据秒级分析-腾讯云原生湖仓DLC架构揭秘

    导语 ‍‍‍‍文章整理了全球软件开发大会QCon<PB级数据秒级分析-腾讯云原生湖仓DLC架构揭秘>.大数据基于海量数据的分析,硬件.存储.计算资源尽量都可以用廉价的资源完成,如何在廉价资 ...

  6. 滴滴是如何搭建起PB级数据中台的?

    滴滴公司自12年底上线至今,俨然成功跻身互联网大咖行列,在以流量活命的互联网世界里,如果没有一定的硬核技术为业务做支撑,单靠营销与宣传,是没有办法留住日益挑剔的用户的. 我们今天就谈一谈滴滴打车背后所 ...

  7. greenplum客户端工具_首发全新Greenplum数据库图形化客户端

    原标题:首发全新Greenplum数据库图形化客户端 这是一个全新的Greenplum图形化客户端工具,由作者独自全新开发,基本风格布局保持与pgAdmin3一致,以单个可执行exe文件的形式发布,目 ...

  8. greenplum 底层 mysql_分布式数据库greenplum详解

    前言 在数据库诞生到现在,我们所能耳熟能详的数据库如oracle,mysql,sqlserver等,都属于关系型数据库,它们主要是基本的.日常的事务处理,记录即时的增.删.改.查,实时性要求很高,但数 ...

  9. mysql 动态传入表名 存储过程_面试再问MySQL存储过程和触发器就把这篇文章给他...

    Mysql存储过程及触发器trigger 存储过程 一.一个简单的存储过程 1,一个简单的存储过程 delimiter $$create procedure testa()begin Select * ...

最新文章

  1. Solartimes共识——View(20060502)和Form(20060501)
  2. .net生成随机字符串
  3. 如何将Microsoft Word文档转换为PDF
  4. YBTOJ:数列方案(组合数学)
  5. java中int转成String位数不足前面补零 java格式化2位数不足补零
  6. docker-compose配置固定IP各种问题
  7. r语言折线图_R语言做多变量可视化分析?
  8. 团队—贪吃蛇—需求分析
  9. Linux下配置安装JupyterNotebook,windows下通过浏览器直接连接使用
  10. 【阿里云视频点播加密视频播放报错】:网络错误加载数据失败(fragLoadError)或者403
  11. Linux下为Calibre书库打中文目录名与文件名补丁
  12. 项目中的Html和JS使用的随便总结
  13. C++开发 一个壁纸小软件
  14. cycJava基础以及集合总结
  15. 最常见的几种手机快充方式和原理
  16. 世界互联网大会,乌镇,互联网人的盛会,大数据文摘来了!
  17. jude 5.5.2 UML
  18. 系统架构图编写(概要设计)
  19. scala中sealed关键字使用指南
  20. adobe cs5 indesign 不显示文本框_Adobe CS5 InDesign自动添加页码

热门文章

  1. 使用神经网络做二分类,输出层需要几个神经元?应该选择哪一种激活函数?如果要处理minst数据、输出层需要几个神经元?使用那种激活函数?如果使用神经网络预测房价,输出层需要几个神经元、使用什么激活函数?
  2. vscode 显示最近打开的folder_vscode报错Module #x27;pygal#x27; has no #x27;Bar#x27; Member...
  3. 对Java基本数据类型的再思考
  4. Webinar: An introduction to PacBio’s long-read sequencing how it has been used to make important s
  5. Linux目录是否是否为空,在Linux上使用C检查目录是否为空
  6. python实现mysql事务_python连接mysql并提交mysql事务示例
  7. 微型计算机技术 第三章,微型计算机技术第三章部分答案概要.docx
  8. SpringBoot集成Druid
  9. C++——构造函数(拷贝构造,拷贝复制),析构函数,操作符重载
  10. LeetCode-笔记-57.插入区间