首页 > 技术文章 > chapter1 绪论

angelia-wang 2022-01-11 18:54 原文

1 分布式系统

分布式系统的定义

分布式系统的定义:若干独立计算机的集合,对用户来说就像一个单机的系统

分布式系统常常通过一个”软件层“组织,此”软件层“在逻辑上位于高层(由用户和应用程序组成)与低层(操作系统组成)之间。因此这样的分布式系统又称为中间件

分布式系统的类型

  1. 基于计算机构建的分布式系统
    1. 分布式计算系统:利用分布式系统技术支持高性能计算
      • 集群计算:将一组计算机利用局域网构建一个集群,提供高性能计算
      • 云计算:集群往往隶属于某一个组织机构,某组织将集群以服务的形式提供给其他多个用户,这些用户共享集群的计算资源
      • 网格计算:协调利用不同组织机构之间的计算机设备
    2. 分布式信息系统:利用分布式系统技术构建信息管理系统
      • 事务处理、企业信息集成
  2. 基于微型设备构建的分布式系统
    • 智慧家庭、电子健康系统、传感网络系统

2 从数据管理角度看分布式系统

数据管理系统发展历史

第一代:层次、网状数据库系统为代表

  • 数据的 存储与访问 从应用程序中分离

第二代:关系数据库系统

  • 围绕联机事务处理 OLTP 应用展开,在关系模型、存储技术的基础上,重点发展事务处理子系统、查询优化子系统、数据访问控制子系统

第三代:数据仓库系统

  • 围绕联机分析处理 OLAP 应用展开,重点在于提出高效支持 OLAP 复杂查询的新型数据组织技术

第四代:大数据管理系统

  • 围绕 大数据 应用展开,重点在 分布式、可扩展、高可用 等特性

大数据背景下数据管理面临的挑战

大数据应用的数据特征从5方面刻画(5V):数量、种类、速度、价值、质量

大数据特征:数据量大、数据种类多、产生速度快、潜在价值高、数据质量低。

面向数据管理的分布式系统

关系数据库时代:信守原则“one-size-fits-all”,所有有关数据管理的问题都应交由关系数据库解决。(“一劳永逸”)

大数据时代:“one-size-does-not-fits-all”,无法使用单一的数据管理系统解决所有大数据应用的问题。(“无法一劳永逸”)

==》大数据背景下,数据管理系统的设计理念,从“一劳永逸”转向“分类定制”

分类定制:解耦数据库系统的各个模块,从模型、可靠性、可伸缩性、性能等方面对各个模块进行重新设计

大数据的5V特征决定了运用分布式系统技术研发大数据关系系统是必然选择。

image-20211226210543104

大数据管理:

  1. 分布式存储系统:重新设计数据库系统的存储模块,扩展到分布式场景,在存取数据记录时不考虑数据的模式。
    • 分布式文件系统 Hadoop、分布式消息存储系统 Kafka、分布式缓冲区管理系统 Alluxio
  2. 分布式NoSQL系统:放松了数据库系统中的关系模型,重新设计了系统的数据组织与访问,主要包括 键值存储、文档数据库、图数据库三类。会考虑数据的模式,但不再是严格的关系模式,仅支持部分事务,不保证支持完整的ACID特性。
    • 谷歌的 BigTable、亚马逊的 Dynamo、脸书的 Cassandra、Noe4j公司的Noe4j
  3. 分布式计算系统:重新设计了数据库系统中的查询处理模块,并进行了分布式扩展。进一步抽象出 批处理、流计算 等执行引擎的处理模型。
    • MapReduce、Spark、Flink
  4. 分布式NewSQL系统:将关系数据库的事务管理扩展为分布式事务管理,提供与NoSQL相同的可扩展性和性能,同时支持满足ACID特性的事务管理及关系模型
    • 谷歌的Spanner、阿里巴巴的OceanBase、PingCAP的TiDB

⚠️ 分布式计算系统本身无需负责数据的存储,但其他三种都需要进行数据的存储,因此也可将 分布式存储系统、分布式NoSQL系统、分布式NewSQL系统 纳入广义分布式存储系统 的范畴。

3 分布式计算系统

什么是分布式计算系统

