《大数据系统构建:可扩展实时数据系统构建原理与最佳实践》一1.5 大数据系统应有的属性

简介:

本节书摘来自华章出版社《大数据系统构建:可扩展实时数据系统构建原理与最佳实践》一书中的第1章,第1.1节,南森·马茨(Nathan Marz) [美] 詹姆斯·沃伦(JamesWarren) 著 马延辉 向 磊 魏东琦 译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.5 大数据系统应有的属性

你应该使大数据系统努力具备尽可能多的关于复杂性和可扩展性的属性。大数据系统不仅要运行良好、有效地使用资源,还必须易于推理。下面逐一介绍这些属性。

1.5.1 鲁棒性和容错性

面对分布式系统的挑战,构建“做正确的事”的系统并非易事。尽管会遇到机器随机出现故障、分布式数据库中一致性的复杂语义、重复的数据、并发性等问题,但系统仍需能够正确运行。这些挑战使得“推断系统在做什么”变得很难。使大数据系统具备鲁棒性的一部分工作是为了避免这些复杂性(挑战),以便你能很容易推断系统(即探索系统)。
正如之前所讨论的,系统必须是可以容忍人为错误的。这是系统中经常被忽视的属性,开发者应予以重视。在生产系统中,偶尔有人出差错是不可避免的,比如部署错误代码损坏了数据库中的值。如果你将不变性和重新计算性构建到大数据的核心系统中,那么该系统通过提供一个清晰、简单的恢复机制,就能很容易地适应人为错误。这些内容将在第2~7章中详细描述。

1.5.2 低延迟读取和更新

一方面,绝大多数的应用程序需要对读取操作有很低的延迟—这一时间通常是几毫秒到几百毫秒;另一方面,更新延迟的需求在不同应用程序之间有着很大的区别。一些应用程序需要更新操作立即传播,但其他应用程序延迟几个小时也是可以的。无论如何,大数据系统中如果需要低延迟更新,你就必须能够实现它。更重要的是,你需要在不影响系统鲁棒性的前提下,能够实现低延迟读取和更新。本书将从第12章开始介绍如何在速度层实现低延迟更新。

1.5.3 可扩展性

面对数据或负载的增加,可扩展性能够通过将资源添加到系统中来保持性能。Lambda架构在系统堆栈的所有层是水平可扩展的—扩展是通过添加更多的机器来实现的。

1.5.4 通用性

一个通用系统可以支持大多数应用程序。事实上,如果本书所述内容没有推及大多数的应用程序,那么它不会是非常有用的。因为Lambda架构是基于所有数据功能的,可以推广到所有应用程序,无论是财务管理系统、社交媒体分析、科学应用、社交网络,还是其他应用。

1.5.5 延展性

每次添加相关功能或对系统的工作方式做出一些改变时,你不需要重复劳动。具备可延展性的系统允许以最小的开发成本添加功能。
通常,一个新特性或一个现有功能的改变需要将旧数据迁移成新格式。系统具备可延展性的要素之一就是它容易实现大规模迁移。能够轻松、快捷地完成大规模迁移,是你将学习的方法的核心。

1.5.6 即席查询

几乎每个大型数据集中都有意料之外的值,因此,能够对数据进行即席(ad hoc)查询是非常重要的。此外,能够任意地挖掘数据集为业务优化和新的应用程序也提供了可能。最终,除非你可以问这些数据任意问题,否则你将不能利用数据发现有趣的事情。本书的第6章和第7章在讨论批处理时,将介绍进行即席查询的方法。

1.5.7 最少维护

维护是开发人员的重负,它是需要保持系统平稳运行的工作。包括预测什么时候添加用于扩展的机器、保持进程启动并运行以及调试生产环境中的任何错误。
减少维护的一个重要途径是选择实现复杂性尽量低的组件,即依赖底层具有简单机制的组件。特别是分布式数据库,它往往有着非常复杂的内部结构。系统越复杂,出错的可能性就越大,你越需要了解有关系统调试和优化的知识。
通过依靠简单的算法和组件,来降低实现复杂性,进而实现最少维护。Lambda架构采用的一个技巧是:将复杂性推出核心组件,并将其送到几小时后输出是可丢弃的系统的片段中。所使用的最复杂的组件,如读/写分布式数据库,在输出最终是可丢弃的这一层中。本书第12章在讨论速度层时将详细讨论该技术。

