版权归原作者所有,如有侵权,请联系我们

[科普中国]-分布式流处理

科学百科
原创
科学百科为用户提供权威科普内容,打造知识科普阵地
收藏

流处理是一种重要的大数据处理手段,其主要特点是其处理的数据是源源不断且实时到来的。分布式流处理是一种面向动态数据的细粒度处理模式,基于分布式内存,对不断产生的动态数据进行处理。其对数据处理的快速,高效,低延迟等特性,在大数据处理中发挥越来越重要的作用。

简介分布式流处理是指基于分布式技术对流数据进行动态处理,具有较好的伸缩性、实时性和开放性。分布式流处理通常部署于大规模集群中,通常将流数据处理过程抽象为一个有向无环图。调度算法则负责将有向无环图中的组件合理的分配至集群中的可用服务器上。流处理系统作为流处理作业的平台,负责所有集群资源的管理和分配。对于用户提交的流处理作业,流处理系统需考虑该作业所处理的数据量及集群中不同节点的负载,并将其合理的分配到集群的不同作业节点上。因而如何最大化集群的利用率,即最大化集群可容纳的流处理作业数量。好的任务分配策略能够加快数据处理的速率,提升系统整体吞吐量,均衡集群中的负载,或者减少集群中的资源占用率1。

数据流数据流通常被定义为不断到达的元组所构成的无限数据集,或是一个连续、无界、顺序、时变的元组序列,对它的应用大多是监控型的,即持续运行在连续数据流上的连续查询。在传统数据库系统中,其处理的对象是持久的关系,接受的是即席的查询,查询计划是固定的,查询执行模式是随机访问数据库并且可以对其多遍扫描,应用没有实时性要求,数据以“拉”的形式来传送。而在数据流系统中,处理的对象是暂态的流,注册的是连续查询,查询计划需要不断调整以适应新的数据,查询执行模式只能是顺序的一遍扫描数据,应用具有实时性要求,并且数据传送是以“推”的方式进行的。数据流的特点主要有:

无限性。在模型抽象中,数据流被看作是无限的,无法通过物理介质整体存储数据流。

时序性。数据流的时序性有两方面含义。一方面指元组按序到达,不能在整个数据流上实现随机访问。另一方面指其元组当中通常包含直接或间接的时间标签,如时间戳,序列号。

不可再现。由于数据流具有无限性,且不能随机访问。在研究中,数据处理后即丢弃,除非刻意保存,数据不能被再次访问。

存在概念漂移。概念漂移指数据流所包含的信息随时间变换,导致以前的模型或方法不再适用。

噪声。噪声不是数据流所特有,但由于概念漂移的存在,如何区分噪声和概念漂移是数据流挖掘面临的一个挑战。

数据到达是实时的,且顺序是独立的,不受系统控制。

大小和规模不可预知2。

影响因素数据流处理系统中,影响数据流处理速率的因素有很多。根据这些影响因素的自身特点,可分为如下两大类:

作业任务自身逻辑因素。即对于每条流入数据,处理逻辑会根据数据内容的不同执行不同的处理逻辑,因此导致的数据处理速率不同。此类因素与流数据处理系统无关,与作业任务密切相关。无论使用何种流处理系统或调度算法,都无法改变此类因素对数据流处理速率所产生的影响。

外部条件因素。即流数据处理作业逻辑以外的因素。此类因素通常是处理逻辑所使用的节点数,处理节点所在服务器的硬件限制等,通常可通过流处理系统的任务调度进行分配和调整。根据我们在实际作业任务中的观察,流处理系统中的大部分作业任务,其对数据的处理延迟通常与处理单元的单位时间内的数据流的速率呈正相关。在对数据处理出现延迟増加的情况时,通常是由于处理能力不足导致的。处理能力不足可根据情况划分为两种:

1.本地硬件资源限制。由于作业任务运行组件所在服务器的硬件资源受限导致的延迟,如带宽占满会导致网络请求处理瓶颈,CPU占满会导致数据处理瓶颈,都会在数据处理延迟上进行体现。

2.作业任务逻辑导致。作业任务逻辑即并非由物理资源所限制,而是作业任务自身的处理逻辑限制。有些作业任务逻辑瓶颈在资源占用上很难得到体现。如在作业逻辑中访问外部信息(如访问分布式内存数据库等),由外部系统导致的延迟。此部分因素又可分为两种:一种可通过扩大作业任务执行的并发度提升整体吞吐量;另一种则不行。我们期望该算法能够较好的处理前者。对于流计算服务集群,该调度算法的目标是利用有限的集群资源,容纳尽可能多的流计算作业。而作为流计算服务的用户而言,其目标是在满足相应流处理业务需求的条件下,最小化其使用的资源,W节省相应成本。这两个目标本质上是相同的,即在满足每个作业任务需求的前提下,尽可能减少单个作业任务所占用的集群资源。从而能够让集群提供容纳尽可能多的流处理任务。作为流处理计算服务的使用者,在满足自身流处理任务运行条件的情况下,希望能够尽可能少的占用资源,从而减少流处理的使用开销3。

分布式计算分布式计算(Distributed computing),又译为分散式运算。这个研究领域,主要研究分布式系统(Distributed system)如何进行计算。分布式系统是一组计算机,透过网络相互连接传递消息与通信后并协调它们的行为而形成的系统。组件之间彼此进行交互以实现一个共同的目标。把需要进行大量计算的工程数据分区成小块,由多台计算机分别计算,再上传运算结果后,将结果统一合并得出数据结论的科学。分布式系统的例子来自有所不同的面向服务的架构,大型多人线上游戏,对等网络应用。分布式计算是一种新的计算方式。所谓分布式计算就是在两个或多个软件互相共享信息,这些软件既可以在同一台计算机上运行,也可以在通过网络连接起来的多台计算机上运行。分布式计算比起其它算法具有以下几个优点:

1、稀有资源可以共享。

2、通过分布式计算可以在多台计算机上平衡计算负载。

3、可以把程序放在最适合运行它的计算机上。

其中,共享稀有资源和平衡负载是计算机分布式计算的核心思想之一。

本词条内容贡献者为:

李岳阳 - 副教授 - 江南大学