大数据技术发展(三):Spark 真的代替 Hadoop ? 选择 Spark 还是 Flink ?

大家好,这里是抖码课堂,抖码课堂专注提升互联网技术人的软硬实力。在抖码课堂的公众号中可以听这篇文章的音频,体验更好~~~~

今天我们来聊聊 Hadoop、Spark、Flink 这些大数据技术的选择问题。

随着时间的推移,大数据的核心技术也在不断的发展,除了 Hadoop 的发展,其中还有两个最引人注意的大数据技术:一个是 2012 年发布的 Spark;另一个是 2014 年发布的 Flink;

我们如果想正确的了解到底是选择 Hadoop、还是选择 Spark、还是选择 Flink 之前,我们需要搞明白一个概念,那就是大数据领域中的批处理和实时流处理。

批处理 vs 实时流处理

在现实世界中,数据以两种形式存在,一种是无边界数据,一种是有边界数据;

顾名思义,无边界的数据就是一种不断增长的无限的数据集,这种数据集是实时发送的,而且我们无法判断它什么时候会停止发送。比如一个传感器中发出来的数据,一个移动 APP 中发送出来的数据等都是无边界的数据集

与此相反,有边界数据集就是一种静态的并且是有限的一种数据集,这种数据集有两个特点:

  1. 这种数据集一般都是属于某个时间段的,是这个时间段收集到的数据集

  2. 这种数据集一般都是已经存储在指定的文件系统中的。

比如美团 2020 年 7 月份的交易数据、抖码课堂 2020 年第一季度的文章的数据等都是有边界的数据集。

对应着两种形式的数据,数据的处理就有两种形式:

  1. 如果需要实时的处理无边界数据集的话,那么就需要使用实时流处理的技术了,每条数据发送后都需要实时的处理

  2. 如果需要处理计算有边界数据集的话,那么就可以使用离线批处理的技术了,我们只需要在某个时间点对这种有边界的数据集进行一次处理即可。

那么:

  • Hadoop 中的 MapReduce 是属于离线批处理的技术。

  • Spark 本质也是批处理的技术,但是 Spark 的子模块 Spark Streaming 可以实时的处理无边界数据集

  • Flink 本质上实时流处理技术,但是 Flink 可以将一段时间内的无边界数据集看成是一个有边界的数据集,然后对这段时间收集到的数据进行一次批处理,也就是说 Flink 本质上虽然是流处理技术,但是也可以实现离线批处理的功能。

接下来,我们就分别来讲解下 Hadoop、Spark、Flink ,你到底要选择哪一个?

Hadoop vs Spark

前面我们讲 Hadoop 发展史的时候,了解到了 Hadoop 包含了三个组件:

  1. 分布式存储技术 HDFS

  2. 分布式计算框架 MapReduce

  3. 分布式资源管理技术 Yarn

可以说,Hadoop 已经可以满足大数据的大部分应用场景了,但是自从 2012 年开始 Spark 的出现,短短两年的时间内,Spark 的风头已经盖过了 Hadoop 的风头。在网络上很多朋友甚至说 Spark 会代替掉 Hadoop,这个说法实际上是不严谨的,因为 Spark 只是一个分布式计算的框架,它和 Hadoop 中的 MapReduce 解决的是同一个问题,所以 Spark 最多只能代替掉 Hadoop 中的 MapReduce 这个组件,并不能代替掉 Hadoop。

那么,为什么 Spark 可以代替掉 MapReduce 呢?主要的原因有三个:

  1. Spark 用起来比 MapReduce 方便多了,也就是说 Spark 比 MapReduce 好用,解决一个问题,使用 MapReduce 需要几十行代码的话,那使用 Spark 可能只要几行代码而已。

  2. Spark 性能比 MapReduce 要好很多,Spark 团队曾做过一个实验,用 Spark 排序一个 100TB 的静态数据仅用了 23 分钟,而用 MapReduce 的话,最快也用了 72 分钟。此外,Spark 还只用了 MapReduce 所用的计算资源的 1/10。

  3. Spark 的目标是成为大数据集处理的统一分析引擎

接下来,我们详细来看下上面的第 3 点原因。

如果我们选择使用 MapReduce 来作为计算引擎处理大数据的话,那么:

  • 如果想用 SQL 来操作大数据的话,要用到 Hive 这个技术框架

  • 如果我们快速基于大数据构建机器学习应用的话,我们要用到 Mahout 这个框架

  • 如果我们想构建基于大数据的实时流处理应用的话,我们要用到 Hadoop Streaming

但是,如果我们选择使用 Spark 来作为计算引擎处理大数据的话,那么:

  • 如果想用 SQL 来操作大数据的话,只需要用 Spark 的一个组件 Spark SQL 即可

  • 如果我们快速基于大数据构建机器学习应用的话,我们只需要用 Spark 的一个组件 Spark mllib 来实现

  • 如果我们想构建基于大数据的实时流处理应用的话,我们只需要用到 Spark 的一个组件 Spark Streaming 即可。

