首页 > 其他分享 >代表性大数据技术:Hadoop、Spark与Flink的框架演进

代表性大数据技术:Hadoop、Spark与Flink的框架演进

时间:2024-08-14 17:26:32浏览次数:15  
标签:Flink Hadoop MapReduce 计算 Spark 数据

MapReduce编程模型的提出为大数据分析和处理开创了一条先河,之后陆续涌现出了Hadoop、Spark和Flink等大数据框架。

Hadoop

2004年,Hadoop的创始人受MapReduce编程模型等一系列论文的启发,对论文中提及的思想进行了编程实现。Hadoop的名字来源于创始人Doug Cutting儿子的玩具大象。由于创始人Doug Cutting当时加入了雅虎,并在此期间支持了大量Hadoop的研发工作,因此Hadoop也经常被认为是雅虎开源的一款大数据框架。时至今日,Hadoop不仅仅是整个大数据领域的先行者和领导者,更形成了一套围绕Hadoop的生态系统,Hadoop和它的生态是绝大多数企业首选的大数据解决方案。

尽管Hadoop生态中的组件众多,其核心组件主要有三个:

  • Hadoop MapReduce:Hadoop版本的MapReduce编程模型,可以处理海量数据,主要面向批处理。
  • HDFS:HDFS全称为Hadoop Distributed File System,是Hadoop提供的分布式文件系统,有很好的扩展性和容错性。
  • YARN:YARN是Yet Another Resource Negotiator的缩写,是Hadoop生态系统中的资源调度器,可以管理一个Hadoop集群,并为各种类型的大数据任务分配计算资源。

这三大组件中,数据存储在HDFS上,由MapReduce负责计算,YARN负责集群的资源管理。除了三大核心组件,Hadoop生态圈还有很多其他著名的组件:

  • Hive:借助Hive,用户可以编写SQL语句来查询HDFS上的结构化数据,SQL会被转化成MapReduce执行。
  • HBase:HDFS上的数据量非常庞大,但访问和查询速度比较慢,HBase可以提供给用户毫秒级的实时查询服务,是一个基于HDFS的分布式数据库。
  • Storm:Strom是一款实时计算框架,主要负责流处理。
  • Zookeeper:Hadoop生态圈很多组件使用动物来命名,形成了一个大型动物园,Zookeeper是这个动物园的管理者,主要负责分布式环境的协调。

Spark

Spark于2009年诞生于加州大学伯克利分校,2013年被捐献给Apache基金会。Spark是一款大数据计算框架,其初衷是改良Hadoop MapReduce的编程模型和执行速度。与Hadoop相比,Spark的改进主要有两点:

  • 易用性:比起MPI,MapReduce模型更友好,但仍然不够方便,因为并不是所有计算任务都可以简单拆分成map和reduce,有可能为了解决一个问题,要设计多个MapReduce任务,任务之间相互依赖,整个程序非常复杂,导致代码的可读性差。Spark提供更加方便易用的接口,提供Java、Scala、Python和R几种语言的API,支持SQL、机器学习和图计算,覆盖了绝大多数大数据计算的场景。
  • 速度快:Hadoop的map和reduce之间的中间结果都需要落地到磁盘上,而Spark尽量将大部分计算放在内存中,加上Spark的有向无环图优化,在官方的基准测试中,Spark比Hadoop快一百倍以上。

Spark生态

Spark的核心在于计算,主要目的在于优化Hadoop MapReduce计算部分,在计算层面提供更细致的服务,比如提供了常用几种数据科学语言的API,提供了SQL、机器学习和图计算支持,这些服务都是最终面向计算的。Spark并不能完全取代Hadoop,实际上,Spark融入到了Hadoop生态圈,成为其中的重要一元。一个Spark任务很可能依赖HDFS上的数据,向YARN来申请计算资源,将HBase作为输出结果的目的地。当然,Spark也可以不用依赖这些Hadoop组件,独立地完成计算。

Spark Streaming数据流示意图

Spark主要面向批处理需求,因其优异的性能和易用的接口,Spark已经是批处理界绝对的王者。Spark Streaming提供了流处理的功能,它的流处理主要基于mini-batch的思想,即将输入数据流拆分成多个批次,每个批次使用批处理的方式进行计算。因此,Spark是一款批量和流式于一体的计算框架。

Flink

Flink是由德国几所大学发起的的学术项目,后来不断发展壮大,并于2014年末成为Apache顶级项目。Flink主要面向流处理,如果说Spark是批处理界的王者,那么Flink就是流处理领域的冉冉升起的新星。在Flink之前,不乏流式处理引擎,比较著名的有Storm、Spark Streaming,但某些特性远不如Flink。

第一代被广泛采用的流处理框架是Strom。在多项基准测试中,Storm的数据吞吐量和延迟都远逊于Flink。Storm只支持"at least once"和"at most once",即数据流里的事件投递只能保证至少一次或至多一次,不能保证只有一次。对于很多对数据准确性要求较高的应用,Storm有一定劣势。第二代非常流行的流处理框架是Spark Streaming。Spark Streaming使用mini-batch的思想,每次处理一小批数据,一小批数据包含多个事件,以接近实时处理的效果。因为它每次计算一小批数据,因此总有一些延迟。但Spark Streaming的优势是拥有Spark这个靠山,用户从Spark迁移到Spark Streaming的成本较低,因此能给用户提供一个批量和流式于一体的计算框架。

Flink是与上述两代框架都不太一样的新一代计算框架,它是一个支持在有界和无界数据流上做有状态计算的大数据引擎。它以事件为单位,并且支持SQL、State、WaterMark等特性。它支持"exactly once",即事件投递保证只有一次,不多也不少,这样数据的准确性能得到提升。比起Storm,它的吞吐量更高,延迟更低,准确性能得到保障;比起Spark Streaming,它以事件为单位,达到真正意义上的实时计算,且所需计算资源相对更少。

