Hadoop、Storm、Samza、Spark和Flink对比_光环大数据培训
大数据分布式计算框架比较

大数据分布式计算框架的比较可以从多个方面进行,例如性能、易用性、资源消耗、社区支持等。
以下是一些常见的分布式计算框架以及它们的比较:1. Hadoop:Apache Hadoop是一个分布式计算框架,用于存储和处理大规模数据集。
它具有可靠的数据存储和分布式计算能力,可以处理大量数据,支持并行处理和流处理。
在性能方面,Hadoop表现稳定,处理速度快,而且可以与其他开源项目集成。
易用性方面,Hadoop 具有简单易用的API和命令行工具,社区支持广泛。
然而,资源消耗较大,需要大量的内存和CPU资源。
2. Spark:Apache Spark是一个开源的分布式计算框架,主要用于快速处理大规模数据集。
它具有高效的数据处理能力,支持迭代式算法和流处理,并且可以与Hadoop和其他系统集成。
在性能方面,Spark表现优异,处理速度快,而且具有高效的内存使用和分布式调度能力。
易用性方面,Spark提供了丰富的API和工具,社区支持广泛。
然而,Spark的资源消耗较大,需要大量的内存和CPU资源。
3. Flink:Apache Flink是一个开源的流处理平台,用于实时处理大规模数据流和批量数据。
它具有高效的分布式计算能力,支持实时数据流和批处理的统一处理。
在性能方面,Flink 表现稳定,处理速度快,而且具有高效的资源管理和故障恢复能力。
易用性方面,Flink提供了丰富的API和工具,社区支持广泛。
然而,Flink的资源消耗较大,需要大量的内存和CPU资源。
4. Storm:Apache Storm是一个开源的分布式实时计算系统,用于处理大规模数据流。
它具有可靠的数据传输和分布式计算能力,可以实时处理数据流并输出结果。
在性能方面,Storm 表现稳定,处理速度快,而且具有高效的资源管理和故障恢复能力。
易用性方面,Storm提供了简单的API和命令行工具,社区支持广泛。
然而,Storm的资源消耗较大,需要大量的内存和CPU资源。
大数据主流的三大分布式计算系统_光环大数据推出AI智客计划送2000助学金

大数据主流的三大分布式计算系统_光环大数据推出AI智客计划送2000助学金由于Google没有开源Google分布式计算模型的技能完成,所以别的互联网公司只能依据Google三篇技能论文中的有关原理,建立自个的分布式计算体系。
Yahoo的工程师Doug Cutting和Mike Cafarella在2005年合作开发了分布式计算体系Hadoop。
后来,Hadoop被贡献给了Apache基金会,变成了Apache基金会的开源项目。
Doug Cutting也变成Apache基金会的主席,掌管Hadoop的开发作业。
Hadoop选用MapReduce分布式计算结构,并依据GFS开发了HDFS分布式文件体系,依据BigTable开发了HBase数据存储体系。
虽然和Google内部运用的分布式计算体系原理一样,但是Hadoop在运算速度上仍然达不到Google论文中的规范。
不过,Hadoop的开源特性使其变成分布式计算体系的事实上的国际规范。
Yahoo,Facebook,Amazon以及国内的baidu,阿里巴巴等很多互联网公司都以Hadoop 为根底建立自个的分布式计算体系。
Spark也是Apache基金会的开源项目,它由加州大学伯克利分校的实验室开发,是别的一种主要的分布式计算体系。
它在Hadoop的根底上进行了一些架构上的改进。
Spark与Hadoop最大的不同点在于,Hadoop运用硬盘来存储数据,而Spark运用内存来存储数据,因而Spark能够供给超过Hadoop100倍的运算速度。
但是,由于内存断电后会丢掉数据,Spark不能用于处理需要长时间保存的数据。
Storm是Twitter主推的分布式计算体系,它由BackType团队开发,是Apache基金会的孵化项目。
它在Hadoop的根底上供给了实时运算的特性,能够实时的处理大数据流。
不同于Hadoop和Spark,Storm不进行数据的搜集和存储作业,它直接经过网络实时的承受数据而且实时的处理数据,然后直接经过网络实时的传回成果。
Storm与hadoop区别与联系_光环大数据storm培训