可以看出,如果使用 MapReduce 作为大数据处理的引擎,我们可能需要维护好几个技术框架,但是如果选择使用 Spark 的话,那么我们只需要维护 Spark 这一套技术框架就可以,这样是可以节省更多的成本的。

所以说,现在在大数据处理领域,一般都会选择 Spark 作为处理计算引擎的,而不会再去使用 MapReduce 了。

Spark vs Flink

MapReduce 适合批处理任务,也就是说每天对一个大量的静态数据集进行一次处理,同样,Spark 也非常的适合批处理任务,但是 Spark 有一个子模块就是 Spark Streaming 用于实时数据流处理

Flink 同样适合对大数据进行批处理,也可以使用在实时数据流的处理中,那么 Spark 和 Flink 到底选择哪一个呢?

Spark 是以批处理起家的,它的内核就是以批处理的思想来设计实现的。Spark Streaming 虽然可以实时处理数据,但是它的本质还是批处理,只是批处理的时间间隔缩短,比如时间间隔设置成 1 秒,那也就是说每隔 1 秒钟发起一个批处理,所以严格来说 Spark Streaming 只能是近实时处理的技术,适合用于延迟是秒级别的实时计算应用。

Flink 是以实时流处理起家的,它的内核就是以实时流处理的思想来设计实现的。所以 Flink 的实时流处理才是真正意义上的实时处理,如果你的实时处理应用要求延迟非常低的话,那就是用 Flink 的实时流处理了。


Flink 也是支持批处理的,Flink 批处理是基于 Flink 的实时流处理来实现的,也就是说实时收集到的数据先不做处理,等收集了一段时间的数据后,再对这段时间收集的数据做全量的批处理。

批处理和实时流处理都是有各自的优缺点

  • 批处理:数据不能实时计算,但是批处理的逻辑可以非常的复杂

  • 实时流处理:数据可以实时计算,但是计算逻辑相对比较简单

所以,对于计算逻辑非常复杂的应用,建议使用 Spark,对于实时要求非常高的场景,建议使用 Flink 的实时流处理技术,如果实时要求不高的话,仍然可以选择使用 Spark Streaming

Flink 实时流处理技术在处理稍微复杂点的实时流处理场景 (比如各种窗口、状态等) 真的要比 Spark Streaming 要好用多了,谁用谁知道。

Spark 现在已经成为大数据处理领域中事实上的标准了

  • 它起步早于 Flink

  • 它的社区比 Flink 要活跃

  • 基于 Spark 的 SQL、机器学习等库要比 Flink 的稳定和好用

我们再看下 Spark 和 Flink 在 github 上的两个指标就知道谁被用的广泛了。

下图是 Spark 项目,它的 star 的数量是 27.2k,它的 Contributors 是 1616 个

 

下图是 Flink 项目,它的 star 的数量是 13.9k,它的 Contributors 是 736 个

 

如何学习?

对于一个新手而言,你可以:

  1. 先学习 MapReduce,你可以不要求非常的熟练 MapReduce 编程,但是要学好 MapReduce 解决分布式计算这个问题的设计思想,这个非常的重要

  2. 然后要学透 Spark,因为现在 Spark 的使用场景是非常普遍的。Spark 解决分布式计算的思想和 MapReduce 是类似的,对于 Spark,你需要会熟练的编程、掌握它的内核原理以及调优等。

  3. 最后就是花点时间学下 Flink,如果你 Spark 学的好的话,Flink 就很容易学的。

