大数据平台架构与原型项目实现
1. 故事缘起:我们需要工程原型!
从2008年Hadoop成为Apache的顶级项目开始,大数据技术迎来了十多年的持续发展,其间随着Spark的异军突起,整个大数据生态圈又经历了一次“装备升级”,变得更加完善和强大。
今天,很多企业已经完成了早期对大数据技术的尝试和探索转而进入到应用阶段,但不得不说的是,大数据平台的架构体系庞大,技术堆栈非常深,从事大数据开发的同学对此应该都深有体会。而在很多细分领域(例如实时计算、作业调度)也没有像样的工程模板,这一现状与Java社区使用Spring Boot信手拈来地搭建Web工程原型形成了鲜明了对比。
这导致很多团队在启动大数据平台建设时往往感到无所侍从,也使得希望深入学习大数据技术的开发者由于缺少工程级的示例参考而感到迷茫。如果在大数据领域也有基于最佳实践提炼出来的工程原型,帮助团队快速启动开发,上手就写业务代码的话,你想了解一下吗?
2. 鲜明特色:原型驱动与脚手架项目
作为一名长期坚持在一线编写代码的架构师,我曾经参与过多个大数据平台的设计和开发工作,在长期的工作中积累了一些值得分享的宝贵经验。同时,在项目初期我还会为团队搭建工程原型,在经过多个项目的优化和提炼之后积累了一套成熟通用的原型方案,本书讲解的原型系统正是由此而来。
原型系统的8个子项目
原型系统由8个子项目组成,总计超过2万行源代码,已在Github上开源。它们并不是相互孤立的,而是密切协同工作的一个完整平台,8个子项目会在一个虚拟的轻量业务场景下完成数据采集 、实时处理、数仓建设和作业调度等若干重要环节,直至输出最后的结果数据。
本书的原型项目不仅仅是一套示例代码,而是一个能应用于实际项目的“脚手架”,其源代码具有很高的参考性和可移植性,将虚拟的业务逻辑抽离之后能很容易地应用到实际项目中,以帮助团队快速启动开发工作。
这本书会把大数据平台的架构设计和原型系统的具体实现结合在一起讲解,希望能帮助读者有效地学习大数据平台的设计方法和各项技术。
3. 正面应对:最实际的技术和管理难题
本书的很多建议和做法都是从过去项目的“踩坑”和“填坑”中总结提炼而来,针对的都是非常现实的技术和管理问题,是在一线进行大数据平台研发必然会面临的难题,以下列出的未必都是本书的重点,但一定是很多人在实际工作中曾经遇到和思考过的问题:
3.1 技术类难题
- 如何合并每日增量数据?
- 如何构建2型缓慢变化维度表?
- 如何生成代理主键?
- 如何处理Hive/Spark SQL脚本中的变量参数?
- 如何设计流计算工程结构?
- 如何在数据采集时应对作业超时和数据延迟就绪?
- 如何设计理想的HBase Rowkey?
- 如何切分工作流?
- 如何一键编译并部署项目?
3.2 策略与管理类难题
- 如何判定企业目前对数据的应用能力?
- 数据中台如何落地?
- 如何在数据平台的长期基础设施建设和短期上层业务需求之间进行平衡?
- 当企业从旧的数据平台向新一代数据中台迁移时,有没有“明智”的推进策略协调好两者之间的关系?
如果你对这些问题也感同身受,那么我相信这本书一定会对你有所帮助!因为,所有这些问题书中都给出了答案!
4. 内容介绍:涵盖平台架构各个环节
本书开篇先从数据对企业的价值谈起,给出了度量企业数据能力的成熟度模型,然后着重讨论了企业如何建设数据团队,培育数据文化;接着在第二章转入对中台架构的详细介绍,给出了数据中台建设的建议策略;然后,全书转入对大平台建设的具体介绍,包括了:基础设施建设、平台架构设计、数据采集、主数据管理、实时计算、批处理与数据仓库、数据存储和作业调度等,每个环节独立成章,每一章会介绍相应主题的架构方案和技术选型,然后结合原型项目讲解具体的实现细节。
5. 精华揭秘:通用架构参考与最佳实践
本书的架构方案与工程原型均来数个大数据平台项目的积累,包含了很多经过繁复打磨和提炼才得以成型的设计方案和做法,其中有很多都已集成进原型项目,沉淀为了最佳实践。下面就为大家揭秘本书的一部分精华内容。
5.1 企业数据应用能力和技术成熟度模型
我的企业在数据应用上处于什么水平?还有哪些欠缺?下一步的发展方向是什么?本书给出的企业数据应用能力和技术成熟度模型做了准确地度量,帮助企业认清现状和未来发展方向。
本书推出的企业数据应用能力成熟度模型
本书推出的企业数据应用技术成熟度模型
5.2 通用型平台架构参考
大数据平台怎么搭?有哪些数据处理环节和组件?它们之间如何集成?本书给出了一种以Lambda架构为蓝本的通用型架构参考,这个架构曾经历经多个项目验证,稳定、可靠并具有广泛的适用性。
本书推荐的通用型大数据平台架构参考
5.3 千锤百炼的数仓架构
数仓架构,千锤百炼,一切都是最好的安排。本书使用的数仓架构参考了众多主流架构方案,不管你是从事传统数仓开发还是在大数据平台上构建数仓,相信对下面的数仓架构应该不会感到陌生。
本书推荐并使用的数仓架构
5.4 实时流计算的工程结构
实时流计算工程怎么搭?代码应改如何组织?看看下面这张图,有没有似曾相识,豁然开朗的感觉?这一工程结构充分借鉴了Java Web工程的做法,这也折射出我们对流计算的深刻解读,即:流(Stream)只是流计算的“门面”(Facade),相当于某些MVC框架中的Action,业务实体和逻辑以及数据读写都有对应的组件负责,这是在Web应用常年积累出的最佳实践,也同样适用于流计算。
本书实时流计算推荐并使用的工程结构
5.5 合理有效的工作流切分策略
大数据平台上作业众多,相互之间关系密切,如何合理的组织工作流是一个很棘手的问题。本书提出的切分策略既能减轻作业间依赖又能很好的遵循业务主题,是对数据仓库工作深度剖析之后的经验总结。
本书推荐并使用的工作流切分策略
6. 适用读者:技术开发与管理者
6.1 架构师、技术负责人
如果你是一位架构师或团队技术负责人,这本书可以帮助你提升对大数据平台的整体把控力。如果你的大数据平台尚在规划中,本书提出的架构方案和原型项目可以作为你的重要参考;如果你的平台已经进入实施阶段,对于长期积累的技术债务和将要扩展的新能力,本书提出的一些解决方案也会对你有所帮助。
6.2 开发人员
如果你是有一定技术背景的工程师,想往大数据领域转型,或者你已经是大数据领域内的中高级大数据开发人员,想要拓宽自己的技术堆栈,建议你有针对性地选择数据处理流程中具体环节,结合原型项目代码深入地学习其中的技术细节。
6.3 CIO、CTO、顾问咨询
如果你是CIO、CTO或顾问咨询,本书的第1、2、4章对于帮助你定制企业数据战略、规划数据平台蓝图及组建数据团队都有重要的参考价值。
参考文章:
重磅推荐:建大数据平台太难了!给我发个工程原型吧!
Github|项目代码仓库
为者常成,行者常至
自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)