Spark快速入门


前言

在学习大数据组件中,Spark是一个非常重要的部分,但由于项目因素,没有对Spark进行使用过,Spark在机器学习算法以及后端开发中都有比较多的应用,这里对Spark进行一些总结。

一、Spark概述

1.1 Spark是什么

Spark是一种基于内存的快速、通用、可扩展的大数据分析计算引擎。

1.2 Spark和Hadoop

Hadoop
Hadoop 是由 java 语言编写的,在分布式服务器集群上存储海量数据并运行分布式
分析应用的开源框架

作为 Hadoop 分布式文件系统,HDFS 处于 Hadoop 生态圈的最下层,存储着所有的 数 据 ,支持着Hadoop 的 所 有 服 务 。它 的 理 论 基 础 源 于 Google 的TheGoogleFileSystem 这篇论文,它是 GFS 的开源实现。

MapReduce 是一种编程模型,Hadoop 根据 Google 的 MapReduce 论文将其实现,作为Hadoop 的分布式计算模型,是 Hadoop 的核心。基于这个框架,分布式并行程序的编写变得异常简单。综合了 HDFS 的分布式存储和 MapReduce 的分布式计算,Hadoop 在处理海量数据时,性能横向扩展变得非常容易。

HBase 是对 Google 的 Bigtable 的开源实现,但又和 Bigtable 存在许多不同之处。HBase 是一个基于 HDFS 的分布式数据库,擅长实时地随机读/写超大规模数据集。它也是 Hadoop 非常重要的组件。

Spark
Spark 是一种由 Scala 语言开发的快速、通用、可扩展的大数据分析引擎
Spark Core 中提供了 Spark 最基础与最核心的功能
Spark SQL 是 Spark 用来操作结构化数据的组件。通过 Spark SQL,用户可以使用SQL 或者 Apache Hive 版本的 SQL 方言(HQL)来查询数据。
Spark Streaming 是 Spark 平台上针对实时数据进行流式计算的组件,提供了丰富的处理数据流的 API。
由上面的信息可以获知,Spark 出现的时间相对较晚,并且主要功能主要是用于数据计算,所以其实 Spark 一直被认为是 Hadoop 框架的升级版。

1.3 Spark和MR

Hadoop 的 MR 框架和 Spark 框架都是数据处理框架,那么我们在使用时如何选择呢?
Hadoop 的 MR 框架设计的初衷是一次性数据计算,所谓的一次性数据计算,就是框架在处理的时候,会从存储设备中读取数据,进行逻辑操作,然后将处理的结果重新存储到介质中。
而Spark框架把数据处理的中间结果放入内存中,为下一次的计算提供了便利。
Hadoop MapReduce 由于其设计初衷并不是为了满足循环迭代式数据流处理,因此在多并行运行的数据可复用场景(如:机器学习、图挖掘算法、交互式数据挖掘算法)中存在诸多计算效率等问题。所以 Spark 应运而生,Spark就是在传统的MapReduce计算框架的基础上,利用其计算过程的优化,从而大大加快了数据分析、挖掘的运行和读写速度,并将计算单元缩小到更适合并行计算和重复使用的 RDD 计算模型
Spark 是一个分布式数据快速分析项目。它的核心技术是弹性分布式数据集(Resilient Distributed Datasets),提供了比 MapReduce 丰富的模型,可以快速在内存中对数据集进行多次迭代,来支持复杂的数据挖掘算法和图形计算算法
Spark 和 Hadoop 的根本差异是多个作业之间的数据通信问题 : Spark 多个作业之间数据通信是基于内存,而 Hadoop 是基于磁盘。
Spark Task 的启动时间快。Spark 采用 fork 线程的方式,而 Hadoop 采用创建新的进程的方式。
Spark 只有在 shuffle 的时候将数据写入磁盘,而 Hadoop 中多个 MR 作业之间的数据交互都要依赖于磁盘交互。
Spark 的缓存机制比 HDFS 的缓存机制高效
经过上面的比较,我们可以看出在绝大多数的数据计算场景中,Spark 确实会比 MapReduce更有优势。但是 Spark 是基于内存的,所以在实际的生产环境中,由于内存的限制,可能会由于内存资源不够导致 Job 执行失败。此时, MapReduce 其实是一个更好的选择,所以 Spark并不能完全替代 MR。

二、Spark核心模块

1.Spark Core

Spark Core 中提供了 Spark 最基础与最核心的功能,Spark 其他的功能如:Spark SQL,Spark Streaming,GraphX,MLlib 都是在 Spark Core 的基础上进行扩展的

2.Spark SQL

Spark SQL 是 Spark 用来操作结构化数据的组件。通过 Spark SQL,用户可以使用 SQL或者 Apache Hive 版本的 SQL 方言(HQL)来查询数据。

3.Spark Streaming

Spark Streaming 是 Spark 平台上针对实时数据进行流式计算的组件,提供了丰富的处理数据流的 API。

4.Spark MLlib

MLlib 是 Spark 提供的一个机器学习算法库。MLlib 不仅提供了模型评估、数据导入等额外的功能,还提供了一些更底层的机器学习原语。

5.Spark GraphX

GraphX 是 Spark 面向图计算提供的框架与算法库。

总结

Spark是一个重要的流式处理组件,在许多大数据场景中都有比较好的应用。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spark 官方文档是学习 Spark 的重要参考资料之一,可以帮助你快速入门。以下是 Spark 官方文档中的 Spark 快速入门部分的内容: 1. 安装 Spark 首先,你需要在机器上安装 SparkSpark 支持多种安装方式,包括使用包管理器进行安装,从 Spark 官网下载二进制包等。在安装完成后,你需要设置环境变量,以便能够在命令行中使用 Spark。 2. 运行 Spark Shell Spark Shell 是 Spark 提供的一个交互式 Shell,可以通过命令行与 Spark 进行交互。你可以使用以下命令启动 Spark Shell: ``` ./bin/spark-shell ``` 3. Spark 上的第一个应用程序 在 Spark Shell 中,你可以编写 Spark 应用程序,并直接在 Shell 中运行。下面是一个简单的 Spark 应用程序,它读取一个文本文件并计算每个单词出现的次数: ``` val textFile = sc.textFile("hdfs://...") val counts = textFile.flatMap(line => line.split(" ")) .map(word => (word, 1)) .reduceByKey(_ + _) counts.saveAsTextFile("hdfs://...") ``` 在这个应用程序中,我们使用了 Spark 的核心概念,包括 RDD、flatMap、map 和 reduceByKey。通过运行这个应用程序,你可以学习到 Spark 的基本操作方式。 4. Spark 应用程序的打包和部署 当你编写了一个 Spark 应用程序后,你需要将其打包成 JAR 文件,并在集群中运行。你可以使用 Maven、SBT 或其他构建工具来打包 Spark 应用程序。一旦打包完成,你可以使用以下命令在集群中运行应用程序: ``` ./bin/spark-submit --class com.example.MyApp --master spark://host:port myApp.jar ``` 以上就是 Spark 官方文档中的 Spark 快速入门部分的内容。希望能够对你学习 Spark 有所帮助。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值