系统学习大数据技术:大数据高级工程师就业课程

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
上层应用业务对实时数据的需求,主要包含两部分内容:1、 整体数据的实时分析。2、 AB实验效果的实时监控。这几部分数据需求,都需要进行的下钻分析支持,我们希望能够建立统一的实时OLAP数据仓库,并提供一套安全、可靠的、灵活的实时数据服务。目前每日新增的曝光日志达到几亿条记录,再细拆到AB实验更细维度时,数据量则多达上百亿记录,多维数据组合下的聚合查询要求秒级响应时间,这样的数据量也给团队带来了不小的挑战。OLAP层的技术选型,需要满足以下几点:1:数据延迟在分钟级,查询响应时间在秒级2:标准SQL交互引擎,降低使用成本3:支持join操作,方便维度增加属性信息4:流量数据可以近似去重,但订单行要精准去重5:高吞吐,每分钟数据量在千W级记录,每天数百亿条新增记录6:前端业务较多,查询并发度不能太低通过对比开源的几款实时OLAP引擎,可以发现Doris和ClickHouse能够满足上面的需求,但是ClickHouse的并发度太低是个潜在的风险,而且ClickHouse的数据导入没有事务支持,无法实现exactly once语义,对标准SQL的支持也是有限的。所以针对以上需求Doris完全能解决我们的问题,DorisDB是一个性能非常高的分布式、面向交互式查询的分布式数据库,非常的强大,随着互联网发展,数据量会越来越大,实时查询需求也会要求越来越高,DorisDB人才需求也会越来越大,越早掌握DorisDB,以后就会有更大的机遇。本课程基于真实热门的互联网电商业务场景为案例讲解,具体分析指标包含:AB版本分析,下砖分析,营销分析,订单分析,终端分析等,能承载海量数据的实时分析,数据分析涵盖全端(PC、移动、小程序)应用。整个课程,会带大家实践一个完整系统,大家可以根据自己的公司业务修改,既可以用到项目中去,价值是非常高的。本课程包含的技术:开发工具为:IDEA、WebStormFlink1.9.0DorisDBHadoop2.7.5Hbase2.2.6Kafka2.1.0Hive2.2.0HDFS、MapReduceFlume、ZookeeperBinlog、Canal、MySQLSpringBoot2.0.8.RELEASESpringCloud Finchley.SR2Vue.js、Nodejs、Highcharts、ElementUILinux Shell编程等课程亮点:1.与企业接轨、真实工业界产品2.DorisDB高性能分布式数据库3.大数据热门技术Flink4.支持ABtest版本实时监控分析5.支持下砖分析6.数据分析涵盖全端(PC、移动、小程序)应用7.主流微服务后端系统8.天级别与小时级别多时间方位分析9.数据库实时同步解决方案10.涵盖主流前端技术VUE+jQuery+Ajax+NodeJS+ElementUI11.集成SpringCloud实现统一整合方案12.互联网大数据企业热门技术栈13.支持海量数据的实时分析14.支持全端实时数据分析15.全程代码实操,提供全部代码和资料16.提供答疑和提供企业技术方案咨询企业一线架构师讲授,代码在老师的指导下企业可以复用,提供企业解决方案。  版权归作者所有,盗版将进行法律维权。 
课程总体架构请观看89讲。数据仓库是一个面向主题的、集成的、随时间变化的、但信息本身相对稳定的数据集合,用于对管理决策过程的支持。数据仓库的应用有:1.数据分析、数据挖掘、人工智能、机器学习、风险控制、无人驾驶。2.数据化运营、精准运营。3.广告精准、智能投放等等。数据仓库是伴随着企业信息化发展起来的,在企业信息化的过程中,随着信息化工具的升级和新工具的应用,数据量变的越来越大,数据格式越来越多,决策要求越来越苛刻,数据仓库技术也在不停的发展。数据仓库有两个环节:数据仓库的构建与数据仓库的应用。随着IT技术走向互联网、移动化,数据源变得越来越丰富,在原来业  务数据库的基础上出现了非结构化数据,比如网站log,IoT设备数据,APP埋点数据等,这些数据量比以往结构化的数据大了几个量级,对ETL过程、存储都提出了更高的要求。互联网的在线特性也将业务需求推向了实时化 ,随时根据当前客户行为而调整策略变得越来越常见,比如大促过程中库存管理,运营管理等(即既有中远期策略型,也有短期操作型)。同时公司业务互联网化之后导致同时服务的客户剧增,有些情况人工难以完全处理,这就需要机器 自动决策 。比如欺诈检测和用户审核。总结来看,对数据仓库的需求可以抽象成两方面: 实时产生结果、处理和保存大量异构数据。本课程基于真实热门的互联网电商业务场景为案例讲解,结合分层理论和实战对数仓设计进行详尽的讲解,基于Flink+DorisDB实现真正的实时数仓,数据来及分析,实时报表应用。具体数仓报表应用指标包括:实时大屏分析、流量分析、订单分析、商品分析、商家分析等,数据涵盖全端(PC、移动、小程序)应用,与互联网企业大数据技术同步,让大家能够学到大数据企业级实时数据仓库的实战经验。本课程包含的技术: 开发工具为:IDEA、WebStorm Flink 1.11.3Hadoop 2.7.5Hive 2.2.0ZookeeperKafka 2.1.0、Spring boot 2.0.8.RELEASESpring Cloud Finchley.SR2Flume 、Hbase 2.2.6DorisDB 0.13.9、RedisVUE+jQuery+Ajax+NodeJS+ElementUI+Echarts+Datav等课程亮点: 1.与企业接轨、真实工业界产品2.DorisDB高性能分布式数据库3.大数据热门技术Flink最新版4.真正的实时数仓以及分层设计5.海量数据大屏实时报表6.数据分析涵盖全端(PC、移动、小程序)应用7.主流微服务后端系统8.数据库实时同步解决方案9.涵盖主流前端技术VUE+jQuery+Ajax+NodeJS+ElementUI+Echarts+Datav10.集成SpringCloud实现统一整合方案11.互联网大数据企业热门技术栈12.支持海量数据的实时数仓报表分析13.支持全端实时实时数仓报表分析14.全程代码实操,提供全部代码和资料 15.提供答疑和提供企业技术方案咨询企业一线架构师讲授,代码在老师的指导下企业可以复用,提供企业解决方案。  版权归作者所有,盗版将进行法律维权。 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值