Storm与hadoop区别与联系_光环大数据storm培训大部分读者应该都是在了解了hadoop的基础后,才研究storm。
因此个人觉得通过比对的方式,读者可能更容易理解Storm与Hadoop的区别以及Storm 的应用场景。
2.1应用场景对比Storm:分布式实时计算,强调实时性,常用于实时性要求较高的地方Hadoop:分布式批处理计算,强调批处理,常用于对已经在的大量数据挖掘、分析具体来说,Hadoop擅长于分析统计大批量的数据,在hadoop权威指南中,指出:MapReduce的设计目标是服务于那些只需要数分钟或者数小时既可以完成的作业。
例如有这样的案例,美国国家气候中心使用hadoop分析统计1901年到2001年的气象数据,统计出气温最高的年份。
实际上这里已经体现出了hadoop 处理数据的一个特点:对于已经存在的大量数据进行统计分析。
这种特性注定了hadoop是高延迟的,即使我们在几秒中内可以算出结果,但是还是不够实时。
假设我们要将统计分析的结果直接显示给数以千万计的普通用户,普通用户是无法忍受几秒中后才得到返回结果的。
但是这并不是说hadoop没用,对于公司的运营人来说,这个时间是可以忍受的。
例如本人所在公司目前每天大概收集1亿条的用户行为数据,每天晚上都会由定时hadoop任务来分析统计这些数据,运营人员基本上都是第二天来看结果。
当然,案例并不止这一个。
目前本人所在公司的云计算管理中心调度接近2000个hadoop任务。
而storm同样是一个大数据处理框架,与hadoop不同的是,storm不是批量处理已经存在的大量数据,而是实时计算每一条数据。
例如,一个促销活动,假设首页上有100种商品,同时有几亿用户访问。
运营者就需要实时统计每种商品的点击率,如果在一段时间内,某种商品的访问量太低,就应该使用其他商品替换这个商品。
因为在促销中,首页上的商品位置资源是比较稀缺的,如果一个商品长时间没多少人访问,应该让更有价值的商品来放在这个位置上。
Spark和Hadoop:哪个更适合大数据处理

Spark和Hadoop:哪个更适合大数据处理随着数十年高速发展的信息技术,数字世界中的大数据变得越来越重要和必不可少。
大数据可以帮助企业进行更深入的市场研究,制定更优化的生产计划,提高产品质量和客户满意度。
但是,大数据的处理需要高效且可靠的解决方案。
Spark和Hadoop是当前最流行的两个解决方案,那么,哪个更适合大数据处理呢?Hadoop是传统大数据处理的开源软件框架,由Apache软件基金会开发和维护。
Hadoop的核心功能是分布式存储和处理大数据,其主要组件包括HDFS(Hadoop分布式文件系统)和MapReduce。
Hadoop是一个稳定而且容易部署的平台,可以在廉价的硬件上运行。
大数据处理是一个计算密集型任务,而Hadoop可以通过将数据划分为小块,然后在一系列经过优化的任务中处理这些块,以实现高可伸缩性。
相比之下,Spark是一种新一代数据处理框架,用于高速计算和处理数据。
它比Hadoop更快,更容易使用,且可应用于广泛的数据处理工作。
Spark的核心功能是内存计算,即将数据存储在内存中而不是硬盘中进行计算。
这使得Spark处理大量数据时比Hadoop快得多。
与Hadoop类似,Spark也是一个开源的框架,由Apache软件基金会维护。
Hadoop和Spark的设计理念也不同。
Hadoop旨在处理大量的数据,同时使计算任务在大规模的计算机集群中分布式运行,从而提高处理大数据集的能力。
而Spark的设计目标则是集成数据处理任务,并使用一个统一的数据处理框架来处理不同的任务,包括批处理、流处理和机器学习等功能。
因此,Spark不仅用于大规模的数据处理,还用于数据挖掘和实时数据流分析等各种领域。
在实际运用中,Hadoop和Spark各有优劣。
如果数据处理需要进行大规模计算,适合使用Hadoop。
Hadoop的传统计算模型是MapReduce,MapReduce算法可以将计算分布式,从而快速地完成计算任务。
Hadoop能否被Spark替代_光环大数据培训

