ToB企服应用市场:ToB评测及商务社交产业平台

标题: 云盘算与大数据条记之Spark【重点:流水线机制】 [打印本页]

作者: 熊熊出没    时间: 2024-9-8 00:35
标题: 云盘算与大数据条记之Spark【重点:流水线机制】
图片和部分条记来自于厦门大学-林子雨-大数据技术原理与应用(第3版) 配套PPT

三大分布式盘算体系开源项目Hadoop、Spark、Storm

Storm、Hadoop和Spark都是处置惩罚大数据的框架,但它们各自在计划上有着不同的侧重点,这导致了它们在实际应用中的不同定位。
Hadoop

   
  Spark

   
  Storm

   
  为什么Storm的教学资源不如Hadoop和Spark?

     只管Storm在某些特定的实时处置惩罚场景中非常有效,但它的使用场景相比Hadoop和Spark来说更加专一,这大概是它教学资源相对较少的一个缘故原由。然而,对于需要处置惩罚实时数据流的应用场所,Storm仍旧是一个非常强大和有价值的工具。

Spark条记简介



Spark的计划遵循“一个软件栈满足不同应用场景”的理念,逐渐形成了一套完备的生态体系:

因此,Spark所提供的生态体系足以应对上述三种场景,即同时支持批处置惩罚、交互式查询和流数据处置惩罚。


Spark线程并行与MR进程并行

进程并行(MapReduce)

MapReduce 是 Hadoop 的盘算框架,计划用于大规模数据处置惩罚。它的核心是将盘算使命分解为两个阶段:Map(映射)和 Reduce(归约)。每个阶段可以在不同的数据块上独立并行运行,通常是在不同的呆板上。
   
  线程并行(Spark)

Spark 是一种内存盘算框架,用于大规模数据处置惩罚,能够举行批处置惩罚、流处置惩罚、呆板学习等。Spark 的计划答应它在内存中处置惩罚数据,从而比基于磁盘的MapReduce更快。
   
  深度对比

   
  Spark实行模型

在Spark中,实行盘算的基本单元是Task,而Task在运行时实际上是作为线程在Executor进程中实行的。这是Spark实行模型的一个核心构成部分,与MapReduce的实行模型形成鲜明对比,后者在Hadoop中通常是以进程为单元举行使命的分配和实行。下面是Spark中关于Executor和Task的一些关键点:
Executor

   
  Task

   
  实行模型的含义

   
  
宽依靠、窄依靠与流水线

在Spark中,“流水线”优化,也被称为管道化实行,是一种优化技术,它答应在大概的情况下,将多个利用合并到单个阶段中顺序实行,从而减少盘算过程中的开销。这种优化主要适用于窄依靠的情况。为了明白这一点,首先需要区分Spark中的两种依靠范例:窄依靠和宽依靠。

窄依靠

在窄依靠中,每个父分区被一个或少数子分区所依靠,这意味着父RDD的每个分区只需要为一个子RDD的少数分区(通常是一个)提供数据。这种依靠关系答应Spark在不同的转换利用之间实现流水线优化,由于这些利用可以在不举行额外shuffle的情况下连续实行
流水线优化:在窄依靠的情况下,Spark可以将多个转换利用(如map、filter等)合并成一个使命连续实行,而不需要在每个利用之间写入磁盘或举行网络传输。这类似于在生产线上,一个产品可以从一个加工步骤直接进入下一个步骤,而不需要回到仓库中等待。这种优化减少了I/O开销,进步了实行服从。
宽依靠

在宽依靠中,父RDD的每个分区大概会被多个子分区所依靠,通常在这种依靠关系中,需要对数据举行重新构造(比方,通过shuffle利用),以确保每个子分区可以获取到它需要处置惩罚的全部数据。宽依靠通常出现在groupBy、reduceByKey等利用中,这些利用需要将不同分区的数据集中到一起处置惩罚。
无法实现流水线优化宽依靠涉及到的shuffle利用需要将数据从一个阶段的使命输出到另一个阶段的使命输入,这个过程需要写磁盘和网络传输,导致无法像窄依靠那样直接在内存中流水线实行多个利用。每次shuffle利用都大概成为数据处置惩罚的瓶颈,由于它涉及到磁盘I/O和网络I/O,明显增长了盘算的开销
明白流水线

明白Spark中的“流水线”优化,可以想象一个装配线,其中产品(数据)在装配线上移动时,可以不间断地颠末多个工作站(利用)举行加工。在窄依靠的场景下,数据可以顺畅地流过多个利用,每个利用像装配线上的一个工作站,接连不绝地对数据举行加工。但在宽依靠的场景下,数据需要颠末一个重组的过程(类似于中断了装配线,将产品重新分配到不同的线上),这个过程会打断流水线的连续性,造成额外的开销
通过这种方式,Spark尽大概地在内存中处置惩罚数据,减少了对磁盘的依靠,进步了整个数据处置惩罚流程的服从。

