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