43
1 并行不悖 OLAP 在互联网公司的实践与思考 赵飞祥

并行不悖 - OLAP 在互联网公司的实践与思考-20190429

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

1

并行不悖 –OLAP 在互联网公司的实践与思考

赵飞祥

2

Greenplum现状说明三

Greenplum体系架构二

数据仓库体系架构一

Greenplum开发规范五

Greenplum运维体系四

Greenplum扩展规划六

3

数据仓库体系架构

业务数据与数据使用归类

时间维度:过去 - 现在 - 未来 (数据的生命周期)

• “现在”的数据 —— OLTP

• “过去”的数据—— OLAP

• “未来”的数据——趋势分析

4

数据仓库体系架构

业务数据与数据特点

• 现在的数据 —— OLTPØ实时,在线系统,客户使用

Ø事务小,频率高,并发高

•过去的数据—— OLAPØ非实时(T+1,或小时级),离线系统,分析决策Ø事务大,频率相对小,并发低

•未来的数据——趋势分析Ø非实时,离线+在线流系统,趋势分析Ø算法分析,持续计算

5

数据仓库体系架构

OLAP场景举例

•业务相关场景Ø用户状态(注册数,活跃数,并发量,峰值)

Ø金币状态

Ø道具/物品状态Ø对账状态

Ø活动反馈

•架构相关场景Ø不同数据量,不同事务特点,不同查询需求

Ø历史数据归档与冷热分离

Ø实时与延时需求的权衡

6

数据仓库体系架构

数据流转过程

• 1 业务数据的产生 —— OLTP• 2 业务数据的中转—— ETL服务器• 3 数据的存储和计算—— OLAP集群• 4 结果数据的展现——数据集市• 5 访问接口的封装—— API接口服务器• 6 最终数据的显示——前端界面

• 7 结果数据的交互—— OLTP,趋势分析• 8 OLAP数据流转—— dbsync平台

7

数据仓库体系架构

数据架构示意图

8

数据仓库体系架构

架构的具体技术实现

•轻量级数据仓库—— Inforbright– 与MySQL数据库结合,易使用,冷热分离– 数据库归档,只能load,不支持DML– 对特定OLAP类查询有很好的支持作用

•通用性数据仓库—— Greenplum– 独立的数据库仓库解决方案

– 可以很好支持各种方式的数据加载和DML操作– 具备海量的数据存储和计算性能

9

Greenplum现状说明三

Greenplum体系架构二

数据仓库体系架构一

Greenplum开发规范五

Greenplum运维体系四

Greenplum扩展规划六

10

greenplum体系架构

postgresql体系结构

11

greenplum体系架构

postgresql体系结构

• pg结构组成Ø 连接关系系统

Ø 编译执行系统

Ø 存储执行系统

Ø 事务系统

Ø 系统表

• pg逻辑和物理结构Ø instance实例 - user - tablesapceØ database - schema - table,view,function - data rowØ 物理文件 - oid -表空间 -数据文件命名

12

greenplum体系架构

greenplum的体系结构

13

greenplum体系架构

greenplum的体系结构

14

greenplum体系架构

greenplum的体系结构

• greenplum的架构特点Ø MPP ShareNothing 海量并行处理+完全无共享Ø cpu计算能力Ø 数据从Disk上的I/O吞吐性能Ø master管理节点Ø segment数据节点

• greenplum的核心功能Ø 无共享MPPØ 多态存储

Ø 高效数据加载 (gpfdist+外部表,每小时4TB+)Ø 分布分区

Ø 数据压缩

Ø 外部访问

15

Greenplum现状说明三

Greenplum体系架构二

数据仓库体系架构一

Greenplum开发规范五

Greenplum运维体系四

Greenplum扩展规划六

16

Greenplum现状说明

Greenplum集群现状概述

• 三大Greenplum集群体系Ø 公司IDC_01机房Greenplum体系Ø 公司IDC_02机房Greenplum体系Ø 公司IDC_03机房Greenplum体系

•服务器资源Ø 三大Greenplum集群,共用 422 个postgresql实例Ø 实例分布成为 28 个Greenplum集群或postgresql单实例