1.5.8 可调试性

一旦出错,大数据系统必须提供必要的信息来调试系统。关键是能够追踪系统中的每一个值,并能明确该值是如何产生的。
“可调试性”是在Lambda架构中通过批处理层的功能特性和尽可能使用重新计算算法来实现的。
将所有这些属性组合在同一个系统中实现,这看起来是一个令人生畏的挑战。但从基本原理出发,正如Lambda架构做的,这些属性将从最终的系统设计中自然而然地生成。
在深入介绍Lambda架构之前,我们来看更传统的架构—以依赖增量计算为特征—以及它们无法满足这些属性的原因。

相关实践学习
简单用户画像分析
本场景主要介绍基于海量日志数据进行简单用户画像分析为背景,如何通过使用DataWorks完成数据采集 、加工数据、配置数据质量监控和数据可视化展现等任务。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
22天前
|
存储 大数据 数据处理
PHP 与大数据:构建高效数据处理系统
传统的数据处理系统往往难以应对大规模数据的处理需求,而PHP作为一种常用的服务器端脚本语言,在数据处理方面也有其独特的优势。本文将探讨如何利用PHP构建高效的大数据处理系统,结合实际案例分析其应用场景及优势所在。
15 2
|
4月前
|
SQL Oracle 物联网
助力工业物联网,工业大数据之数仓维度层DWS层构建【十二】
助力工业物联网,工业大数据之数仓维度层DWS层构建【十二】
47 0
|
4月前
|
SQL Oracle 关系型数据库
助力工业物联网,工业大数据之ODS层构建:代码结构及修改【九】
助力工业物联网,工业大数据之ODS层构建:代码结构及修改【九】
47 0
|
13天前
|
SQL 分布式计算 Hadoop
利用Hive与Hadoop构建大数据仓库:从零到一
【4月更文挑战第7天】本文介绍了如何使用Apache Hive与Hadoop构建大数据仓库。Hadoop的HDFS和YARN提供分布式存储和资源管理,而Hive作为基于Hadoop的数据仓库系统,通过HiveQL简化大数据查询。构建过程包括设置Hadoop集群、安装配置Hive、数据导入与管理、查询分析以及ETL与调度。大数据仓库的应用场景包括海量数据存储、离线分析、数据服务化和数据湖构建,为企业决策和创新提供支持。
50 1
|
1月前
|
存储 分布式计算 大数据
现代化数据库技术——面向大数据的分布式存储系统
传统的关系型数据库在面对大规模数据处理时遇到了诸多挑战,而面向大数据的分布式存储系统应运而生。本文将深入探讨现代化数据库技术中的分布式存储系统,包括其优势、工作原理以及在大数据领域的应用。
|
1月前
|
SQL 存储 监控
构建端到端的开源现代数据平台
构建端到端的开源现代数据平台
52 4
|
1月前
|
安全 Java 大数据
基于大数据的旅游系统的设计与实现(论文+源码)_kaic
基于大数据的旅游系统的设计与实现(论文+源码)_kaic
|
1月前
|
人工智能 DataWorks 数据可视化
心动基于阿里云DataWorks构建游戏行业通用大数据模型
心动游戏在阿里云上构建云原生大数据平台,基于DataWorks构建行业通用大数据模型,如玩家、产品、SDK、事件、发行等,满足各种不同的分析型应用的要求,如AI场景、风控场景、数据分析场景等。
334 1
|
2月前
|
SQL 并行计算 大数据
【大数据技术攻关专题】「Apache-Flink零基础入门」手把手+零基础带你玩转大数据流式处理引擎Flink(基础加强+运行原理)
关于Flink服务的搭建与部署,由于其涉及诸多实战操作而理论部分相对较少,小编打算采用一个独立的版本和环境来进行详尽的实战讲解。考虑到文字描述可能无法充分展现操作的细节和流程,我们决定以视频的形式进行分析和介绍。因此,在本文中,我们将暂时不涉及具体的搭建和部署步骤。
496 3
【大数据技术攻关专题】「Apache-Flink零基础入门」手把手+零基础带你玩转大数据流式处理引擎Flink(基础加强+运行原理)
|
2月前
|
存储 数据可视化 JavaScript
基于Echarts构建大数据招聘岗位数据可视化大屏
基于Echarts构建大数据招聘岗位数据可视化大屏
52 0