• 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

作者 admin

张宴银,大数据开发工程师

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注