跳至内容
- 1:背景:一个制造业企业,有众多业务系统,对数据的应用主要体现为api数据服务和经营管理报表。新建一家子公司,负责帮助实现数字化转型。建设数据中台和大数据处理体系
- 2:刚入职时,CTO刚申请了服务器资源,大概9台服务器,56核/256G/24T 每台
- 3:体系建设路径拆解
- 第一步:确定建设目标
- 服务于制造业企业的数字化转型。需要涵盖大数据处理能力,数据存储能力,数据治理能力和报表开发能力
- 第二步:确定建设方案
- 第三步:确定数据中台的建设思路
- 1:技术选型
- 采用CDH 6.3.2 大数据集群,提供基础的大数据服务
- 采用海豚调度器实现任务调度
- 采用datax实现离线批处理采集
- 采用streamx实现实时任务调度和运维
- 采用atlas实现数据血缘管理
- 采用sentry实现权限控制
- 采用kerberos实现数据安全控制
- 采用prometheus + grafana实现集群监控告警
- 采用k8s + docker 实现mysql元数据的部署,kafka集群的部署与运维
- 2:确定数据中台的功能清单
- 3:确定离线数仓的数据处理流程方案: 数仓层级划分 , bi报表对接ads层mysql数据库 ods -> dwd -> dws -> ads -> mysql(ads)
- 4: 设计yarn队列
- 5:采用hive on spark 规划spark相关参数
- 6:开发海豚调度器元数据,制作每日任务报错报表
- 7:规划告警机制,CDH集群与海豚工作流运行异常,发送告警到钉钉
- 8:规划数据质量体系,采用海豚调度器的数据质量模块。实现数据质量监听
- 9:规划hive元数据库(mysql)主从复制备份方案,binlog定期删除方案
- 10:规划hdfs namenode元数据库备份方案
- 11:底层大数据平台的各种页面对接给前后端,集成开发出数据中台
- 12:数仓开发规范,代码编写规范,数据标准规范,ETL开发规范等规范化文件
- 4:遇到的问题
- 1:yarn队列规划时,设置了资源池,容量调度器未生效。最后使用的还是公平调度器。队列规划好之后,资源池里有默认队列设置的规则。需要在sql代码中指定对应的队列才能生效
- 2:ETL任务排布存在严重的波峰波谷分配不均。通过开发海豚调度器的元数据,找到各时间节点的定时任务数量,结合海豚的工作流依赖图形,进行重新规划定时时间
- 3:spark运行时出现任务无法提交的问题,是spark的参数设置的不对,最初设置的单个excutor 4核 16G.浪费海量资源,整个集群只能同时运行35个container。后续对yarn container,spark driver,excutor 做了重新设计。最终yarn container (4核,1G – 64G),spark driver (1核 1G),spark excutor(2核 1G)。霎时间,集群可以同时运行的任务数量变成了200个,集群资源利用率一下子就起来了。任务也不阻塞了。后续优化方案,对单个sql任务基于explain进行二次调优。大概还能提升50%的性能
- 4:datax无法直接采集saphana的数据,需要新增plugin
- 5:后续规划
- 1:实时架构 seatunnel + flinksql + kafka + hbase + streamx + doris
- 2: seatunnel替换datax