之前提到,数据都是以流的形式产生的。数据可以分为有界(bounded)和无界(unbounded),批量处理其实就是一个有界的数据流,是流处理的一个特例。Flink基于这种思想,逐步发展成一个可支持流式和批量处理的大数据框架。

经过几年的发展,Flink的API已经非常完善,可以支持Java、Scala和Python,并且支持SQL。Flink的Scala版API与Spark非常相似,有Spark经验的程序员可以用一个小时的时间熟悉Flink API。

与Spark类似,Flink目前主要面向计算,并且可以与Hadoop生态高度集成。Spark和Flink各有所长,也在相互借鉴,一边竞争,一边学习,究竟最终谁能一统江湖,我们拭目以待。

 

免费试用、获取更多信息,点击了解更多>>>体验FDL功能

了解更多数据仓库与数据集成关干货内容请关注>>>FineDataLink官网

往期推荐:

OLAP与OLTP:数据处理系统的两种核心架构_oltp,olap-CSDN博客

【大数据】什么是数据对接?(附方法及工具介绍)_数据接口对接定义-CSDN博客

什么是湖仓一体?湖仓一体解决了什么问题?-CSDN博客

标签:Flink,Hadoop,MapReduce,计算,Spark,数据
From: https://blog.csdn.net/oOBubbleX/article/details/141168759

相关文章

  • 【Spark集群部署系列四】Spark on YARN介绍和环境部署
    简介引言:通常如果我们想要一个稳定的生产Spark环境,那么最优的选择就是构建:HAStandAlone集群.。不过在企业中,服务器的资源总是紧张的,许多企业不管做什么业务,都基本上会有Hadoop集群.也就是会有YARN集群。对于企业来说,在已有YARN集群的前提下在单独准备Spar......
  • Spark MLlib 特征工程系列—特征转换StringIndexer和IndexToString
    SparkMLlib特征工程系列—特征转换StringIndexer和IndexToStringStringIndexer是SparkMLlib中的一个特征转换器,用于将类别型(即字符串)特征转换为数值型索引。这个转换器对于处理包含类别型数据的机器学习任务非常有用,因为大多数机器学习算法要求输入的特征是数值型的......
  • flink-cdc实时同步(oracle to mysql)
    FlinkCDC于2021年11月15日发布了最新版本2.1,该版本通过引入内置Debezium组件,增加了对Oracle的支持。Flink下载地址https://flink.apache.org/downloads/其他必需的jar包(cdc、jdbc、mysq和oracle等驱动包) 下载Flink后,直接解压到指定目录下即可;tarzxvf flink-......
  • Flink1.19 JobSubmitHandler源码解析
    文章目录概要整体架构流程概要JobGraph在客户端生成后,需要发送到服务端,首先会被JobSubmitHandler(WebMonitor内处理http请求的处理类)接收处理,然后会发送到Dispatcher进一步处理整体架构流程首先会进入JobSubmitHandler对象的handleRequest方法有两个参数:request:封......
  • 计算机毕业设计Hadoop+Hive居民用电量分析 居民用电量可视化 电量爬虫 机器学习 深度
    《Hadoop居民用电量分析》开题报告一、研究背景与意义能源问题在全球范围内一直是热点议题,尤其是随着居民生活水平的提高和城市化进程的加快,居民用电量急剧增长,对电力系统的稳定运行和能源管理提出了更高要求。如何科学合理地管理和分析居民用电量数据,成为提升能源利用效率、......
  • Hadoop 中的大数据技术:HDFS(1)
    Hadoop中的大数据技术:HDFS(1)大家好!在为您带来精彩的技术干货之前,先给您推荐一个我精心运营的公众号[大数据深度洞察]。在这里,您将获取更多独家的技术分享、实用案例以及行业前沿资讯。亲爱的读者们,当您准备开启这篇充满价值的技术文章之旅时,不妨先关注我的公众号[大数据深......
  • Hadoop 中的大数据技术:HDFS(2)
    Hadoop中的大数据技术:HDFS(2)续上一篇Hadoop中的大数据技术:HDFS(1)大家好!在为您带来精彩的技术干货之前,先给您推荐一个我精心运营的公众号[大数据深度洞察]。在这里,您将获取更多独家的技术分享、实用案例以及行业前沿资讯。亲爱的读者们,当您准备开启这篇充满价值的技术文章......
  • Spark MLlib 特征工程系列—特征提取 TF-IDF
    文章目录SparkMLlib特征工程系列—特征提取TF-IDF分词TokenizerTF实现特征提取HashingTF特征提取CountVectorizer对比CountVectorizer和HashingTF基本原理优缺点对比适用场景IDF模型总结SparkMLlib特征工程系列—特征提取TF-IDFTF-IDF是文本挖掘中广......
  • 混合处理框架:Spark
    ApacheFlink是一个开源的流处理框架,用于实现有状态的计算。它能够同时支持批处理和流处理,并且可以无缝地在两者之间切换。Flink的设计目标是提供低延迟、高吞吐量和强大的状态管理能力。以下是Flink的一些关键特性:1.**事件驱动**:Flink是基于事件的流处理引擎,能够实......
  • 混合处理框架:Flink
    ApacheFlink是一个开源的流处理框架,用于实现有状态的计算。它能够同时支持批处理和流处理,并且可以无缝地在两者之间切换。Flink的设计目标是提供低延迟、高吞吐量和强大的状态管理能力。以下是Flink的一些关键特性:1.**事件驱动**:Flink是基于事件的流处理引擎,能够实......