•服务器资源Ø 三大Greenplum集群,共使用 51 台服务器资源Ø 12台虚拟机,39台物理机

17

Greenplum现状说明

三大Greenplum集群定位分类

•公司IDC_01机房Greenplum体系Ø 公司第一套Greenplum集群,网络环境为千兆网Ø 数据来源为OLTP库,针对小数据量传输和计算,部分实时交互操作Ø 以对账业务为主,统计计算为辅

•公司IDC_02机房Greenplum体系Ø 针对数据来源主要是kfk产生csv文件的业务,不直接从数据库传数Ø 以重点业务线、活动数据、非OLTP业务数据的任务计算为主

•公司IDC_03机房Greenplum体系Ø 数据来源来源为OTLP库库,针对大数据量传输和计算,采用T+1方式Ø 以核心业务的数据计算、统计为主

18

Greenplum现状说明

数据架构示意图

19

Greenplum现状说明

三大Greenplum集群关系

•数据来源不同•数据处理不同•时效速度不同

•体系架构相同•年表划分相同•平台整体定位

•定位不同,多集群配合形成逻辑大集群

20

Greenplum现状说明

Greenplum多层业务规划图

21

Greenplum现状说明三

Greenplum体系架构二

数据仓库体系架构一

Greenplum开发规范五

Greenplum运维体系四

Greenplum扩展规划六

22

Greenplum运维体系

环境创建与部署

•部署流程Ø 规划部署方案

Ø 准备硬件资源

Ø 修改系统参数

Ø 安装 Greenplum 软件 / postgresql软件Ø 初始化实例

Ø 修改实例参数文件

Ø 初始化业务所需库表环境、用户环境

Ø 加载数据

Ø 业务程序访问

23

Greenplum运维体系

环境创建与部署

•部署注意点

Ø 资源要充足(ETL,管理节点,数据节点,数据集市)Ø 万兆网络(网络环境对功能和性能的影响)

Ø 节点规划(数据节点6-10个segment节点)Ø 参数调整 (操作系统参数,greenplum集群参数)

24

Greenplum运维体系

系统状态监控 - gpcc -公司IDC_01机房

25

Greenplum运维体系

系统状态监控 - gpcc -公司IDC_02 机房

26

Greenplum运维体系

系统状态监控 - gpcc -公司IDC_03机房

27

Greenplum运维体系

数据库备份

•配置与结构备份Ø 多机房级联备份

Ø Greenplum在本机进行第一次备份Ø 备份通过rsync传输到同机房ETL服务器Ø 各机房ETL服务器在备份到备份服务器

•结果数据备份Ø Greenplum集群与postgresql集市备份Ø 结果数据csv文件备份Ø 结果数据到备份postgresql实例

28

Greenplum运维体系

数据库数据传输与同步

•数据同步情况分类Ø reader端与writer端Ø 全量,id列增量,date列增量Ø datax,csv,load,copyØ 数据同步结果确认与显示

•数据同步方式Ø gpfdist+外部表: UMGW大表Ø db_sync同步程序:底层库 + 同步逻辑 + Django界面Ø 临时同步需求: datax , copy

29

Greenplum运维体系

数据库数据传输与同步-db_sync

30

Greenplum运维体系

数据库数据传输与同步-db_sync

31

Greenplum运维体系

Greenplum任务调度

• greenplum内部存储过程调度Ø大批量任务采用 kettle调度Ø单个存储过程,可以在shell中 select func_name() 的方式调度

•外部任务调度Ø将整个过程封装成shell脚本,或 Python脚本Ø用crontab在操作系统调用脚本Ø用 opencron在图形界面调用脚本

32

Greenplum运维体系

Greenplum任务调度-opencron

33

Greenplum现状说明三

Greenplum体系架构二

数据仓库体系架构一

Greenplum开发规范五

Greenplum运维体系四

Greenplum扩展规划六

34

Greenplum开发规范

不规范容易出现的问题

• GP架构易出现问题Ø 资源不足

Ø 连接、语句执行失败

