初识 Spark - 7000字+15张图解,学习 Spark 入门基础知识

欢迎关注「数人之道」公众号

获取更多数据知识、干货、资讯!

延伸阅读:

初识 Spark | 带你理解 Spark 中的核心抽象概念:RDDSpark RDD 的概念、操作、依赖关系https://mp.weixin.qq.com/s?__biz=MzkwNTI4MDEzOQ==&mid=2247485795&idx=1&sn=5ec304fde1d31f6e269d8ddcb07e8c1c&chksm=c0fb6687f78cef91bd2b81fb5602ecbf3b232f7872d5c539f98c797db5c1ea977f957332cd81&token=532517368&lang=zh_CN#rd

Spark 是 UC Berkeley AMP Lab 开源的通用分布式并行计算框架,目前已成为 Apache 软件基金会的顶级开源项目。

基于以下原因,Spark 已经成为数据行业从业者(尤其是大数据领域)绕不开的必学技术栈中的一员:

  • Spark 已经成为大数据领域中必备的计算引擎框架
  • Spark 已经基本替代了传统的 MapReduce 离线计算框架和 Storm 流式实时计算框架
  • Spark 正在数据科学、机器学习及 AI 等热门技术方向持续发力

下面对 Spark 的特性、对比 Hadoop 的优势、组成模块及运行原理等基础知识进行学习。

1.Spark 的特性

图1:Apache 官网描述的 Spark 特性

Apache 在改版后的 Spark 官网中用了四个单词描述 Spark 的特性:Simple. Fast. Scalable. Unified.

1.1.Simple(简单易用)

Spark 提供了丰富的高级运算操作,支持丰富的算子,并支持 Java、Python、Scala、R、SQL 等语言的 API,使用户可以快速构建不同的应用。

开发人员只需调用 Spark 封装好的 API 来实现即可,无需关注 Spark 的底层架构。

1.2.Fast(高效快速)

Spark 将处理的每个任务都构造成一个DAG(Directed Acyclic Graph, 有向无环图)来执行,实现原理是基于RDD(Resilient Distributed Dataset, 弹性分布式数据集)在内存中对数据进行迭代计算,以实现批量和流式数据的高性能快速计算处理。

之前的官方数据表明:如果计算数据是从磁盘中读取,Spark 计算速度是 MapReduce 的 10 倍以上;如果计算数据是从内存中读取,Spark 计算速度则是 MapReduce 的 100 倍以上。

目前的官网已经撤下这一数据,估计是统计的场景和数据存在偏颇,不够全面。但这也从侧面说明,Spark 拥有出色的计算性能已经是深入人心的不争事实,无需再用数据来佐证。

1.3.Scalable(可融合性)

Spark 可以非常方便地与其他的开源产品进行融合。比如:Spark 可以使用 Hadoop 的 YARN 和 Apache Mesos 作为它的资源管理和调度器;可以处理所有 Hadoop 支持的数据,包括 HDFS、HBase 和 Cassandra 等。

这对于已经部署 Hadoop 集群的用户特别重要,因为不需要做任何数据迁移就可以使用 Spark 强大的计算处理能力。

Spark 也可以不依赖于第三方的资源管理和调度器,它实现了 Standalone 作为其内置的资源管理和调度框架,这样进一步降低了 Spark 的使用门槛。

用户可以根据现有的大数据平台灵活地选择运行模式,使得所有人都可以非常容易地部署和使用 Spark。

Spark 还提供了在 EC2 上部署 Standalone 的 Spark 集群的工具。

此外,由于 Spark 是使用 Scala 这种函数式编程语言开发的,因此 Spark 也继承了 Scala 的可扩展性,可对类型数据结构、控制体结构等进行自定义的扩展。

1.4.Unified(统一通用)

大数据处理的传统方案需要维护多个平台,比如,离线任务是放在 Hadoop MapRedue 上运行,实时流计算任务是放在 Storm 上运行。

而Spark 提供了一站式的统一解决方案,可用于批处理、交互式查询(Spark SQL)、实时流处理(Spark Streaming)、机器学习(Spark MLlib)和图计算(GraphX)等。这些不同类型的处理都可以在同一个应用中无缝组合使用。

