分布式计算

分布式计算

    • 一、分布式计算
    • 二、分布式系统特性
    • 三、通用分布式计算系统
        • 1 Apache Hadoop
        • 2 Apache Spark
        • 3 Apache Storm

一、分布式计算

  1. 定义
    分布式计算就是将计算任务分摊到大量的计算节点上,一起完成海量的计算任务。

  2. 原理
    将一个复杂庞大的计算任务适当划分为一个一个小任务,并让任务并行执行,只不过分布式计算会将这些任务分配到不同的计算节点上,每个计算节点只需要完成自己的计算任务即可,可以有效分担海量的计算任务。
    而每个计算节点也可以并行处理自身的任务,更加充分利用机器的CPU资源。最后想方设法将每个节点计算结果汇总,得到最后的计算结果。

  3. 步骤
    1)设计分布式计算模型
    规定分布式系统的计算模型。计算模型决定了系统中各个组件应该如何运行,组件之间应该如何进行消息通信,组件和节点应该如何管理等。
    2)分布式任务分配
    分布式算法不同于普通算法。
    普通算法通常是按部就班,一步接着一步完成任务。而分布式计算中计算任务是分摊到各个节点上的。该算法着重解决的是能否分配任务,或如何分配任务的问题。
    3)编写并执行分布式程序
    使用特定的分布式计算框架与计算模型,将分布式算法转化为实现,并尽量保证整个集群的高效运行。

二、分布式系统特性

  1. 容错性
    故障恢复对于分布式系统设计与开发来说极其重要。常见的避免故障的方法包括消息重发、冗余等。
    冗余是设计分布式系统时必须考虑的特性之一,也是系统对外提供服务的质量的重要保证,提高用户体验,尽可能减少服务不可用时间是非常重要的。

  2. 高可扩展性
    高可扩展性指的是系统能够在运行过程中自由地对系统内部节点或现有功能进行扩充,而不影响现有服务的运行。

  3. 开放性
    分布式系统的开放性决定了一个系统是否具备自我扩展和与其他系统集成的能力。
    通过对外提供开放应用程序编程接口(Open API)的方式来提高分布式系统的开放性,提供哪些接口以及如何提供决定了我们开发的系统的开放程度,以及与现有系统和其他系统集成、扩展的能力。

  4. 并发处理能力
    分布式存储具有以下特性(CAP)
    1)Consistency(一致性):同一个数据在集群中的所有节点,同一时刻是否都是同样的值。
    2)Availability(可用性):集群中一部分节点故障后,集群整体是否还能处理客户端的更新请求。
    3)Partition Tolerance(分区容错性):是否允许数据的分区,分区是指是否允许集群中的节点之间无法通信。
    扩展:
    CAP定理(CAP Theorem)又被称作布鲁尔定理(Brewer’ s Theorem),它指出对于一个分布式计算系统来说,不可能同时满足CAP3个条件。

  5. 透明性
    把分布式系统当做一个整体来看待,而不是多个微型服务节点构成的集合。

三、通用分布式计算系统

1 Apache Hadoop

Hadoop由两个重要模块组成。

  1. Hadoop分布式文件系统(HadoopDistributed File System),就是一个分布式的文件系统,可以将文件数据分布式地存储在集群中的不同节点上。
  2. MapReduce系统,是一个针对大量数据的分布式计算系统。
    HDFS分布式文件系统
    Hadoop分布式文件系统(HDFS)是一个主从式的分布式文件系统,是GFS的一种开源实现。
    HDFS可以利用大量廉价存储器组成分布式存储集群,取代昂贵的集中式磁盘存储阵列。

组成:

  1. NameNode
    NameNode是整个集群的管理者。它并不存储数据本身,而负责存储文件系统的元数据。
    它负责管理文件系统名称空间,并控制外部客户端对文件系统的访问。
    NameNode决定如何将文件内容映射到DataNode的数据块上。
    整个文件系统只有一个NameNode。

  2. Secondary NameNode
    Secondary NameNode是NameNode的备份节点,HDFS会将NameNode的数据实时备份到Secondary NameNode上,当NameNode宕机需要重启时,则可以利用Secondary NameNode中的数据加快NameNode的重启恢复速度。

  3. DataNode
    DataNode是实际的数据存储节点,负责相应NameNode创建、删除和复制块的命令。
    NameNode会读取来自DataNode的心跳信息,以此判断DataNode是否存活。同一份数据会以多份副本存储在不同的DataNode上,一旦某一个DataNode宕机,NameNode会立即采取手段来处理问题。

  4. MapReduce模型
    MapReduce既是Hadoop中的模块,也是一个计算模型。用户需要自己将算法划分成Map和Reduce两个阶段。
    首先将数据划分为小块的数据,将数据分配到不同计算节点的Map任务中计算,然后将计算结果汇总到Reduce节点中进行合并,得出最终结果。
    MapReduce系统也是主从式的计算系统。在使用YARN后,每个集群有一个Resource-Manager,用于管理整个集群。集群中每个计算节点都有一个NodeManager,负责管理某个节点的容器并监视其资源使用。每个应用程序由一个MRAppMaster进行管理。

Apache Hadoop特性

1)高可靠性:可靠地将数据存储到节点上。

2)高可扩展性:存储和计算节点可以快速扩展,并自动进行负载均衡。

3)高效性:一方面Apache Hadoop会自动在各个节点之间动态调动数据,保证每个节点存储均衡,另一方面读取数据时我们可以从不同节点并行读取,提高数据读取的速度。

4)高容错性:将数据冗余存储在不同节点上,保证数据容错性,计算任务失败时也会自动重新分配任务。

5)低成本:一方面,Apache Hadoop是开源软件,可以节省商业软件的购买成本。同时,Apache Hadoop可以用廉价节点组成的集群取代昂贵的超级计算机,从而可以节省硬件成本。
缺点:实时性较差。HDFS不是一个高实时性的分布式文件系统。

2 Apache Spark

“高层”分布式计算框架

Apach Spark特性
1)执行速度极快
首先它支持将计算任务的中间结果放在内存中而不是HDFS上,这样可以加快速度,根据评测最高可以提升100倍。
2)支持多种运行模式
除了可以独立在集群上执行任务以外,Spark还支持将任务执行在EC2或Apache Hadoop的YARN上,也可以从HDFS、Cassandra、HBase、Hive等各种数据存储系统中读取数据。
3)更多更通用的计算模型
Hadoop只提供了较为底层的MapReduce模型,编程人员往往需要大量编码来解决简单的任务。而Spark则提供了SQL接口、ApacheSpark流模型接口、MLib机器学习接口以及GraphX图形计算接口等多种接口,可以方便应用于多种场合,提高开发人员的开发效率。
缺点:Spark的计算模型依然是任务式的,对于处理实时流入又需要实时反馈的数据无法满足需求。

3 Apache Storm

Apache Storm是一个开源的、实时的计算平台。

Apache Storm的优点和特性

1)高可扩展性
可以每秒处理海量消息请求,同时该系统也极易扩展,只需增加机器并提高计算拓扑的并行程度即可。

2)高容错性
如果在消息处理过程中出现了异常,Apache Storm的消息源会重新发送相关元组数据,确保请求被重新处理。

3)易于管理
使用ZooKeeper来协调集群内的节点配置并扩展集群规模。

4)消息可靠性
能够确保所有到达计算拓扑的消息都能被处理。

你可能感兴趣的:(操作系统,分布式)