Hadoop能否被Spark替代_光环大数据培训谈到大数据,相信大家对hadoop和Apache Spark这两个名字并不陌生。
然而,最近业界有一些人正在大张旗鼓的宣扬Hadoop将死,Spark将立。
他们究竟是危言耸听?哗众取宠?还是眼光独到堪破未来呢?与Hadoop相比,Spark技术如何?现工业界大数据技术都在使用何种技术?如果现在想要参加大数据培训的话,应该从哪一种开始呢?大数据(1)先说二者之间的区别吧。
首先,Hadoop与Spark解决问题的层面不同。
Hadoop和Apache Spark两者都是大数据框架,但是各自存在的目的不尽相同。
Hadoop实质上更多是一个分布式数据基础设施: 它将巨大的数据集分派到一个由普通计算机组成的集群中的多个节点进行存储,意味着您不需要购买和维护昂贵的服务器硬件。
同时,Hadoop还会索引和跟踪这些数据,让大数据处理和分析效率达到前所未有的高度。
Spark,则是那么一个专门用来对那些分布式存储的大数据进行处理的工具,它并不会进行分布式数据的存储。
其次,还有一点也值得注意——这两者的灾难恢复方式迥异。
因为Hadoop将每次处理后的数据都写入到磁盘上,所以其天生就能很有弹性的对系统错误进行处理。
Spark的数据对象存储在分布于数据集群中的叫做弹性分布式数据集(RDD: Resilient Distributed Dataset)中。
这些数据对象既可以放在内存,也可以放在磁盘,所以RDD同样也可以提供完成的灾难恢复功能。
由于两者的侧重点不同,使用场景不同,大讲台老师认为其实并没有替代之说。
Spark更适合于迭代运算比较多的ML和DM运算。
因为在Spark里面,有RDD的概念。
RDD可以cache到内存中,那么每次对RDD数据集的操作之后的结果,都可以存放到内存中,下一个操作可以直接从内存中输入,省去了MapReduce大量的磁盘IO操作。
但是,我们也要看到spark的限制:内存。
架构师谈大数据技术栈HadoopSpark与Flink

架构师谈大数据技术栈HadoopSpark与Flink架构师谈大数据技术栈Hadoop、Spark与Flink在当前大数据时代,大数据技术越来越受到人们的关注和重视。
作为企业和组织处理和分析海量数据的核心工具,大数据技术栈的选择对于构建高效、可靠的大数据应用至关重要。
本文将对目前最流行的大数据技术栈——Hadoop、Spark和Flink做一简要介绍和比较。
一、HadoopHadoop是由Apache基金会开发的一个开源框架,主要用于处理和存储大规模数据集。
Hadoop采用分布式计算的方式,通过将数据分散存储在集群中的多个节点上,利用并行处理的方式提高数据处理能力。
Hadoop的核心组件包括HDFS(Hadoop分布式文件系统)和MapReduce。
HDFS是Hadoop的分布式文件系统,它将数据分散存储在集群中的不同节点上,保证了数据的冗余和可靠性,并且支持水平扩展,可以根据需求进行容量的扩展。
MapReduce是Hadoop的计算模型,它将数据切分成多个小的部分,然后分发给集群中的各个节点进行并行计算,最后将结果进行汇总。
二、SparkSpark是由Apache开发的一个快速、通用的大数据处理引擎,它提供了比Hadoop更高级别的API,以及支持交互式查询、流处理和机器学习等功能。
Spark通过将数据保存在内存中来加速计算过程,从而大幅度提高了处理速度。
Spark的核心组件包括Spark Core、Spark SQL、Spark Streaming、MLlib和GraphX等。
Spark Core提供了Spark的基本功能,包括任务调度、内存管理和分布式数据集的操作等。
Spark SQL支持对结构化数据的查询和分析。
Spark Streaming可以实时处理和分析流式数据。
MLlib提供了常用的机器学习算法。
GraphX用于图数据的处理和分析。
三、FlinkFlink是另一个开源的大数据处理框架,它以低延迟和高吞吐量的方式处理批处理和流处理任务。
Spark与Hadoop的比较分析及其在大数据处理中的优势

