深度解析:基于离线开发的数据仓库转型落地案例
在当今这个数据驱动的时代,各行各业都正经历着前所未有的变革。伴随技术的飞速发展,数据仓库作为企业数据管理与分析的核心,如何更好地发挥作用,助力企业保持业务的敏捷性与成本效益,成为大家关心的焦点问题。本文将通过具体案例分析,展现基于离线开发的数据仓库转型落地中的关键步骤与实施策略。
一、业务增长迅速,原数仓架构难以为继
客户 A 是一家中美合资的泛金融行业公司,成立时间短但业务增长十分迅速。数仓团队规模不到 10 个人,勉强能支撑起业务需求,在面对越来越高要求的业务数据供给及公司内部降本增效的趋势下,团队也在不断探索新型的数仓平台模式,目前数仓架构如下图:
客户底座集群采购了 CDP7.1.6、数据集成采用 Sqoop,将业务库的数据同步至 HDFS 后,通过 Hive SQL 做数据开发。另有少量的 Shell、Python 任务,使用 Oozie 进行离线任务调度。
二、当前数据平台问题日渐凸显
随着业务体量的逐渐增长,当前数据平台架构的问题也逐渐凸显:
1. 运维成本高:Sqoop 和 Oozie 都是开源工具,集成性一般,组件的升级和异常排查需要耗费较多人力成本。
2. 平台上手门槛高:除数据开发外,很多业务方也希望直接在平台进行临时取数,但因上手门槛高,业务方一直没用起来,导致大量简单的需求仍堆积到数据开发侧,并且得不到快速响应。
3. 现有开发模式无法满足数据开发合规要求:目前数据开发环境仅有一套生产环境,对任务和数据做的任何变更都直接影响线上业务,操作高风险,多次因人为失误导致线上故障。
4. 任务依赖配置繁琐且易出错:目前几乎所有的任务每个工作日 4 批次调度,任务与任务之间的依赖通过 HDFS 信号文件通知实现,经常出现信号文件缺失或产出超时导致的下游任务失败。
5. 开发人员水平不一,代码质量难监控:运维人员人工巡检时经常看到部分任务运行时间长占用大量资源,大多数情况下是 SQL 代码质量问题导致,然而目前无法在事前进行规范约束和监控。另外因数据集成小时任务多,大部分数据开发没有调参意识,造成小文件大量堆积。
6.数据产出延迟问题排查困难:每天早上 9 点的数据产出经常出现延迟,因依赖链路长,难以排查数据延迟源头,下游反馈多次影响业务。
7. 接口没有统一管控:API 重复开发、越权调用问题频发,管理不到位且管理困难。
三、重塑数据开发平台,提升效率和满意率
袋鼠云数栈团队针对客户 A 的以上问题设计了新的产品架构,帮助客户重新搭建数据开发平台,有效解决使用痛点,提升数据开发人员的工作效率和业务人员满意率。
针对客户上述问题,数栈结合已有功能给出的解题如下:1. 运维成本大大降低数栈的数据集成、开发与调度均为自研,所有模块天然集成,且有专门的运维与技术支持团队服务,客户的运维成本几乎降到 0。
2. 平台上手门槛降低,开发模式满足数据开发合规要求
用数栈搭建的开发平台设计了5套环境(统一开启集群级 Kerberos 认证),平台登录对接客户的 LDAP 账号单点登陆,让数据开发和业务方都可直接使用。
虽然相比原始的开发平台,数栈在操作门槛和体验上均有了质的提升,但为了让更多业务方直接参与到数据开发过程中来,我们把数栈单独划分了一套 UDS 环境,实现让业务方在业务系统中直接写 SQL,然后业务系统通过调用 SDK 把 SQL 提交到数栈的 UDS 环境上运行并返回结果,由 CDP 自带的 Ranger 对任务提交的 LDAP 用户进行数据权限管控及校验。在 Kerberos 开启的情况下 LDAP 身份认证会弱化,因此数栈开发了租户级 Hadoop 代理的功能,通过代理能定位到原始提交 LDAP 账号,实现用户认证还原。
针对数据开发用户,开发环境分为了 SIT、UAT、pre-PROD、PROD 4 套环境,其中 pre-PROD、PROD 环境与 SIT、UAT 网络隔离以保证生产数据的安全。数据开发在 SIT 环境进行离线任务开发,自测通过后将任务一键发布至 UAT 环境由测试人员做测试数据验证,通过后由运维将任务及相关内容打包并发起发布申请流程,经管理员审批通过后自动由 jenkins 投产至预发环境 pre-PROD 进行生产数据验证,等到生产环境更新窗口期再由管理员发布至生产环境,因生产环境严格不允许有个人用户操作,为了保障任务发布后可正常运行,在发布至生产环境时会自动将任务和责任人统一替换为系统用户。
3. 任务依赖配置简化
使用数栈进行任务依赖配置时无须关心信号文件的创建和状态,每个任务仅需配置其直接上游,当上游任务延迟或失败时下游会在有效期范围内进行等待,上游修复后下游即能自动运行。数栈的调度周期可通过 Cron 表达式或者上传自定义调度日历的方式配置,针对客户“工作日每天 6 点、8 点、16 点、18 点”或者更不规律的周期调度场景,可用一个 excel 文件一次性上传一年的调度日历在批量任务中使用。
4. 上线代码检查功能,提升代码质量
针对开发人员代码规范性意识不统一问题,数据资产模块上线了代码检查功能,平台内置了一些代码检查规则例如禁止 ddl 操作、禁用 Select * 等(此外也可按企业内部个性化的代码要求开发自定义检查规则),在离线项目中可由管理员选择目标任务开启代码检查,开启后,数据开发在进行任务运行或提交前将由平台执行代码扫描,若扫描结果触发了代码检查规则中的强规则/弱规则,则分别给出阻止提交运行/提示的处理;
客户目前的Hive SQL任务较多,在代码检查规则监控的基础上我们增加了 Hive SQL 任务运行资源监控的功能,可在任务运行过程中查看详情监控 cpu 和 memory 使用情况,管理员也可在监控告警中配置资源使用上限告警,当任务使用资源过大时及时通知相关人员处理。
针对小文件问题,数栈的运维管家 EasyManager 可开启 HDFS 文件数量监控,另外数据资产支持小文件治理功能,可选择小文件突出的 schema 进行周期或临时检查和治理(即小文件合并),双重保障避免因小文件问题影响集群性能。
5. 多批次监控告警,让问题排查更简单
数据产出延迟告警问题可以通过基线告警解决,但客户大部分是一天 4 批次的小时任务,在单批次天任务基线监控的基础上我们新增了多批次监控的功能,对于纳入同一多批次监控的任务每天生成多个基线实例,实现一条基线一次配置后每个批次分别监控分别告警的效果。
6. API 统一开发和管理
通过数栈的数据服务进行 API 的统一开发和管理,可实现跨项目的 API 市场统一查看和调用权限申请,减少重复开发,用户在调用 API 时可按Token及AK/SK多种认证方式进行权限校验,调用明细也会在平台内完整记录,充分保障调用安全;
以上数栈给出的解决方案与用户体验为后续客户的数据平台深度建设打下了良好的基础,得到了客户的好评,未来袋鼠云将继续全链路打磨产品,主动为客户提供更大的价值。
《行业指标体系白皮书》下载地址:https://www.dtstack.com/resources/1057?src=szsm
《数栈产品白皮书》下载地址:https://www.dtstack.com/resources/1004?src=szsm
《数据治理行业实践白皮书》下载地址:https://www.dtstack.com/resources/1001?src=szsm
想了解或咨询更多有关大数据产品、行业解决方案、客户案例的朋友,浏览袋鼠云官网:https://www.dtstack.com/?src=szsm
评论