1、Greenplum数据仓库技术架构介绍1OLAP 在互联网公司的实践与思考Greenplum状态描述状态描述2三三Greenplum体系架构体系架构二二数据仓库体系架构数据仓库体系架构一一Greenplum开发规范开发规范五五Greenplum运维体系运维体系四四数据仓库体系架构3数据仓库架构要点 数据生命周期 业务数据特点 OLAP场景举例 OLAP架构示意 数据流转过程 具体技术实现- 数据认识- 业务认识- 业务需求- 整体框架- 数据流转- 实现方式数据仓库体系架构4数据生命周期与业务归类时间维度:过去 - 现在 - 未来 (数据的生命周期) “现在”的数据 OLTP “过去”的数据
2、OLAP “未来”的数据 趋势分析数据仓库体系架构5业务数据特点 现在的数据 OLTP实时,在线系统,客户使用事务小,频率高,并发高 过去的数据 OLAP非实时(T+1,或小时级),离线系统,分析决策事务大,频率相对小,并发低 未来的数据 趋势分析非实时,离线+在线流系统,趋势分析算法分析,持续计算数据仓库体系架构6OLAP场景举例 业务相关场景用户状态 (注册数,活跃数,并发量,峰值)金币状态 道具/物品状态 对账状态活动反馈 架构相关场景不同数据量,不同事务特点,不同查询需求历史数据归档与冷热分离实时与延时需求的权衡数据仓库体系架构数据架构示意图7数据仓库体系架构8数据流转过程 1 业务数
3、据的产生 OLTP 2 业务数据的中转 ETL服务器 3 数据的存储和计算 OLAP集群 4 结果数据的展现 数据集市 5 访问接口的封装 API接口服务器 6 最终数据的显示 前端界面 7 结果数据的交互 OLTP,趋势分析 8 OLAP数据流转 dbsync平台数据仓库体系架构9架构的具体技术实现 轻量级数据仓库 Inforbright 与MySQL数据库结合,易使用,冷热分离 数据库归档,只能load,不支持DML 对特定OLAP类查询有很好的支持作用 通用性数据仓库 Greenplum 独立的数据库仓库解决方案 可以很好支持各种方式的数据加载和DML操作 具备海量的数据存储和计算性能G
4、reenplum状态描述状态描述10三三Greenplum体系架构体系架构二二数据仓库体系架构数据仓库体系架构一一Greenplum开发规范开发规范五五Greenplum运维体系运维体系四四greenplum体系架构11体系结构要点 postgresql体系结构 pg逻辑和物理结构 Greenplum体系结构 GP架构特点与功能- 单元结构- 单元分解- 集群结构- 集群特点greenplum体系架构postgresql体系结构12greenplum体系架构13postgresql体系结构 pg结构组成 连接关系系统 编译执行系统 存储执行系统 事务系统 系统表 pg逻辑和物理结构 insta
5、nce实例 - user - tablesapce database - schema - table,view,function - data r o w 物理文件 - oid - 表空间 - 数据文件命名greenplum体系架构greenplum的体系结构14greenplum体系架构greenplum的体系结构15greenplum体系架构16greenplum的体系结构 greenplum的架构特点 MPP ShareNothing 海量并行处理+完全无共享 cpu计算能力 数据从Disk上的I/O吞吐性能 master管理节点 segment数据节点 greenplum的核心功能
6、无共享MPP 多态存储(gpfdist+外部表,每小时4TB+) 高效数据加载 分布分区 数据压缩 外部访问Greenplum状态描述状态描述17三三Greenplum体系架构体系架构二二数据仓库体系架构数据仓库体系架构一一Greenplum开发规范开发规范五五Greenplum运维体系运维体系四四Greenplum现状说明18Greenplum集群现状概述 三大Greenplum集群体系 公司IDC_01机房Greenplum体系 公司IDC_02机房Greenplum体系 公司IDC_03机房Greenplum体系Greenplum现状说明19三大Greenplum集群定位分类 公司IDC
7、_01机房Greenplum体系 公司第一套Greenplum集群,网络环境为千兆网 数据来源为OLTP库,针对小数据量传输和计算,部分实时交互操作 以对账业务为主,统计计算为辅 公司IDC_02机房Greenplum体系 针对数据来源主要是kfk产生csv文件的业务,不直接从数据库传数 以重点业务线、活动数据、非OLTP业务数据的任务计算为主 公司IDC_03机房Greenplum体系 数据来源来源为OTLP库库,针对大数据量传输和计算,采用T+1方 式 以核心业务的数据计算、统计为主Greenplum现状说明数据架构示意图20Greenplum现状说明21三大Greenplum集群关系 数
8、据来源不同 数据处理不同 时效速度不同 体系架构相同 年表划分相同 平台整体定位 定位不同,多集群配合形成逻辑大集群Greenplum现状说明Greenplum多层业务规划图22Greenplum状态描述状态描述23三三Greenplum体系架构体系架构二二数据仓库体系架构数据仓库体系架构一一Greenplum开发规范开发规范五五Greenplum运维体系运维体系四四Greenplum运维体系24运维要点 环境规划与部署 系统状态监控 数据库备份 数据传输与同步 任务调度- 构建系统- 监控系统- 保障系统- 流转系统- 计算系统Greenplum运维体系25环境创建与部署 部署流程规划部署方
9、案准备硬件资源修改系统参数安装 Greenplum 软件 / postgresql软 件初始化实例修改实例参数文件 初 始化业务所需库表环境、用户环 境 加载数据业务程序访问Greenplum运维体系26环境创建与部署 部署注意点资源要充足(ETL,管理节点,数据节点,数据集市)万兆网络 (网络环境对功能和性能的影响)节点规划 (数据节点6-10个segment节点)参数调整 (操作系统参数,greenplum集群参数)Greenplum运维体系系统状态监控 - gpcc -公司IDC_01机房27Greenplum运维体系系统状态监控 - gpcc -公司IDC_02 机房28Greenpl
10、um运维体系系统状态监控 - gpcc -公司IDC_03机房29Greenplum运维体系30数据库备份 配置与结构备份多机房级联备份Greenplum在本机进行第一次备份备份通过rsync传输到同机房ETL服务器各机房ETL服务器在备份到备份服务 器 结果数据备份Greenplum集群与postgresql集市备份结果数据csv文件备份结果数据到备份postgresql实例Greenplum运维体系31数据库数据传输与同步 数据同步情况分类reader端与writer端全量,id列增量,date列增量datax,csv,load,copy数据同步结果确认与显示 数据同步方式gpfdist+
11、外部表 : UMGW大表db_sync同步程序 : 底层库 + 同步逻辑 + Django界 面临时同步需求: datax , copyGreenplum运维体系数据库数据传输与同步-db_sync32Greenplum运维体系数据库数据传输与同步-db_sync33Greenplum运维体系34Greenplum任务调度 greenplum内部存储过程调度大批量任务采用 kettle调度单个存储过程,可以在shell中 select func_name() 的方式调 度 外部任务调度将整个过程封装成shell脚本,或 Python脚本用crontab在操作系统调用脚本用 opencron在图
12、形界面调用脚本Greenplum运维体系Greenplum任务调度-opencron35Greenplum状态描述状态描述36三三Greenplum体系架构体系架构二二数据仓库体系架构数据仓库体系架构一一Greenplum开发规范开发规范五五Greenplum运维体系运维体系四四Greenplum开发规范37开发规范要点 不规范容易出现的问题 业务库表设计规范 用户与权限规范 Greenplum使用规范- 规范必要性- 库表设计- 权限控制- 操作注意Greenplum开发规范38不规范容易出现的问题 GP架构易出现问题资源不足 连 接、语句执行失 败 多任务冲突 库表使用易出现问题 表定义过
13、大 表类型单一 表的散列键不恰当 分区表的分区键性能不佳 加载易出现问题 文件加载出现特殊字符 数据校验标准问题Greenplum开发规范39业务库表设计规范 GP中表的范围 最大时间为年表 数据量小,可用单表 多种表类型 堆表 (选好常用列作为三列键) 分区表 (按照 yyyymmdd 分区,建议都添加 datenum i n t 8 ) append表 列存储表 多种表类型结合 表的命名 GP内所有名称都小写 table_name命名要符合命名规则,做到见名知义Greenplum开发规范40用户与权限规范 四层授权保保障 角色 role : 管理数据库内对象权限 用户 user : 用户认
14、证权限 pg_hba.conf : 实例权限配置文件 iptables : 防火墙IP访问配置策略 账号类型划分 管理账号 开发账号 调度账号 业务账号 测试账号 账号名称限定 所有都用小写字母加下划线的方式 按照命名规则,做到见名知义Greenplum开发规范41Greenplum使用规范 平时使用规范避免高频率的insert、update操作避免频繁执行高内存消耗的会话避免出现死锁可以在适当的时候执行 vaccum 操作避免直接在Greenplum执行消耗session会话的操作尽量不创建索引 上线与调度规范上线的程序,必须要经过测试,才可以生产使用调度程序需考虑每个任务的前后关系,时间富裕避免因为过于追求并行度,对多个任务造成相互影 响回顾 数据仓库体系架构 数据生命周期与架构体系关联 Greenplum体系架构 postgresql的体系结构 MPP集群架构 Greenplum状态描述 实际业务场景的特点 Greenplum状态描述 实际业务场景的特点 Greenplum运维体系 部署、监控、备份、数据传输、任务调度 Greenplum开发规范 库表设计、用户权限、使用注意42THANK YOU43