Spark与Hadoop的比较分析及其在大数据处理中的优势在大数据时代,处理大规模数据集已成为各行业必备的能力。
为了满足数据处理需求,出现了多种分布式处理框架。
其中,Spark和Hadoop是两个备受关注的框架。
本文将对Spark和Hadoop进行比较分析,并探讨它们在大数据处理中的优势。
首先,需要明确的是,Spark和Hadoop都是用于分布式数据处理的框架,但它们在架构和实现上有所不同。
Hadoop是一个以Hadoop Distributed File System(HDFS)为核心的分布式数据处理框架。
它通过将大数据分成多个块,并将这些块分布在集群中的多个机器上,来实现数据的存储和处理。
Hadoop基于MapReduce编程模型,将任务分为两个阶段:map和reduce。
其中,map阶段负责数据的拆分和处理,而reduce阶段负责对map输出进行合并和汇总。
Spark则是一个快速、通用的大数据处理引擎。
与Hadoop不同,Spark将数据存储在内存中,而不是磁盘上,因此大大提高了处理速度。
Spark提供了弹性分布式数据集(Resilient Distributed Datasets,简称RDD)的抽象概念,通过RDD可以实现数据的分布式计算和并行处理。
对于数据处理的效率而言,Spark比Hadoop具有明显优势。
首先,Spark利用了内存计算的特点,可以将数据存储在内存中以提高处理速度。
与此相比,Hadoop需要将数据从磁盘读入内存,再进行处理,速度较慢。
其次,Spark通过将中间结果保存在内存中进行多次计算操作,避免了Hadoop中将中间结果写入磁盘再从磁盘读取的过程,进一步提升了计算性能。
另外,Spark还提供了丰富的API,支持多种编程语言,如Java、Scala和Python等。
这使得开发人员可以使用自己熟悉的编程语言进行开发,提高了开发效率和灵活性。
而Hadoop则主要基于Java编程,对于其他语言的支持相对较弱。
大规模数据处理中的分布式计算框架选择与比较

