TalkingData公司在Greenplum上的应用实践

2017年8月23日的Greenplum技术研讨会,TalkingData架构师Max分享了该公司在Greenplum上的一些使用心得,分享给大家~~

一、TalkingData公司简介

一家提供手机端数据分析的厂家。

通过手机端SDK 嵌入,手机用户操作数据,进行分析。

主要产品:

​ AppAnalytic、GameAnalytic、Ad Tracking

​ 营销云 - Smart Marketing Cloud

二、Data ATM

1. 系统简介:

Data ATM是第一部分所介绍产品的后台支撑平台,主要是用的架构是Greenplum,功能如下:

  • 人群定位与分析平台
  • 基于多个数据源的不同条件,找出特定人群
  • 对特定人群进行分析画像
  • 为前端数据应用提供数据支撑

2. 业务架构

TalkingData公司在Greenplum上的应用实践

3. 流程图

TalkingData公司在Greenplum上的应用实践

4. 技术架构

TalkingData公司在Greenplum上的应用实践

业务架构通过任务执行器进行任务解析,根据不同的技术栈对应解析到不同的网关(Greenplum网关、Spark网关、ETL)。

任务解析器会将任务解析成SQL分配给Greenplum执行,目前平台95%的数据源分析工作都是交给Greenplum执行的;另外Spark的任务是通过API调用执行的;ETL的过程,也都是通过Spark实现的。ETLSpark和GP的冷数据落盘,都是落到HDFS中去。

作者提到,开始的时候,他们用的是纯Spark的架构,但是慢慢发现Spark并不能完全满足业务需求,开发难度较大,故切换到Greenplum。目前Lookalike模型在Spark上。

三、主要数据存储Greenplum

1. 数据容量

  • 总数据容量400TB
  • 15~20TB每天
  • 唯一设备数55亿+
  • 日活设备数2.5亿
  • 月活设备数6.5亿
  • 月位置数据(聚集后)600亿,3个月的位置数据量,2000亿
  • 最大单个任务参与计算数据超过6TB
  • 任务耗时1秒~5分钟
  • 机器磁盘容量占用70%左右

2. 目前Greenplum规模

  • 21个数据节点,1个Master,单台机器配置4个Primary Instance,4个Mirror Instance;
  • 共计84个primary,84个mirror
  • 单节点配置:

​ 24Core CPU

​ 128GB RAM

​ 14*SAS 7200 Disk Raid 5 = 45TB(使用的应该是单块容量4T的盘)

  • 目前存储数据量

​ 400TB+纯文本数据存储在HDFS上,上载到本地磁盘的数据量大于400TB

3. Why Greenplum

  • 得益于可控的数据分布,提高执行效率,相比于spark上面块分布的策略,GP可以提供根据ID值的均匀分布,计算效率更高
  • 支持列式存储和压缩,方便对数据进行压缩,节约容量
  • 支持多样的数据类型:Array XML Json等,加快查询,节约开发成本
  • 支持GEO空间计算引擎PostGIS,不需要自己开发较复杂的空间计算函数
  • 扩展性强,Function Operator DataType Aggregation Index都可以由用户来*定义,为二次开发及扩展提供很大帮助
  • 支持多种主流语言:PGSQL C Python Perl Java R,方便各类扩展
  • 使用标准的SQL语言,降低前端开发成本和时间

三、技术点分享

1. Array& Json

  • 通过使用数组缩减数据量,加快查询
  • 部分数据使用了多维数组,官方对多维数组支持较差,可以通过UDF实现
  • Greenplum5.0支持Json格式

举例:

TalkingData公司在Greenplum上的应用实践

TalkingData公司在Greenplum上的应用实践

2. PostGIS

  • 支持所有的空间数据类型
  • 支持复杂的空间和地理位置计算
  • 数据库坐标变换
  • 球体长度计算
  • 三维几何类型
  • 空间聚集函数

聚集点数据举例:

TalkingData公司在Greenplum上的应用实践

GEOHash解释

3. Bitmap

  • 在Greenplum内实现了Bitmap相关计算功能,用C写的UDF,效率不错
  • 基于RoaringBitmap算法,一个压缩算法,比较流行,在Spark和Hadoop上应用比较广泛
  • 通过标准的SQL语句来执行计算,可以像操作普通SQL语句一样操作这些RoaringBitmap数据
  • 10亿级别的位运算达到了毫秒级别

Bitmap示例:

TalkingData公司在Greenplum上的应用实践

TalkingData公司在Greenplum上的应用实践

TalkingData公司在Greenplum上的应用实践

使用Bitmap进行加速查询示例:

TalkingData公司在Greenplum上的应用实践

TalkingData公司在Greenplum上的应用实践

End~

上一篇:win764位Ruby2.0环境搭建之Ruby on Rails


下一篇:c# winform 把彩色图片转换为灰色的图片,变灰,灰度图片,速度很快,safe,unsafe