Ø 多任务冲突

•库表使用易出现问题Ø 表定义过大

Ø 表类型单一

Ø 表的散列键不恰当

Ø 分区表的分区键性能不佳

•加载易出现问题Ø 文件加载出现特殊字符

Ø 数据校验标准问题

35

Greenplum开发规范

业务库表设计规范

• GP中表的范围Ø 最大时间为年表

Ø 数据量小,可用单表

•多种表类型Ø 堆表(选好常用列作为三列键)

Ø 分区表(按照 yyyymmdd 分区,建议都添加 datenum int8)Ø append表Ø 列存储表

Ø 多种表类型结合

•表的命名Ø GP内所有名称都小写Ø table_name命名要符合命名规则,做到见名知义

36

Greenplum开发规范

用户与权限规范

• 四层授权保保障Ø 角色 role :管理数据库内对象权限Ø 用户 user :用户认证权限Ø pg_hba.conf :实例权限配置文件Ø iptables : 防火墙IP访问配置策略

• 账号类型划分Ø 管理账号

Ø 开发账号

Ø 调度账号

Ø 业务账号

Ø 测试账号

• 账号名称限定Ø 所有都用小写字母加下划线的方式

Ø 按照命名规则,做到见名知义

37

Greenplum开发规范

Greenplum使用规范

•平时使用规范Ø避免高频率的insert、update操作Ø避免频繁执行高内存消耗的会话

Ø避免出现死锁

Ø可以在适当的时候执行 vaccum 操作Ø避免直接在Greenplum执行消耗session会话的操作Ø尽量不创建索引

•上线与调度规范Ø上线的程序,必须要经过测试,才可以生产使用

Ø调度程序需考虑每个任务的前后关系,时间富裕

Ø避免因为过于追求并行度,对多个任务造成相互影响

38

Greenplum现状说明三

Greenplum体系架构二

数据仓库体系架构一

Greenplum开发规范五

Greenplum运维体系四

Greenplum扩展规划六

39

Greenplum扩展规划

整体扩展思路

• OLAP三大模块不断完善Ø 通过dbsync程序,实现数据传输和加载优化Ø 对于Greenplum上的架构和设计不断优化Ø 继续建设多样化的postgresql数据集市,满足不同需求

•优化现有业务的调度实现Ø 时间周期的考量

Ø 并发与功能实现的权衡

Ø 增强任务可控性和可度量性

•支持符合条件的新业务Ø 抽象业务模型,整合使用分类

Ø 简化上线模型,优化上线方式

40

Greenplum扩展规划

新业务上线流程

•把握三个方面,解决三个问题Ø 确认数据来源与传输,解决原始数据从那里来的问题

Ø 确认数据如何计算,解决数据存储和计算加工的问题

Ø 确认数据集市状态,解决结果数据最终展示的问题

•实现方式Ø OLAP与OLTP不同,没有非常固定的方式Ø 没有事务性工作

Ø 只有针对每个业务需求的架构新、探索性、创新性工作

41

Greenplum扩展规划

现有集群功能扩展方式

•现有集群支撑能力Ø 根据集群的支撑能力和规划,三年内有足够的空间和计算能力

Ø 如需扩展,有多种扩展方式可以选择

Ø 理论扩展方式,与建议扩展方式

•常见扩展方式Ø 对现有集群直接加服务器进行扩展(先要把握现有集群架构)

Ø 在现有服务器和新服务器上,建立新集群然后扩展

Ø 新部署集群,与现有集群双跑运行,稳定扩展(建议方式)

42

Greenplum扩展规划

Greenplum集群规划

•业务运营越来越重要Ø OLAP是根据历史数据,进行准确的统计计算Ø 考虑过去的问题,为现在的决策提供参考和依据

•定位与整合Ø 公司内网GP小数据量计算,GP加载csv数据,GP大数据量统计Ø 年表与实例无关,可以形成一个整体的大的Greenplum平台Ø 网络互通,数据互通,相互备份

•细节的深化Ø 在现有OLAP三部分进行细化Ø 对数据集市本身进行细化

43

THANK YOU