大规模数据处理中的分布式计算框架选择与比较随着大数据时代的到来,数据量的快速增长给数据处理带来了巨大的挑战。
为了应对这一挑战,分布式计算框架应运而生,成为处理大规模数据的重要工具。
本文将对当前主流的分布式计算框架进行选择与比较,帮助读者了解并选择适合自己需求的框架。
1. Apache HadoopApache Hadoop是目前最为广泛使用的分布式计算框架之一。
它采用了分布式文件系统(HDFS)和分布式计算框架(MapReduce),能够高效地处理大规模数据。
Hadoop架构的核心思想是将数据划分为多个块进行并行处理,具有良好的容错性和可伸缩性。
此外,Hadoop还提供了丰富的生态系统,包括Hive、HBase等工具,可以满足各种需求。
2. Apache SparkApache Spark是一个快速、通用的大数据处理框架,比Hadoop更加高效。
Spark拥有更加强大的内存计算能力,能够在处理大规模数据时大幅提升性能。
Spark提供了强大的API,包括Spark SQL、Spark Streaming等,方便用户进行数据分析、机器学习等任务。
此外,Spark还支持与Hadoop、Hive等框架的无缝集成,能够充分利用已有的大数据生态系统。
3. Apache FlinkApache Flink是一个开源的流式数据处理框架,具有低延迟和高吞吐量的特点。
相比于Hadoop和Spark,Flink在流式计算和迭代计算方面表现出色。
Flink提供了一种统一的处理模型,可以处理无界和有界的数据流,并且支持复杂的事件处理,适用于实时分析、机器学习和图计算等场景。
此外,Flink还具备容错和高可用性的特性,能够应对故障和大规模数据处理。
4. Apache StormApache Storm是一个分布式流式计算框架,特别适用于实时数据处理。
Storm采用了可靠的消息传递机制,能够确保数据的一致性和可靠性。
它具有低延迟、高吞吐量的特点,并且具备良好的可扩展性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Hadoop、Storm、Samza、Spark和Flink对比_光环大数据培训大数据是收集、整理、处理大容量数据集,并从中获得见解所需的非传统战略和技术的总称。
虽然处理数据所需的计算能力或存储容量早已超过一台计算机的上限,但这种计算类型的普遍性、规模,以及价值在最近几年才经历了大规模扩展。
在之前的文章中,我们曾经介绍过有关大数据系统的常规概念、处理过程,以及各种专门术语,本文将介绍大数据系统一个最基本的组件:处理框架。
处理框架负责对系统中的数据进行计算,例如处理从非易失存储中读取的数据,或处理刚刚摄入到系统中的数据。
数据的计算则是指从大量单一数据点中提取信息和见解的过程。
下文将介绍这些框架:仅批处理框架:Apache hadoop仅流处理框架:Apache StormApache Samza混合框架:Apache SparkApache Flink大数据处理框架是什么?处理框架和处理引擎负责对数据系统中的数据进行计算。
虽然“引擎”和“框架”之间的区别没有什么权威的定义,但大部分时候可以将前者定义为实际负责处理数据操作的组件,后者则可定义为承担类似作用的一系列组件。
例如Apache Hadoop可以看作一种以MapReduce作为默认处理引擎的处理框架。
引擎和框架通常可以相互替换或同时使用。
例如另一个框架Apache Spark活性如此之高的原因之一。
虽然负责处理生命周期内这一阶段数据的系统通常都很复杂,但从广义层面来看它们的目标是非常一致的:通过对数据执行操作提高理解能力,揭示出数据蕴含的模式,并针对复杂互动获得见解。
为了简化这些组件的讨论,我们会通过不同处理框架的设计意图,按照所处理的数据状态对其进行分类。
一些系统可以用批处理方式处理数据,一些系统可以用流方式处理连续不断流入系统的数据。
此外还有一些系统可以同时处理这两类数据。
在深入介绍不同实现的指标和结论之前,首先需要对不同处理类型的概念进行一个简单的介绍。
批处理系统批处理在大数据世界有着悠久的历史。
批处理主要操作大容量静态数据集,并在计算过程完成后返回结果。
批处理模式中使用的数据集通常符合下列特征...有界:批处理数据集代表数据的有限集合持久:数据通常始终存储在某种类型的持久存储位置中大量:批处理操作通常是处理极为海量数据集的唯一方法批处理非常适合需要访问全套记录才能完成的计算工作。
例如在计算总数和平均数时,必须将数据集作为一个整体加以处理,而不能将其视作多条记录的集合。
这些操作要求在计算进行过程中数据维持自己的状态。
需要处理大量数据的任务通常最适合用批处理操作进行处理。
无论直接从持久存储设备处理数据集,或首先将数据集载入内存,批处理系统在设计过程中就充分考虑了数据的量,可提供充足的处理资源。
由于批处理在应对大量持久数据方面的表现极为出色,因此经常被用于对历史数据进行分析。
大量数据的处理需要付出大量时间,因此批处理不适合对处理时间要求较高的场合。
Apache 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具备极高的缩放潜力,生产环境中曾经出现过包含数万个节点的应用。
以大幅降低这一问题的影响,但通过Hadoop集群快速实现某些应用时依然需要注意这个问题。
围绕Hadoop已经形成了辽阔的生态系统,Hadoop集群本身也经常被用作其他软件的组成部件。
很多其他处理框架和引擎通过与Hadoop集成也可以使用HDFS和YARN资源管理器。
总结Apache Hadoop及其MapReduce处理引擎提供了一套久经考验的批处理模型,最适合处理对时间要求不高的非常大规模数据集。
通过非常低成本的组件即可搭建完整功能的Hadoop集群,使得这一廉价且高效的处理技术可以灵活应用在很多案例中。
与其他框架和引擎的兼容与集成能力使得Hadoop可以成为使用不同技术的多种工作负载处理平台的底层基础。
流处理系统流处理系统会对随时进入系统的数据进行计算。
相比批处理模式,这是一种截然不同的处理方式。
流处理方式无需针对整个数据集执行操作,而是对通过系统传输的每个数据项执行操作。
流处理中的数据集是“无边界”的,这就产生了几个重要的影响:完整数据集只能代表截至目前已经进入到系统中的数据总量。
工作数据集也许更相关,在特定时间只能代表某个单一数据项。
处理工作是基于事件的,除非明确停止否则没有“尽头”。
处理结果立刻可用,并会随着新数据的抵达继续更新。
流处理系统可以处理几乎无限量的数据,但同一时间只能处理一条(真正的流处理)或很少量(微批处理,Micro-batch Processing)数据,不同记录间只维持最少量的状态。
虽然大部分系统提供了用于维持某些状态的方法,但流处理主要针对副作用更少,更加功能性的处理(Functional processing)进行优化。
功能性操作主要侧重于状态或副作用有限的离散步骤。
针对同一个数据执行同一个操作会或略其他因素产生相同的结果,此类处理非常适合流处理,因为不同项的状态通常是某些困难、限制,以及某些情况下不需要的结果的结合体。
因此虽然某些类型的状态管理通常是可行的,但这些框架通常在不具备状态管理机制时更简单也更高效。
用流处理模式。
分析、服务器或应用程序错误日志,以及其他基于时间的衡量指标是最适合的类型,因为对这些领域的数据变化做出响应对于业务职能来说是极为关键的。
流处理很适合用来处理必须对变动或峰值做出响应,并且关注一段时间内变化趋势的数据。
Apache StormApache 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提高了Storm的灵活性。
Trident拓扑包含:流批(Stream batch):这是指流数据的微批,可通过分块提供批处理语义。
操作(Operation):是指可以对数据执行的批处理过程。
优势和局限目前来说Storm可能是近实时处理领域的最佳解决方案。
该技术可以用极低延迟处理数据,可用于希望获得最低延迟的工作负载。
如果处理速度直接影响用户体验,例如需要将处理结果直接提供给访客打开的网站页面,此时Storm将会是一个很好的选择。
Storm与Trident配合使得用户可以用微批代替纯粹的流处理。
虽然借此用户可以获得更大灵活性打造更符合要求的工具,但同时这种做法会削弱该技术相比其他解决方案最大的优势。
话虽如此,但多一种流处理方式总是好的。
Core Storm无法保证消息的处理顺序。
Core Storm为消息提供了“至少一次”的处理保证,这意味着可以保证每条消息都能被处理,但也可能发生重复。
Trident提供了严格的一次处理保证,可以在不同批之间提供顺序处理,但无法在一个批内部实现顺序处理。
在互操作性方面,Storm可与Hadoop的YARN资源管理器进行集成,因此可以很方便地融入现有Hadoop部署。
除了支持大部分处理框架,Storm还可支持多种语言,为用户的拓扑定义提供了更多选择。
总结对于延迟需求很高的纯粹的流处理工作负载,Storm可能是最适合的技术。
该技术可以保证每条消息都被处理,可配合多种编程语言使用。