您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
免费发信息
三六零分类信息网 > 大理分类信息网,免费分类信息发布

大数据你学会了吗?看看这些框架的区别,你又知道多少呢?

2023/3/30 18:55:50发布44次查看
大数据是收集、整理、处理大容量数据集,并从中获得见解所需的非传统战略和技术的总称。虽然处理数据所需的计算能力或存储容量早已超过一台计算机的上限,但这种计算类型的普遍性、规模,以及价值在最近几年才经历了大规模扩展。
在之前的文章中,我们曾经介绍过有关大数据系统的常规概念、处理过程,以及各种专门术语,本文将介绍大数据系统一个最基本的组件:处理框架。处理框架负责对系统中的数据进行计算,例如处理从非易失存储中读取的数据,或处理刚刚摄入到系统中的数据。数据的计算则是指从大量单一数据点中提取信息和见解的过程。下文将介绍这些框架:仅批处理框架:apache hadoop仅流处理框架:apache stormapache samza混合框架:apache sparkapache flink大数据处理框架是什么?(架构师/大数据/马士兵 489034603)
处理框架和处理引擎负责对数据系统中的数据进行计算。虽然“引擎”和“框架”之间的区别没有什么权威的定义,但大部分时候可以将前者定义为实际负责处理数据操作的组件,后者则可定义为承担类似作用的一系列组件。例如apache hadoop可以看作一种以mapreduce作为默认处理引擎的处理框架。引擎和框架通常可以相互替换或同时使用。例如另一个框架apache spark可以纳入hadoop并取代mapreduce。组件之间的这种互操作性是大数据系统灵活性如此之高的原因之一。虽然负责处理生命周期内这一阶段数据的系统通常都很复杂,但从广义层面来看它们的目标是非常一致的:通过对数据执行操作提高理解能力,揭示出数据蕴含的模式,并针对复杂互动获得见解。为了简化这些组件的讨论,我们会通过不同处理框架的设计意图,按照所处理的数据状态对其进行分类。一些系统可以用批处理方式处理数据,一些系统可以用流方式处理连续不断流入系统的数据。此外还有一些系统可以同时处理这两类数据。在深入介绍不同实现的指标和结论之前,首先需要对不同处理类型的概念进行一个简单的介绍。
批处理系统批处理在大数据世界有着悠久的历史。批处理主要操作大容量静态数据集,并在计算过程完成后返回结果。批处理模式中使用的数据集通常符合下列特征...有界:批处理数据集代表数据的有限集合持久:数据通常始终存储在某种类型的持久存储位置中大量:批处理操作通常是处理极为海量数据集的唯一方法批处理非常适合需要访问全套记录才能完成的计算工作。例如在计算总数和平均数时,必须将数据集作为一个整体加以处理,而不能将其视作多条记录的集合。这些操作要求在计算进行过程中数据维持自己的状态。需要处理大量数据的任务通常最适合用批处理操作进行处理。无论直接从持久存储设备处理数据集,或首先将数据集载入内存,批处理系统在设计过程中就充分考虑了数据的量,可提供充足的处理资源。由于批处理在应对大量持久数据方面的表现极为出色,因此经常被用于对历史数据进行分析。大量数据的处理需要付出大量时间,因此批处理不适合对处理时间要求较高的场合。apache hadoop(架构师/大数据/马士兵 489034603)
apache hadoop是一种专用于批处理的处理框架。hadoop是首个在开源社区获得极大关注的大数据框架。基于谷歌有关海量数据处理所发表的多篇论文与经验的hadoop重新实现了相关算法和组件堆栈,让大规模批处理技术变得更易用。新版hadoop包含多个组件,即多个层,通过配合使用可处理批数据:hdfs:hdfs是一种分布式文件系统层,可对集群节点间的存储和复制进行协调。hdfs确保了无法避免的节点故障发生后数据依然可用,可将其用作数据来源,可用于存储中间态的处理结果,并可存储计算的最终结果。yarn:yarn是yet another resource negotiator(另一个资源管理器)的缩写,可充当hadoop堆栈的集群协调组件。该组件负责协调并管理底层资源和调度作业的运行。通过充当集群资源的接口,yarn使得用户能在hadoop集群中使用比以往的迭代方式运行更多类型的工作负载。mapreduce:mapreduce是hadoop的原生批处理引擎。
批处理模式hadoop的处理功能来自mapreduce引擎。mapreduce的处理技术符合使用键值对的map、shuffle、reduce算法要求。基本处理过程包括:从hdfs文件系统读取数据集将数据集拆分成小块并分配给所有可用节点针对每个节点上的数据子集进行计算(计算的中间态结果会重新写入hdfs)重新分配中间态结果并按照键进行分组通过对每个节点计算的结果进行汇总和组合对每个键的值进行“reducing”将计算而来的最终结果重新写入 hdfs优势和局限由于这种方法严重依赖持久存储,每个任务需要多次执行读取和写入操作,因此速度相对较慢。但另一方面由于磁盘空间通常是服务器上最丰富的资源,这意味着mapreduce可以处理非常海量的数据集。同时也意味着相比其他类似技术,hadoop的mapreduce通常可以在廉价硬件上运行,因为该技术并不需要将一切都存储在内存中。mapreduce具备极高的缩放潜力,生产环境中曾经出现过包含数万个节点的应用。mapreduce的学习曲线较为陡峭,虽然hadoop生态系统的其他周边技术可以大幅降低这一问题的影响,但通过hadoop集群快速实现某些应用时依然需要注意这个问题。围绕hadoop已经形成了辽阔的生态系统,hadoop集群本身也经常被用作其他软件的组成部件。很多其他处理框架和引擎通过与hadoop集成也可以使用hdfs和yarn资源管理器。总结apache hadoop及其mapreduce处理引擎提供了一套久经考验的批处理模型,最适合处理对时间要求不高的非常大规模数据集。通过非常低成本的组件即可搭建完整功能的hadoop集群,使得这一廉价且高效的处理技术可以灵活应用在很多案例中。与其他框架和引擎的兼容与集成能力使得hadoop可以成为使用不同技术的多种工作负载处理平台的底层基础。
流处理系统流处理系统会对随时进入系统的数据进行计算。相比批处理模式,这是一种截然不同的处理方式。流处理方式无需针对整个数据集执行操作,而是对通过系统传输的每个数据项执行操作。流处理中的数据集是“无边界”的,这就产生了几个重要的影响:完整数据集只能代表截至目前已经进入到系统中的数据总量。工作数据集也许更相关,在特定时间只能代表某个单一数据项。处理工作是基于事件的,除非明确停止否则没有“尽头”。处理结果立刻可用,并会随着新数据的抵达继续更新。流处理系统可以处理几乎无限量的数据,但同一时间只能处理一条(真正的流处理)或很少量(微批处理,micro-batch processing)数据,不同记录间只维持最少量的状态。虽然大部分系统提供了用于维持某些状态的方法,但流处理主要针对副作用更少,更加功能性的处理(functional processing)进行优化。功能性操作主要侧重于状态或副作用有限的离散步骤。针对同一个数据执行同一个操作会或略其他因素产生相同的结果,此类处理非常适合流处理,因为不同项的状态通常是某些困难、限制,以及某些情况下不需要的结果的结合体。因此虽然某些类型的状态管理通常是可行的,但这些框架通常在不具备状态管理机制时更简单也更高效。此类处理非常适合某些类型的工作负载。有近实时处理需求的任务很适合使用流处理模式。分析、服务器或应用程序错误日志,以及其他基于时间的衡量指标是最适合的类型,因为对这些领域的数据变化做出响应对于业务职能来说是极为关键的。流处理很适合用来处理必须对变动或峰值做出响应,并且关注一段时间内变化趋势的数据。apache storm(架构师/大数据/马士兵 489034603)
apache storm是一种侧重于极低延迟的流处理框架,也许是要求近实时处理的工作负载的最佳选择。该技术可处理非常大量的数据,通过比其他解决方案更低的延迟提供结果。流处理模式storm的流处理可对框架中名为topology(拓扑)的dag(directed acyclic graph,有向无环图)进行编排。这些拓扑描述了当数据片段进入系统后,需要对每个传入的片段执行的不同转换或步骤。拓扑包含:stream:普通的数据流,这是一种会持续抵达系统的无边界数据。spout:位于拓扑边缘的数据流来源,例如可以是api或查询等,从这里可以产生待处理的数据。bolt:bolt代表需要消耗流数据,对其应用操作,并将结果以流的形式进行输出的处理步骤。bolt需要与每个spout建立连接,随后相互连接以组成所有必要的处理。在拓扑的尾部,可以使用最终的bolt输出作为相互连接的其他系统的输入。storm背后的想法是使用上述组件定义大量小型的离散操作,随后将多个组件组成所需拓扑。默认情况下storm提供了“至少一次”的处理保证,这意味着可以确保每条消息至少可以被处理一次,但某些情况下如果遇到失败可能会处理多次。storm无法确保可以按照特定顺序处理消息。为了实现严格的一次处理,即有状态处理,可以使用一种名为trident的抽象。严格来说不使用trident的storm通常可称之为core storm。trident会对storm的处理能力产生极大影响,会增加延迟,为处理提供状态,使用微批模式代替逐项处理的纯粹流处理模式。为避免这些问题,通常建议storm用户尽可能使用core storm。然而也要注意,trident对内容严格的一次处理保证在某些情况下也比较有用,例如系统无法智能地处理重复消息时。如果需要在项之间维持状态,例如想要计算一个小时内有多少用户点击了某个链接,此时trident将是你唯一的选择。尽管不能充分发挥框架与生俱来的优势,但trident提高了storm的灵活性。trident拓扑包含:流批(stream batch):这是指流数据的微批,可通过分块提供批处理语义。操作(operation):是指可以对数据执行的批处理过程。优势和局限目前来说storm可能是近实时处理领域的最佳解决方案。该技术可以用极低延迟处理数据,可用于希望获得最低延迟的工作负载。如果处理速度直接影响用户体验,例如需要将处理结果直接提供给访客打开的网站页面,此时storm将会是一个很好的选择。storm与trident配合使得用户可以用微批代替纯粹的流处理。虽然借此用户可以获得更大灵活性打造更符合要求的工具,但同时这种做法会削弱该技术相比其他解决方案最大的优势。话虽如此,但多一种流处理方式总是好的。core storm无法保证消息的处理顺序。core storm为消息提供了“至少一次”的处理保证,这意味着可以保证每条消息都能被处理,但也可能发生重复。trident提供了严格的一次处理保证,可以在不同批之间提供顺序处理,但无法在一个批内部实现顺序处理。在互操作性方面,storm可与hadoop的yarn资源管理器进行集成,因此可以很方便地融入现有hadoop部署。除了支持大部分处理框架,storm还可支持多种语言,为用户的拓扑定义提供了更多选择。总结对于延迟需求很高的纯粹的流处理工作负载,storm可能是最适合的技术。该技术可以保证每条消息都被处理,可配合多种编程语言使用。由于storm无法进行批处理,如果需要这些能力可能还需要使用其他软件。如果对严格的一次处理保证有比较高的要求,此时可考虑使用trident。不过这种情况下其他流处理框架也许更适合
apache samza(架构师/大数据/马士兵 489034603)
apache samza是一种与apache kafka消息系统紧密绑定的流处理框架。虽然kafka可用于很多流处理系统,但按照设计,samza可以更好地发挥kafka独特的架构优势和保障。该技术可通过kafka提供容错、缓冲,以及状态存储。samza可使用yarn作为资源管理器。这意味着默认情况下需要具备hadoop集群(至少具备hdfs和yarn),但同时也意味着samza可以直接使用yarn丰富的内建功能。流处理模式samza依赖kafka的语义定义流的处理方式。kafka在处理数据时涉及下列概念:topic(话题):进入kafka系统的每个数据流可称之为一个话题。话题基本上是一种可供消耗方订阅的,由相关信息组成的数据流。partition(分区):为了将一个话题分散至多个节点,kafka会将传入的消息划分为多个分区。分区的划分将基于键(key)进行,这样可以保证包含同一个键的每条消息可以划分至同一个分区。分区的顺序可获得保证。broker(代理):组成kafka集群的每个节点也叫做代理。producer(生成方):任何向kafka话题写入数据的组件可以叫做生成方。生成方可提供将话题划分为分区所需的键。consumer(消耗方):任何从kafka读取话题的组件可叫做消耗方。消耗方需要负责维持有关自己分支的信息,这样即可在失败后知道哪些记录已经被处理过了。由于kafka相当于永恒不变的日志,samza也需要处理永恒不变的数据流。这意味着任何转换创建的新数据流都可被其他组件所使用,而不会对最初的数据流产生影响。优势和局限乍看之下,samza对kafka类查询系统的依赖似乎是一种限制,然而这也可以为系统提供�...
大理分类信息网,免费分类信息发布

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录