4.1.2 分布式流计算
分布式系统是建立在网络之上的软件系统。分布式系统将一组计算机,通过网络相互连接,实现通信和消息传递,并能协调各计算机资源进行彼此交互以完成一个共同的任务的系统。一个分布式系统包括若干通过网络互联的计算机,这些计算机互相配合以完成一个共同的目标。在分布式系统上运行的计算机程序称为分布式计算程序,分布式编程就是编写上述程序的过程。
在一个分布式系统中,一组独立的计算机展现给用户的是一个统一的整体,就好像是一个系统似的。系统拥有多种通用的物理和逻辑资源,可以动态地分配任务,分散的物理和逻辑资源通过计算机网络实现信息交换。系统中存在一个以全局的方式管理计算机资源的分布式操作系统。通常,对用户来说,分布式系统只有一个模型或范型。在操作系统之上有一层软件中间件来负责实现这个模型。一个著名的分布式系统的例子是万维网,在万维网中,所有的一切看起来就好像是一个文档(Web页面)一样。
多数分布式系统是建立在计算机网络之上的,所以分布式系统与计算机网络在物理结构上是基本相同的。然而,分布式操作系统的设计思想和网络操作系统是不同的,这决定了它们在结构、工作方式和功能上也不同。网络操作系统要求网络用户在使用网络资源时需要了解网络资源,网络用户必须知道网络中各个计算机的功能与配置、软件资源、网络文件结构等情况,在网络中如果用户要读一个共享文件时,用户必须知道这个文件放在哪一台计算机的哪一个目录下。分布式操作系统是以全局方式管理系统资源的,它可以为用户任意调度网络资源,并且调度过程是“透明”的。当用户提交一个作业时,分布式操作系统能够根据需要在系统中选择最合适的处理器,将用户的作业提交到该处理程序,在处理器完成作业后,将结果传给用户。在这个过程中,用户并不会意识到有多个处理器的存在,这个系统就像是一个处理器一样。
分布式计算是一种计算方法,和集中式计算是相对的。随着计算技术的发展,有些应用需要巨大的计算能力才能完成,如果采用集中式计算,需要耗费相当长的时间来完成。分布式计算将该应用分解成许多小的部分,分配给多台计算机进行处理。这样可以节约整体计算时间,大大提高计算效率。
分布式流计算是一种面向动态数据的细粒度分布式计算模式,基于分布式内存,对不断产生的动态数据进行计算处理。其应对数据处理的快速、高效、低延迟等特性,在大数据处理中发挥越来越重要的作用。
分布式流处理通常部署于大规模集群中,通常将流数据处理过程抽象为一个有向无环图。调度算法则负责将有向无环图中的组件合理地分配至集群中的可用服务器上。流处理系统作为流处理作业的平台,负责所有集群资源的管理和分配。对于用户提交的流处理作业,流处理系统需考虑该作业所处理的数据量及集群中不同节点的负载,并将其合理地分配到集群的不同作业节点上。分布式流计算主要包括以下四个步骤。(https://www.daowen.com)
①数据封装。将各种来源的待处理数据封装为连续的数据流模式。
②建立应用拓扑。将应用逻辑转化为一组由起始、终止和一系列中间操作组成的应用拓扑图。
③指定操作的并行度。为了充分利用分布式集群的高并行计算能力,每个操作在系统中可以由多个线程来同时运行,提高计算的吞吐率。
④指定数据的分组和传输方式。由于操作多实例化,需要进一步指定流数据的分组和传输方式,以保证所有数据能够被正确和完整地处理。