《2022年大数据中的流处理与批处理 .pdf》由会员分享,可在线阅读,更多相关《2022年大数据中的流处理与批处理 .pdf(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、对流处理与批处理的认识说到对流处理与批处理的认识,首先要知道大数据系统中的一个最基本的组件: 处理框架。 所谓处理框架就是负责对系统中的数据进行计算,例如处理从非易失存储中读取的数据,或处理刚刚摄入到系统中的数据。数据的计算则是指从大量单一数据点中提取信息和见解的过程。下面是一些常见的框架:(1) 仅批处理框架:Apache Hadoop(2)仅流处理框架: Apache Storm,Apache Samza(3)混合框架: Apache Spark,Apache Flink。首先,我们先了解批处理。批处理在大数据世界有着悠久的历史。批处理主要操作大容量静态数据集,并在计算过程完成后返回结果。
2、批处理模式中使用的数据集通常符合下列特征:有界:批处理数据集代表数据的有限集合。持久:数据通常始终存储在某种类型的持久存储位置中。大量:批处理操作通常是处理极为海量数据集的唯一方法。批处理非常适合需要访问全套记录才能完成的计算工作。例如在计算总数和平均数时, 必须将数据集作为一个整体加以处理,而不能将其视作多条记录的集合。 这些操作要求在计算进行过程中数据维持自己的状态。需要处理大量数据的任务通常最适合用批处理操作进行处理。无论直接从持久存储设备处理数据集,或首先将数据集载入内存,批处理系统在设计过程中就充分考虑了数据的量,可提供充足的处理资源。由于批处理在应对大量持久数据方面的表现极为出色,
3、因此经常被用于对历史数据进行分析。然而大量数据的处理需要付出大名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 5 页 - - - - - - - - - 量时间,因此批处理不适合对处理时间要求较高的场合。Apache Hadoop是一种专用于批处理的处理框架。Hadoop是首个在开源社区获得极大关注的大数据框架。基于谷歌有关海量数据处理所发表的多篇论文与经验的Hadoop重新实现了相关算法和组件堆栈,让大规模批处理技术变得更易用。Hadoop的处理功能来自 MapRedu
4、ce引擎。MapReduce的处理技术符合使用键值对的map 、shuffle 、reduce算法要求。基本处理过程包括:(1)从 HDFS 文件系统读取数据集(2)将数据集拆分成小块并分配给所有可用节点(3)针对每个节点上的数据子集进行计算(计算的中间态结果会重新写入 HDFS )(4)重新分配中间态结果并按照键进行分组(5)通过对每个节点计算的结果进行汇总和组合对每个键的值进行“ Reducing ”(6)将计算而来的最终结果重新写入HDFS 由于这种方法严重依赖持久存储, 每个任务需要多次执行读取和写入操作,因此速度相对较慢。 但另一方面由于磁盘空间通常是服务器上最丰富的资源,这意味着M
5、apReduce可以处理非常海量的数据集。同时也意味着相比其他类似技术,Hadoop的 MapReduce通常可以在廉价硬件上运行, 因为该技术并不需要将一切都存储在内存中。MapReduce具备极高的缩放潜力, 生产环境中曾经出现过包含数万个节点的应用。MapReduce的学习曲线较为陡峭,虽然名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 5 页 - - - - - - - - - Hadoop生态系统的其他周边技术可以大幅降低这一问题的影响,但通过 Hadoop集群
6、快速实现某些应用时依然需要注意这个问题。围绕 Hadoop已经形成了辽阔的生态系统,Hadoop集群本身也经常被用作其他软件的组成部件。很多其他处理框架和引擎通过与Hadoop集成也可以使用 HDFS 和 YARN 资源管理器。然后,我们要知道流处理。 流处理系统会对随时进入系统的数据进行计算。相比批处理模式,这是一种截然不同的处理方式。流处理方式无需针对整个数据集执行操作,而是对通过系统传输的每个数据项执行操作。流处理中的数据集是“无边界”的,这就产生了几个重要的影响:完整数据集只能代表截至目前已经进入到系统中的数据总量; 工作数据集也许更相关, 在特定时间只能代表某个单一数据项。处理工作是
7、基于事件的,除非明确停止否则没有“尽头”。处理结果立刻可用,并会随着新数据的抵达继续更新。流处理系统可以处理几乎无限量的数据,但同一时间只能处理一条 (真正的流处理) 或很少量(微批处理,Micro-batch Processing)数据,不同记录间只维持最少量的状态。虽然大部分系统提供了用于维持某些状态的方法, 但流处理主要针对副作用更少,更加功能性的处理(Functional processing)进行优化。功能性操作主要侧重于状态或副作用有限的离散步骤。 针对同一个数据执行同一个操作会或略其他因素产生相同的结果, 此类处理非常适合流处理, 因为不同项的状态通常是某些困难、 限制,以及某些
8、情况下不需要的结果的结合体。因此虽然某些类型的状态管理通常是可行的,但这些框架通常在名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 5 页 - - - - - - - - - 不具备状态管理机制时更简单也更高效。此类处理非常适合某些类型的工作负载。有近实时处理需求的任务很适合使用流处理模式。分析、服务器或应用程序错误日志,以及其他基于时间的衡量指标是最适合的类型,因为对这些领域的数据变化做出响应对于业务职能来说是极为关键的。流处理很适合用来处理必须对变动或峰值做出响应,并
9、且关注一段时间内变化趋势的数据。Apache Storm是一种侧重于极低延迟的流处理框架,也许是要求近实时处理的工作负载的最佳选择。该技术可处理非常大量的数据,通过比其他解决方案更低的延迟提供结果。Apache Samza是一种与 Apache Kafka消息系统紧密绑定的流处理框架。 虽然 Kafka可用于很多流处理系统, 但按照设计,Samza 可以更好地发挥 Kafka独特的架构优势和保障。该技术可通过Kafka提供容错、缓冲,以及状态存储。 Samza 可使用 YARN 作为资源管理器。这意味着默认情况下需要具备 Hadoop集群(至少具备HDFS 和 YARN),但同时也意味着 Sa
10、mza 可以直接使用 YARN 丰富的内建功能。最后,我们来说明两种处理模式的区别。使用Spark而非Hadoop MapReduce的主要原因是速度。 在内存计算策略和先进的DAG 调度等机制的帮助下, Spark可以用更快速度处理相同的数据集。Spark的另一个重要优势在于多样性。该产品可作为独立集群部署,或与现有 Hadoop集群集成。该产品可运行批处理和流处理,运行一个集群即可处理不同类型的任务。除了引擎自身的能力外, 围绕 Spark还建立了包含各种库的生态系统,可为机器学习、交互式名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - -
11、- - - 名师精心整理 - - - - - - - 第 4 页,共 5 页 - - - - - - - - - 查询等任务提供更好的支持。 相比 MapReduce , Spark任务更是 “众所周知”地易于编写,因此可大幅提高生产力。为流处理系统采用批处理的方法, 需要对进入系统的数据进行缓冲。缓冲机制使得该技术可以处理非常大量的传入数据,提高整体吞吐率, 但等待缓冲区清空也会导致延迟增高。 这意味着 Spark Streaming可能不适合处理对延迟有较高要求的工作负载。 由于内存通常比磁盘空间更贵,因此相比基于磁盘的系统, Spark成本更高。然而处理速度的提升意味着可以更快速完成任务
12、, 在需要按照小时数为资源付费的环境中,这一特性通常可以抵消增加的成本。Spark内存计算这一设计的另一个后果是,如果部署在共享的集群中可能会遇到资源不足的问题。相比Hadoop MapReduce,Spark 的资源消耗更大, 可能会对需要在同一时间使用集群的其他任务产生影响。从本质来看,Spark更不适合与 Hadoop堆栈的其他组件共存一处。综上所述,对于仅需要批处理的工作负载,如果对时间不敏感,比其他解决方案实现成本更低的Hadoop将会是一个好选择。对于仅需要流处理的工作负载,Storm可支持更广泛的语言并实现极低延迟的处理,但默认配置可能产生重复结果并且无法保证顺序。Samza 与 YARN 和 Kafka 紧密集成可提供更大灵活性, 更易用的多团队使用,以及更简单的复制和状态管理。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 5 页 - - - - - - - - -