Spark 统一的解决方案非常具有吸引力,毕竟任何公司都想用统一的平台去处理遇到的问题,减少开发和维护的人力成本和部署平台的物理成本。

2.Spark 的优势

这里说的 Spark 的优势,是对比 Hadoop 的 MapReduce 而言,因此,我们需要先看看 MapReduce 的局限与不足&#

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Spark是一个开源的分布式计算框架,可以用于大规模数据处理。Spark的核心是Spark Core,它提供了分布式任务调度、内存计算和数据管理等功能。Spark支持多种编程语言,包括Java、Scala和Python等。Spark的离线计算能力非常强大,可以处理大规模的数据集,支持复杂的数据处理和分析任务。初学者可以通过学习Spark的基本概念和API,逐步掌握Spark的使用方法。 ### 回答2: Spark是一种开源的、面向大数据处理的计算引擎,可以在分布式集群上进行高效的离线计算和实时流处理。Spark的主要特点是速度快、易于使用、灵活性高,并且支持多种编程语言和多种数据源。 Spark的分布式计算是基于RDD(Resilient Distributed Dataset)的计算模型实现的。RDD是一种抽象的数据集合,像一个分布式的、可容错的内存数据结构,提供了数据的高度并行性和容错性。Spark的计算模型是基于RDD进行的,可以将数据集和计算操作分布式存储和处理,从而实现高性能的计算。 Spark的核心组件是Spark Core,它提供了RDD的编程接口和执行引擎。Spark Core是整个Spark体系中最基础的模块,包括了RDD的构建、转换和动作等一系列基本操作,同时也提供了类似于MapReduce的分布式计算框架。 在离线计算中,Spark Core可以支持各种类型的数据,包括结构化数据、半结构化数据和非结构化数据。离线计算是指对离线数据进行批量处理,通常是通过Spark Core提供的Transformations和Actions函数处理RDD,完成一些统计、聚合、筛选等操作,最终输出结果数据。 初识Spark是从安装Spark开始入手,需要准备好Java或Scala的开发环境,并下载安装Spark的相关包。安装完成后,可以通过Spark Shell或者Spark的代码进行操作,从而熟悉Spark的RDD编程模型和离线计算的常用函数,最终可以完成对数据的处理和分析。 总之,初识Spark需要从Spark的分布式计算模型开始入手,了解Spark的基础组件Spark Core和RDD,掌握离线计算的基本函数和操作方法,从而熟悉Spark的使用和应用。 ### 回答3: Spark是由加州大学伯克利分校AMPLab所开发的一个分布式计算框架。Spark被设计成一种通用的、高性能的计算引擎,能够用于大规模数据处理,包括离线处理和实时流处理。Spark具有高容错性和支持多个数据源。Spark中的一些主要组件包括Spark SQL、Spark Streaming、MLlib、GraphX等。 Spark在离线计算中的主要作用是加速批处理任务的处理速度。Spark中的主要组件包括Spark Core和Spark SQL。其中,Spark Core是Spark的基础组件,是一个任务调度和分发引擎,提供了任务调度、内存管理、错误恢复等功能。Spark SQL是Spark提供的一个基于SQL的查询接口,可以与Spark Core进行集成,方便数据分析师使用。 初识Spark,需要掌握Spark的编程语言和运行环境。Spark支持多种编程语言,包括Scala、Java、Python和R。对于初学者来说,建议使用Scala作为开发语言,因为Spark是Scala语言编写的,同时Scala对Spark的支持也最全面。此外,还需要掌握Spark的运行环境,包括Spark集群的搭建、数据导入和输出、任务调度等内容。 在Spark学习过程中,需要掌握的关键技术包括数据类型、RDD编程模型、操作和算子、持久化和容错、调度器和任务划分等。需要注意的是,Spark的编程模型和Hadoop相似,但是Spark提供了更高级别的API和更便捷的操作方式,能够提高任务处理的效率。 总之,初识Spark需要从它的基础组件和编程语言入手,从实际案例中发现它在离线计算的应用场景中的优点,同时也需要掌握Spark在处理大规模数据时的关键技术,从而能够深入理解Spark的运行机制,提高离线数据分析处理的效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值