如今,大多数业务价值来自对数据和由数据提供动力的产品的分析,而不是软件本身。由多个应用程序孤岛生成的数据被合并并大大增强,以提供更好的客户体验。从数据中获取价值包括建立统一的数据架构以及数据工程和数据科学团队的共同努力。数据工程涉及构建和维护数据基础设施和数据管道,而数据科学涉及将原始数据转换为有用的数据,并通过分析和ML工作负载得出见解。
现代统一数据架构包括可创建,管理和支持数据收集,处理,分析和ML工作负载的基础架构,工具和技术。在组织中建立和运行数据架构需要部署到云和托管,使用多种技术(开源和专有)和语言(python,sql,java),并涉及不同的熟练资源(工程师,科学家,分析师,管理员)。具有集中式数据基础结构可避免重复数据和工作,并在组织中维护单一真相来源以有效利用,这具有成本效益。
Figure1:Conceptualflowofdatathroughdifferentstages
许多组织定期生成,处理和存储大量数据,以进行业务分析和运营。大数据分析和处理应用程序面临的挑战概括为3V,5V,7V甚至更高。在本文中,我考虑了现代数据体系结构的七个主要挑战:
·多样性:数据从不同的数据源以各种格式,结构,协议和大小到达。该体系结构应管理数据多样化,同时提供一致的数据访问。它应该提供灵活性以及对架构变化实施限制。
·速度:架构应管理快速移动的数据以在较短的时间范围内产生结果,而慢速移动的数据以定期或按需产生结果。该解决方案应随着数据速度的变化而有效地扩大或缩小。
·数量:架构应处理传入的数据量-小,大或突发。它应该有效地管理传入数据以及历史数据,并为事务和分析用例提供正确的选项。
·可见性:系统中存在但不可见的数据与根本不存在的数据一样好(或坏)。该体系结构应管理数据可见性和可访问性及其关系和沿袭详细信息。它应启用数据版本控制,以查看数据集如何随时间变化并回滚到特定版本或时间。
·准确性:准确性是数据准确,完整和可信赖的程度。应该对数据进行清理,重复数据删除,丰富和管理以确保数据完整性,以便企业可以信任数据并进行自信的分析。
·漏洞:应保护数据无论在何处都不受未经授权的访问,并应根据合规性策略的更改加以限制。在数据流和生命周期中观察数据,以跟踪数据的使用方式以及由谁使用。
·价值:数据体系结构的最终结果是能够进行数据驱动的分析以进行业务决策,或者构建数据驱动的产品来增强客户体验。
如图1所示,这些挑战在数据流经现代大数据架构时处于不同的阶段。为了应对这些挑战,将数据摄取,处理,存储,机器学习建模和使用者分离到单独的隔离组件中,可以在这些阶段中独立修复,扩展或替换资源,而不会影响其他阶段。
数据生产者
数据生产者以各种方式生成结构化,非结构化或半结构化格式的数据。数据生产者可以是生成关系数据的事务性应用程序和操作系统,也可以是生成非关系数据的社交媒体移动应用程序,IoT设备,点击流或日志文件。数据源可以具有不同的数据突变率-来自OLTP事务应用程序的数据经历繁重的写入操作,而来自其他OLAP系统的数据则经历繁重的读取操作却具有较低的写入操作。从关系数据库产生的数据通常具有静态模式,而分布式非关系数据存储具有动态模式。不同系统产生的数据以json,csv,parquet,avro等不同格式到达。
资料撷取
供应商生成的大量数据通过各种技术(例如批处理摄取,微批处理,更改数据捕获,发布-订阅,同步-异步和流摄取)被摄取到大数据系统中。数据提取的推拉机制均与诸如订购,消息传递保证,传递确认,消息保留,消息老化和加水印之类的功能一起使用。数据架构应有效地处理性能,吞吐量,故障率要求,并避免系统受到限制。通过批量处理获取数据用于复杂处理和深度分析;实时流用于快速反馈和异常检测。通常,按计划的时间间隔进行批处理摄入具有可预测的工作量,而即时进行的批处理摄入具有不可预测的工作量。对于流摄取,数据在进入系统后应立即可查询,并提供可立即采取行动的见解。
数据处理
数据处理涉及各种方法,例如清理,分析,验证,丰富和聚合数据集。它涉及数据建模和映射源-目标架构。数据体系结构应同时支持模式实施,以避免意外更改(写模式),同时应随需求的发展灵活地修改模式(读模式)。对于缓慢移动的数据集,采用批处理技术来搅动大型数据集,执行复杂的转换并产生深刻的见解。以前,批处理曾经是长期运行的工作,但是通过使用分布式大型并行处理引擎(例如Spark),可以降低延迟。对于快速移动的数据集,采用实时流技术,例如在滚动时间窗口上进行聚合和过滤,以通过使用Spark流或Flink生成即时见解。诸如python,java,scala和sql之类的语言主要用于数据处理。
以前,Lambda/Kappa体系结构提供统一的分析,但是用于批处理和实时处理的单独路径导致重复的资源和工作量。但是,通过使用诸如数据块之类的框架的现代体系结构,可以将批处理和实时处理组合到一条路径中。随着数据处理工作的数量和复杂性的增加,可以使用工作流工具(如Airflow,Nifi,Luigi等)以及虚拟化容器服务(如Docker或Kubernetes)来构建复杂的DAG(有向无环图)和高效的管道。随着数据速度的变化,由于使用或需求的突然激增,处理作业应进行弹性扩展以处理数据突发和数据加速。
数据存储
数据体系结构应通过分布式存储,对象存储和专用存储选项(nosqldb,columndb,timeseriesdb等)有效地管理系统中处理和存储的大量数据。以前,多集群分布式Hadoop系统在每个节点上都结合了存储和计算功能。但是,现代解决方案使存储与计算脱钩,因此可以使用各种计算引擎来分析相同的数据。解耦存储采用高效的列式数据索引和压缩技术。集中存储可避免重复分布在多个系统中的数据副本,并为用户提供更好的访问控制。云数据湖是任何现代数据解决方案中必不可少的组成部分,并存储无限量的数据。数据湖的根本挑战是它们通常只能添加,并且很难更新记录。三角洲湖泊和HUDI解决方案通过将ACID属性引入数据湖泊解决了这一挑战。通过正确配置诸如分区,清理,压缩,改组等设置,可以改善数据处理的性能。
机器学习建模
在由数据工程师建立的管道准备好数据集之后,数据科学家将进行进一步的整理,验证和标记数据,以进行特征工程和模型构建。向外扩展数据准备与向外扩展ML模型不同。扩展ML很难,并且训练模型通常不是多线程的。一旦训练了ML模型,便将模型大规模部署在多个节点上,并生成推断端点以提供预测。
MLOps和DevOps将帮助数据工程师和数据科学家管理和自动化端到端ML工作流。现代数据体系结构支持MLOps实践,以实现模型训练,测试,超参数更新和实验的自动化和可追溯性,从而可以在生产中大规模部署ML模型。为了跟踪实验和部署ML模型,使用了诸如MLflow或Kubeflow之类的开源工具。将模型部署到生产中并不是终点。持续监控模型的数据和模型准确性是否有任何漂移。当检测到模型质量下降时,将捕获模型接收的数据并将其与训练数据集进行比较。重新训练模型,将其重新部署到生产中,并再次更新推断端点,并且此过程在ML生命周期中继续进行。使用影子部署,金丝雀部署和A/B测试,可以提高模型部署到生产的效率。
Figure2:VariousOpensourceandproprietarysolutionsatdifferentdatastages
数据消费者
在数据和ML管道的末尾,数据和数据体系结构的价值是由数据使用者通过分析服务,数据科学和运营产品来利用数据而获得的。
在完成所有数据的处理,整理和挖掘之后,目标是通过交互式探索性分析,报告,可视化,数据科学和统计建模提供可操作的价值见解,以便企业可以制定基于证据的数据驱动型决策。根据用例的分析成熟度,执行描述性,预测性和规范性分析。对语言,查询引擎和库的丰富支持可用于分析。用于分析的典型语言是sql,python和R。使用大数据查询引擎(例如hive,sparksql,cassandracql,impala等)和搜索引擎(例如Solr,Lucene,ElasticSearch等)。数据科学家使用熊猫,matplotlib,numpy,scipy,scikitlearn,张量流,pytorch等库。
数据驱动的应用程序通过数据平台中的API和微服务支持业务的实时运营。数据产品可以使用建立在数据存储上的API提供丰富的信息,或者它们可以是提供预测和建议的参考ML端点。
图2显示了在构建现代数据体系结构的每个阶段可用的各种开源产品和专有产品。
元数据管理
元数据管理包括数据分类,数据关系和数据沿袭技术。数据编目提供了更智能的数据扫描方法,可以自动推导数据结构和映射。它描述了数据特征,例如数据集的质量,沿袭和配置文件统计。数据体系结构应允许用户附加标签和关键字,以轻松搜索数据资产。数据体系结构可以提供增强的功能,例如自动公开数据中的相关性,数据损坏,联接,关系和预测。随着数据集种类和数量的增加,大数据应用程序的元数据本身可能变得如此之大,以至于数据体系结构应包括用于数据发现的搜索工具并用作数据清单。民主数据访问和自助服务管理需要可伸缩的元数据管理。
数据质量与完整性
数据质量是为了确保通过不同管道阶段及其生命周期在整个数据流中保持准确,完整和一致的数据记录。这确保了数据对于计划,决策和运营是可靠且值得信赖的。为了确保数据的完整性,我们需要在数据进入系统时以及在所有阶段直到数据到达消费者端点之前都具有完整的可追溯性和沿袭信息。在每个处理步骤中,可以采用几种基本技术来验证源数据集和目标数据集之间的数据完整性,例如比较rowCounts,nullCounts,uniqueCounts和md5checkSums。通过确保定义和满足引用完整性,实体关系和数据集约束,可以检测和纠正数据损坏。通过仅为授权用户和服务提供选择性更新访问权限,建立数据治理策略并雇用数据管理员来维护数据完整性。
数据安全
数据体系结构应为所有不同层中的数据提供严格的安全性,合规性,隐私性和保护机制。只有经过身份验证和授权的用户或服务才能访问数据。PII信息应屏蔽并散列。当检测到诸如电子邮件,ssn和信用卡之类的模式时,现代数据体系结构可提供自动匿名功能。数据加密方法适用于静态数据和传输中的数据。可观察性和站点可靠性工程方法用于审核和警报机制。
现代数据解决方案利用CI/CD和DevOps来管理和自动化系统的部署和更改,包括Jenkins之类的构建系统,Puppet或Chef之类的配置管理系统以及Dockers或Kubernetes之类的容器。
主要的云提供商(AWS,Azure和Google)提供端到端解决方案来构建统一的集成数据架构。在图3中,每个阶段都映射到主要云提供商所提供的服务。
Figure3:Dataservicesofferedbymajorcloudproviders(AWS,AzureandGCP)
大数据统一架构具有当今可用的大量工具和技术,并且这是一个快速变化的领域。这些工具和技术均具有一定的优势,使其成为特定场景的正确选择,但是,对于不同的用例,它们可能是一个糟糕的选择。因此,对于工具的选择,首先要了解组织的用例和要求很重要。然后,在选择合适的工具之前,对具有明确目标和有时限目标的工具进行评估和试验。在这种情况下,通常首选大型云提供商(AWS,Azure,GCP)提供的开源技术和服务,而不是将其锁定在专有的供应商解决方案上。它不断发展的空间,因此确定合适的技术并灵活地进行更改和迭代对于满足您的业务需求和建立竞争优势非常重要。
参考文献:
·现代数据基础架构的新兴架构
·AWSDataAnalytics数字培训
(本文由闻数起舞翻译自undefined的文章《ModernUnifiedDataArchitecture》)
来源: