对外行而言,Hadoop之于Spark就像百事可乐之于可口可乐:相似、广泛可互换的品牌,但有一些微妙又重要的差异。 Hadoop和Spark是处理大规模数据的两个使用最广泛的框架。它们可以解决很多相同的用例和挑战,但它们的设计优先级不同。 当你深入研究细节时,很明显,Hadoop和Spark在处理数据的方式上存在关键差异。
Hadoop针对批处理和持续存储进行了优化,因此它支持可扩展、具有成本效益的数据管理。Spark强调内存处理和实时分析,使其更适合低延迟工作负载。 有时Hadoop和Spark一起用效果最好。企业应了解这些框架在性能、可扩展性、部署和成本方面的区别,以确定何时选择哪个工具,或……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号

TechTarget
官方微博

TechTarget中国
对外行而言,Hadoop之于Spark就像百事可乐之于可口可乐:相似、广泛可互换的品牌,但有一些微妙又重要的差异。
Hadoop和Spark是处理大规模数据的两个使用最广泛的框架。它们可以解决很多相同的用例和挑战,但它们的设计优先级不同。
当你深入研究细节时,很明显,Hadoop和Spark在处理数据的方式上存在关键差异。Hadoop针对批处理和持续存储进行了优化,因此它支持可扩展、具有成本效益的数据管理。Spark强调内存处理和实时分析,使其更适合低延迟工作负载。
有时Hadoop和Spark一起用效果最好。企业应了解这些框架在性能、可扩展性、部署和成本方面的区别,以确定何时选择哪个工具,或者何时搭配使用。
批处理与流处理以及持续与内存存储
在进一步比较Hadoop和Spark之前,我们应先定义其设计背后的两个核心概念。
批量处理和流处理
团队可以批量或流处理数据。批处理对数据进行分组并集体处理,而流处理则在每个数据对象到达时处理,而无需等待对其进行分组。对于大量数据,批量处理的资源效率更高,但流处理支持实时管理,无需等待批处理。
持续存储和内存存储
持续存储(例如硬盘)会随着时间的推移保留数据,并且相对便宜,但读/写数据很慢。内存存储使用硬件(例如RAM)临时存储信息;这可以实现更快的访问速度,从而带来更好的性能。缺点是内存存储介质价格昂贵,如果托管内存的机器关闭,存储在内存中的任何数据都会永久消失。
Apache Hadoop是什么?
Hadoop是一个用于处理大型数据集的开源框架。企业通常将其用于批处理工作负载和持续存储,尽管它可以支持带有附加工具的流处理。Hadoop主要处理存储在磁盘上的数据,但在某些情况下,它可以处理存储在易失性内存中的数据。
Apache Hadoop起源于2006年,它是MapReduce的开源替代品,MapReduce是谷歌内部使用的分布式计算框架。Hadoop旨在实现大数据处理的民主化,它使任何组织能够处理分布在服务器集群中的非常大的数据集。
在描述数据集的大小时,“大”一词是相对的。对于何时使用Hadoop,并没有数据处理阈值。一般来说,Hadoop最适合涉及大量数据的用例,以至于它不能在单个服务器上,而是必须分布在多台机器上。Hadoop在这些情况下表现出色,因为它可以从服务器集群中提取数据,并实现并行处理。
Apache Spark是什么?
Apache Spark是一个用于大数据处理的开源框架。它主要关注流处理和内存存储。Spark于2009年作为加州大学伯克利分校的一个学术研究项目开始,并于2010年成为开源项目。虽然Hadoop已经存在,但Spark解决了Hadoop并不出色的大规模数据处理用例,特别是那些需要非常快速和/或实时处理数据的用例。
像Hadoop一样,Spark处理分布在服务器集群上的数据,并且并行处理。它几乎可以处理任何规模的数据。
Hadoop和Spark之间的相似之处
Hadoop和Spark都从服务器集群中提取数据,并快速高效地处理这些数据。这意味着任一框架都可以支持不同的用例:
- 数据分析,涉及解析数据集以识别趋势或异常。
- 数据转换,或将数据从一种格式转换为另一种格式的过程。
随着时间的推移,Hadoop和Spark的功能开始重叠,因为每个功能都可以配置为支持批处理或流处理,并处理持续存储在内存中的数据。从历史上看,情况并非如此。但如今,这两个框架的发展方式使它们更加灵活,使企业能够调整任一工具来满足各种工作量需求。这种重叠的功能模糊了Hadoop和Spark之间的区别。
Hadoop与Spark的主要区别
尽管在很多情况下,在技术上可以配置Hadoop和Spark以相同的方式工作,但它们仍然是不同的,并且仍然倾向于不同的用例。
批处理与流处理
Hadoop的重点是批量处理数据,而Spark则设计用于流处理。然而,Hadoop比Spark更易于部署,并且用于批处理工作负载时更高效,而Spark更直观地用于流应用程序。
因此,当数据在分析或转换之前累积时,团队会选择Hadoop,例如使用日志分析或在零售网站上生成产品推荐,当数据必须实时处理时,他们会选择Spark,例如在网络安全环境中检测异常或支付处理中的欺诈检测。
持续存储与内存存储
Hadoop旨在从持续存储中读取/写入数据,但它可以适应访问内存中的数据。使用Hadoop进行内存处理通常需要在Hadoop集群上运行Spark,或使用抽象将系统连接到内存存储阵列,同时将其作为持续存储呈现给Hadoop。
默认情况下,Spark在内存中处理数据,但它也可以使用持续性或缓存功能来获取存储在磁盘上的数据。
虽然两个框架都可以与两种类型的数据配合使用,但这并不意味着它们在所有情况下都同样简单部署。它们可以支持这些各自的用例,而不需要附加组件或抽象。这意味着它们更容易配置,但也会带来更好的性能,因为过多的扩展可能会增加运行Hadoop或Spark所需的资源,导致实际数据处理的可用资源减少。
性能
Spark通常优于Hadoop,特别是对于受益于流媒体和内存数据处理的进程。即使Hadoop配置为使用相同的处理技术,Spark通常也能更快地读取/写入和转换信息。
因此,当性能是首要任务时,Spark通常是更好的选择。
可扩展性
Hadoop比Spark更具可扩展性,因为它在低成本服务器上高效运行。Hadoop集群通常更容易扩展,因为它们不需要大量的内存资源,这意味着组织通常可以通过添加廉价服务器来扩展Hadoop。
Spark也会扩展,但扩展Spark集群需要添加更多内存丰富的服务器,这更昂贵。
因此,Hadoop的性能提升只需向其添加更多服务器即可实现。而对于Spark,与内存成本相关的实际限制使增加集群大小以提高性能更具挑战性。
部署选项
Hadoop和Spark支持跨大多数基础设施类型的灵活部署(包括本地服务器和云服务器),无论是组织设置和管理Hadoop或Spark本身,还是在完全托管云服务中,其中提供Hadoop和Spark托管版本。这两个框架也可以直接在服务器上运行,也可以通过Kubernetes等平台进行编排。
然而,企业如何部署Hadoop或Spark会影响性能。例如,在Kubernetes上运行Spark时,由于Kubernetes启动Spark实例所需的时间,流处理功能可能会表现不佳。虽然这只是几秒钟的事,但仍然是延迟。基于Kubernetes的部署对Hadoop构成的问题较少,因为Hadoop的批处理模型不需要实时启动。
成本
作为开源技术,Hadoop和Spark都是免费使用的,尽管商业发行可能需要许可费。然而,它们的运营模式可能会产生额外的成本影响。
Spark通常成本更高,因为它依赖于内存存储,而内存存储比基于磁盘的替代品更昂贵。由于主机基础设施的成本较高,企业通常最终会为运营Spark集群支付更多费用,无论是自己设置服务器,还是为托管的基于云的Spark服务付费。
也就是说,架构和配置会对成本产生重大影响。糟糕配置的Hadoop集群可能比成本优化的Spark集群更昂贵,前者包含包含不必要的节点或低效数据转换。企业应该根据每个环境的细节来决定,而不是假设Hadoop普遍比Spark便宜。
Hadoop或Spark,还是Hadoop和Spark?
哪个框架最适合给定的用例?Hadoop非常适合以可扩展性和成本效益为优先事项的工作负载。当数据不需要流式传输时,它也效果最好,尽管有些扩展有助于使Hadoop能够进行流式处理。
与此同时,如果性能和低延迟是重中之重,Spark更合适。Spark集群通常比Hadoop集群更昂贵,但Spark能够处理存储在内存中的数据,从而加快数据处理速度。
然而,人们必须考虑到Hadoop和Spark并不相互排斥。很多企业使用混合设置来部署两者,每个框架都发挥着不同的作用:
- “基础”集群在Hadoop上运行,用于数据存储和初始处理。
- Spark在Hadoop之上运行,根据需要使用其资源管理器进行集成。
- Hadoop负责摄取数据和执行初始处理。
- 需要额外处理且高性能是关键的数据任务或管道可以移交给Spark。
- 如果需要,Spark处理的作业输出可以推回Hadoop进行额外处理。
这种设置允许用户从Hadoop的可扩展性和成本效益中受益,同时仍然提供对Spark的访问,以加快处理速度。
有效的混合架构示例是支付处理操作。在大多数情况下,支付数据可以批量处理,因为从数据产生到处理完成之间存在一些延迟是可以接受的。然而,作为付款处理操作的一部分,企业可能希望检测欺诈性付款,以实时阻止它们。
Spark对支付处理工作流程很有用,因为它可以比Hadoop更快地识别异常的支付数据。同时,企业可能会使用Hadoop进行支付处理的大多数方面,但与Spark集成以进行欺诈检测。如果工作负载完全属于与Hadoop或Spark最匹配的类别,则没有理由同时部署这两个解决方案,这样做会增加不必要的成本和复杂性。
作者
翻译
相关推荐
-
数据湖与数据仓库:关键区别
现在企业每天都在收集大量数据,而这已经超出传统关系数据库可以处理的范围。 这使得企业需要利用数据湖和数据仓库来 […]
-
Denodo推出Deep Query以提供AI驱动的深度分析
随着DeepQuery的推出,Denodo旨在使用户能够执行复杂分析,而不只是通过生成式AI检索事实。 该工具 […]
-
为什么Apache Iceberg对现代数据湖屋至关重要
Apache Iceberg已经迅速从有前景的数据表格式转变为现代数据湖屋架构的核心支柱。 领先的科技公司(包 […]
-
Snowflake收购Crunchy Data增加Postgres数据库
在6月2日,Snowflake收购Crunchy Data,增加PostgreSQL数据库功能,旨在更好地使开 […]