Executor流水线与CPU流水线

   前置知识:在Spark中,使命(Task)的资源使用情况既不完满是集中式的,也不是每个Task都有完全独立的资源槽。实际上,它采用的是一种中间态——资源在Executor级别被分配,而在这些Executor内部,多个Task共享这些资源
  在Spark中,流水线实行主要指的是将多个数据处置惩罚利用(如map、filter等)在同一个使命(Task)中无缝地串联起来,以减少数据移动和中间存储的开销。这种优化在窄依靠的利用中特殊有效,由于这些利用不需要重组(shuffle)数据就能在上鄙俚RDD之间顺畅地传递。
单核Executor中的Task实行

在单核Executor的情况下,由于只有一个CPU核心可用,Executor一次只能实行一个Task。这意味着在任何给定时候,Executor都在处置惩罚单个Task上的利用。这里的“流水线”实际上是指在这个单个Task中,多个数据处置惩罚利用可以连续实行,而不是多个Task同时实行。
   
每个Task将会按顺序实行,完成一个Task的全部利用后,才会开始实行下一个Task。

  流水线的实现机制

在Spark的流水线机制中,数据在内存中从一个利用传递到下一个利用,这些利用都是在单个Task的上下文中顺序实行的。比方,一个map利用背面紧跟一个filter利用,Spark会尽量将这两个利用合并在同一个Task中顺序实行,而无需将map利用的结果写入磁盘或举行网络传输等待filter利用处置惩罚。
与CPU流水线的对比

CPU流水线依靠于CPU内部的多个物理单元同时工作,即使是单核CPU也拥有多个如许的单元,每个单元负责不同的处置惩罚阶段。因此,在某一时候,第一个指令大概在实行阶段,而第二个指令已经在取指或译码阶段了。如许的并行处置惩罚大大进步了CPU的实行服从。
单核Executor无法同时开始实行另一个Task。这意味着,不同Task之间的利用无法像CPU流水线中的指令那样重叠实行。 
   
  
想想就行啦,现在很少有单核Executor啦!

Spark的计划和广泛应用确实受益于当代硬件发展的几个关键趋势,特殊是内存容量的增长和多核处置惩罚器的普及。这些硬件进步为Spark提供了理想的运行情况,使其能够有效地处置惩罚大规模数据集,并充分使用内存盘算来进步性能。
多核Executor的优势

     企业情况中的应用

在实际的企业情况中,使用多核Executor已经成为常态,主要缘故原由包括:
   
  
多核CPU是怎么实行指令的呢?每个核照旧用流水线吗?

是的,多核CPU中的每个核心仍旧使用流水线技术来实行指令,以进步服从和处置惩罚速率。多核CPU的计划答应同时并行处置惩罚多个盘算使命,而每个核心内部的流水线则进一步进步了单个核心处置惩罚指令的能力。如许,多核CPU结合了两个层面的并行处置惩罚能力:核心间的并行性和核心内的流水线并行性。
多核CPU的工作原理

   
  流水线的效益

流水线技术能够明显进步处置惩罚速率的缘故原由在于其能够减少处置惩罚器空闲的时间。在没有流水线的情况下,CPU在实行一个指令的不同阶段时,其他部分大概处于空闲状态。而流水线答应后续指令在前一个指令完成其第一阶段后立即进入处置惩罚器开始其第一阶段的处置惩罚,如许就几乎可以同时在不同阶段处置惩罚多个指令。
多核与流水线的结合

多核处置惩罚器与流水线技术的结合,为当代盘算使命提供了极高的处置惩罚能力。多核提供了在不同核心上并行实行多个使命的能力,而每个核心内的流水线则确保了每个核心在实行单个使命时能够高效使用其内部资源。这种计划使得多核处置惩罚器非常适合实行多线程步伐和并行盘算密集型应用。
在实际应用中,如何充分使用多核处置惩罚器的能力取决于软件的并行化计划,包括利用体系的调度策略、步伐的多线程计划以及应用的并行算法等。精确的并行化计划和优化可以明显进步步伐在多核处置惩罚器上的实行服从。

作者总结(一)

以是Executor和CPU的流水线照旧不一样,前者是串行流水线,后者是并行流水线。而在多核情况下,Executor是并行流水线并且线程之间相互独立,CPU是并行中的并行流水线,第一个并行是多核之间相互独立,第二个并行是CPU流水线带来的不是完全意义上的逻辑并行。
Executor的流水线(在Spark中)

   
  CPU的流水线

   
  
作者总结(二)

   其实说到底照旧一个Stage中的Task比指令复杂的多,导致其不能让Executor中的集中式共享资源按照每一个SubTask去分配物理资源,这应该是最根本的缘故原由。
  复杂性的来源

根本缘故原由



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4