分布式计算系统:作用于若干独立计算机之上,使这些计算机能协同执行计算完成某项应用的软件系统。

  • 归根结底,是为了解决某些类别的应用问题而设计的分布式系统

分布式计算系统主要面向领域:高性能计算、大数据、人工智能。分别解决:数值运算、数据处理、深度学习三类应用。
解决数值计算的分布式计算系统:主要采用并行计算中的MPI技术;
解决数据处理的分布式计算系统:MapReduce;
解决深度学习的分布式计算系统:TensorFlow

将应用根据负载类型分类:

  1. 计算密集型应用CPU处理能力是处理此类应用的首要限制性因素
    • 数值运算、深度学习
  2. 数据密集型应用I/O带宽是处理此类应用的首要限制性因素
    • 数据处理

本书聚焦于面向数据密集型应用的分布式计算系统,所涉及的分布式计算系统主要用于解决大数据管理领域的数据分析、处理问题。

系统生态圈

从应用驱动角度,将面向数据密集型应用的分布式计算系统分为:

  1. 面向通用数据处理的分布式计算系统——通用数据处理系统
  2. 面向领域数据处理的分布式计算系统——领域数据处理系统

通用数据处理系统分局针对的应用场景,分为:

  1. 批处理系统:用于处理静态数据,吞吐量要求高、实时性要求低的场景。
  2. 流计算系统:用于处理动态数据,实时性要求高、吞吐量要求低的场景。
  3. 批流融合系统:用于上述两类场景,也适用于同一场景不同模块数据特征和计算需求不同的场景。

通用数据处理系统采用 键值对或元组 等较通用的表达形式描述所处理的数据。领域数据处理系统进一步考虑了所处理数据的具体特征

  1. 图处理系统:处理图数据
  2. 机器学习系统:处理机器学习中以矩阵形式表达的训练数据
  3. 查询分析系统:处理大规模OLAP中的关系数据/类似关系数据的半结构化数据
image-20211226215701105

通用数据处理系统利用分布式系统的实现技术直接进行构建,而 领域数据处理系统一般依赖于通用数据处理系统,基于通用数据处理系统的接口进行构造或重用通用数据处理系统的某些模块。

分布式系统不是孤立地存在,其与分布式存储系统、分布式资源管理系统、分布式协调服务系统等构成庞大的系统生态圈。

image-20211226215729585

4 课程内容结构

设计思想:系统的应用场景为何构建此系统、处理何种数据模型、采用何种计算模型、若支持迭代计算则采用何种迭代模型

系统 数据模型 计算模型 迭代模型 数据抽象级别 输入数据
MapReduce Key-value DAG 记录 有界
Spark RDD DAG 记录集合 有界
Storm Tuple Topology (DAG) 记录 无界
Spark Streaming Dstream DAG RDD集合 无界
Flink DataStream DAG 记录集合 无界
Giraph Graph Vertex-centric (顶点为中心)

体系架构:系统包含的部件(由哪些进程或线程组成)、各部件的角色及工作顺序

系统 架构组件
Hadoop NameNode、Secondary NameNode、DataNode、客户端
MapReduce JobTracker、TaskTracker、Task(Child)、客户端
Spark ClusterManager(Master、Worker)、Executor(CoarseGrainedExecutorBackend)、Driver、客户端
Yarn ResourceManager、NodeManager、ApplicationMaster、Container、客户端
ZooKeeper Server、Client
Storm Nimbus、Supervisor、Worker、ZooKeeper、客户端
Flink JobManager、TaskManager、客户端
Giraph JobTracker、TaskTracker、MapTask(Child)、客户端

工作原理:如何生成执行计划、能否进行优化、对于数据密集型应用如何减少数据的I/O代价

  • 执行计划:数据输入、数据转换、数据输出,讨论主题:
    • 执行引擎不同Task(运行某个或多个算子)之间如何进行数据转换
    • Flink:如何基于执行引擎实现Dataflow编程模型

容错机制:商用服务器集群中的节点经常发生故障,系统如何保证在某些节点有故障的情况下不影响用户应用程序的正常执行

  • 故障类型、检查点(持久化)、故障恢复

编程示例:编程接口编程的一般步骤、编程的通用框架、使用不同系统实现同一应用的程序有何差异(词频统计、PageRank、K均值聚类)

image-20211226220400814

推荐阅读