2

大数据技术系列:图解大数据平台开发

 1 year ago
source link: https://blog.51cto.com/yaocoder/5938531
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

在前面的文章 《「大数据技术体系」学习实践导览》中,概要式的梳理了大数据平台的业务目标,大数据平台的架构框架,大数据平台中常用的技术及工具,数据治理四方面的内容,算是对自身所了解大数据知识体系的抛砖引玉。
~~
今天想以自身的经历和实践经验,分享一下大数据平台的技术生态、开发管理与应用架构。为求简明扼要,内容主要以图示概览为主,对于其中更多概念在此不进行详解,因为这决然不是几篇文章的事,过程和附录会给出一些学习建议。

大数据平台的技术生态

大数据技术系列:图解大数据平台开发_数据流水线

可以看到

  • 首先在企业内确定要进行采集的数据源,包括关系数据库存储的结构化数据;以服务端日志、用户端行为埋点和IOT上报数据为主的半结构化数据;文档、图片、视频和音频等非结构化数据。
  • 通过离线采集工具(如Sqoop采集关系数据库数据……)、实时采集工具(如Flume采集日志数据……)、数据库增量采集工具(Canal……)采集上述数据源,kafka可以作为实时采集(增量采集)的消息队列服务。
  • 将离线数据存储至分布式文件系统HDFS,应用于离线数仓服务;将实时数据存储至Kafka,应用于实时数仓服务。
  • 使用MapReduce(基于硬盘读写,目前已经很少用)、Spark Core(基于内存RDD,目前离线计算的主流框架)进行数据离线计算,使用Flink进行数据的实时计算(目前实时计算的主流框架)。
  • 上述计算引擎的资源调度系统都是Yarn。
  • 利用OLAP系统对数据进行结构化存储和关联查询,OLAP系统分为ROLAP(关系型联机分析处理:如Hive、Impala、Presto、ClickHouse、Doris)、MOLAP(多维联机分析处理:如Kylin、Druid)系统。
  • 离线OLAP不支持数据的实时访问,实时OLAP系统也有其场景缺陷,可将应用数据同步至HBase、MySQL、ElasticSearch……这些常用的数据库进行查询服务。
  • 数据可视化除了自研系统外,可采用开源的数据可视化系统,如国外的Superset,国内的DataEase。
  • 大数据平台的很多工具都采用Zookeeper作为分布式协调服务,比如HDFS、Kafka、HBase……
  • 在数据层层流转和计算的过程中少不了数据任务调度系统,主流的任务调度系统有Oozie、Azkaban、Airflow、DolphinScheduler。
  • 数据治理则是使数据开发产生商业价值的系统工程,包括数据梳理与建模、元数据管理、数据标准管理、主数据管理、数据质量管理、数据安全管理、数据集成与共享。

更多大数据生态及工具说明请参见

 https://github.com/yaocoder/Architect-CTO-growth/blob/master/大数据体系/技术视角/大数据技术体系导览.md

数据开发的端到端流程

大数据技术系列:图解大数据平台开发_大数据平台_02

数据开发的核心——数据仓库

如果说技术架构和技术工具是大数据平台的骨骼支撑,而基于数据仓库理论的数据建模则是大数据平台的大脑和血肉,决定了大数据平台的业务应用。

数据仓库是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合,用于支持管理决策。—— William H.Inmon

~~
对于绝大多数企业和开发人员来讲,数据库的了解和应用已经比较普及。但是数据仓库确是神秘和陌生的,看一下他们的区别。

功能 数据库(OLTP) 数据仓库(OLAP)
数据范围 当前状态数据 存储完整、反应历史变化的数据
数据变化 支持频繁的增删改查 可增加、查询,无更新、删除操作
应用场景 面向业务交易过程 面相分析、侧重决策分析
处理数据量 频繁、小批次、高并发、低延迟 非频繁、大批量、高吞吐、有延迟
设计理论 遵循数据库三范式、避免冗余 反范式、适当冗余
建模方式 实体关系建模 维度建模

优秀可靠的数仓体系,往往需要清晰的数据分层结构,即要保证数据层的稳定又要屏蔽对下游的影响,并且要避免链路过长。结合这些原则、行业标准及长期经验,我们将分层进行以下统一定义:

大数据技术系列:图解大数据平台开发_大数据平台_03

数仓开发的端到端流程

大数据技术系列:图解大数据平台开发_数据流水线_04

更详细数仓构建的知识请参见

 https://github.com/yaocoder/Architect-CTO-growth/tree/master/大数据体系/技术视角/数据仓库

系统架构抽象与数据流水线

大数据技术系列:图解大数据平台开发_数据流水线_05

上图展示了我们所实践的大数据平台的系统架构抽象,也简单呈现示意了业务相关的数据流水线。

数据流水线

在绝大部分企业的大数据平台建设中,数据流水线的建设都是核心工作之一。数据流水线系统承担着将数据从原始形态转换到用户与业务应用可以直接使用的形态的整个过程。在绝大多数时候,这些工作必须是自动且高度可靠的,并能够实时确保数据的正确性。数据流水线是数据驱动的重要环节,也是大数据平台建设的重要过程。

可看到图中的两条主线(离线数仓和实时数仓),从各种数据源采集原始数据,采集后可以将数据存放到HDFS中进行离线数仓的应用,也可以输入Kafka之类的流处理系统中进行实时数仓的应用。

上图中还有一部分重要内容——数据治理。很多企业会把大数据平台的构建仅局限在技术视角,这样造成大数据平台的价值有限。而数据治理范畴则很广泛,包含所有为提高数据质量而展开的技术、业务和管理活动。

数据治理的最终目标是提升数据利用率和数据价值,通过有效的数据资源管控手段,实现数据的看得见、找得到、管得住、用得好,提升数据质量和数据价值。企业数据治理非常必要,它是企业实现数字化转型的基础,是企业的一个顶层策略,一个管理体系,也是一个技术体系,涵盖战略、组织、文化、方法、制度、流程、技术和工具等多个层面的内容。

大数据体系业务视角的相关知识请参见

 https://github.com/yaocoder/Architect-CTO-growth/tree/master/大数据体系/业务视角

希望大家关注我的 GitHub 开源项目

 https://github.com/yaocoder/Architect-CTO-growth

包括技术实践及手册撰写:涵盖DevOps,云原生技术,大数据,人工智能,高并发&高性能&高可用服务等,后续会逐渐细化一些知识点。一起学习成长!如果对你有用,也请星标一下O(∩_∩)O


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK