重生之从零开始学习大数据之Spark篇(一)

这篇具有很好参考价值的文章主要介绍了重生之从零开始学习大数据之Spark篇(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

什么是spark?

重生之从零开始学习大数据之Spark篇(一),大数据,学习,spark

spark是一个用来实现快速,通用的集群计算平台,它基于Hadoop的MapReduce分布式框架优化并改进缺陷而形成的。

在速度方面,Spark扩展了广泛使用的MapReduce计算模型,而且高效地支持更多计算模式,包括交互式查询和流处理。在处理大规模数据集事,速度是非常重要的。速度就以为这我们可以进行交互式的数据操作,否则我们每次操作就需要等待数分钟甚至数小时。Spark的一个主要特征就是能够在内存中计算,因而更快。不过即便是必须在磁盘上进行复杂计算,也比MapReduce更加高效。

Spark所提供的接口非常丰富。除了提供基与Python,Java、Scala和SQL的简单易用的API以及内建的丰富程序库以外,spark还能和其他大数据工具密切配合使用。

spark适用于各种各样原先需要多种不同的分布式平台的场景,包括批处理,迭代算法,交互式查询,流处理。通过在一个统一的框架下支持这些不同的计算,spark使我们可以简单而低耗地把各种处理流程整合在一起。

总的来说,Spark使用各种各样原先需要多种不同的分布式平台的场景,包括批处理、迭代算法、交互式查询、流处理。通过在一个统一的框架下支持这些不同的计算,Spark使我们可以简单而低耗地把各种处理流程整合在一起。。而这样的组合,在实际的数据分析过程中很有意义。不仅如此,Spark的这种特性还大大减轻了原先需要对各种平台分别管理的负担。

Spark发展史

重生之从零开始学习大数据之Spark篇(一),大数据,学习,spark

Spark 是由一个强大而活跃的开源社区开发和维护的,社区中的开发者们来自许许多多不 同的机构。如果你或者你所在的机构是第一次尝试使用
Spark,也许你会对 Spark 这个项 目的历史感兴趣。Spark 是于 2009 年作为一个研究项目在加州大学伯克利分校 RAD 实验
室(AMPLab 的前身)诞生。实验室中的一些研究人员曾经用过 Hadoop MapReduce。他 们发现 MapReduce
在迭代计算和交互计算的任务上表现得效率低下。因此,Spark 从一开
始就是为交互式查询和迭代算法设计的,同时还支持内存式存储和高效的容错机制。 2009 年,关于 Spark 的研究论文在学术会议上发表,同年
Spark 项目正式诞生。其后不久, 相比于 MapReduce,Spark 在某些任务上已经获得了 10 ~ 20 倍的性能提升。
2011 年,AMPLab 开始基于 Spark 开发更高层的组件,比如 Shark(Spark 上的 Hive)1 和 Spark
Streaming。这些组件和其他一些组件一起被称为伯克利数据分析工具栈(BDAS,
https://amplab.cs.berkeley.edu/software/)。 Spark 最早在 2010 年 3 月开源,并且在
2013 年 6 月交给了 Apache 基金会,现在已经成了 Apache 开源基金会的顶级项目。

spark生态圈

重生之从零开始学习大数据之Spark篇(一),大数据,学习,spark

Spark和MapReduce对比?

Spark与Hadoop区别

hadoop spark
类型 基础平台,包含计算,存储,调度 纯计算工具(分布式)
场景 海量数据批处理(磁盘迭代计算) 海量数据的批处理(内存迭代计算,交互式计算),海量数据流计算,机器学习,图计算
价格 对机器要求低,便宜 对内存有要求,相对较贵
编程范式 MapReduce,API较为底层,算法适应性差 RDD组成DAG有向无环图,API较为顶层,方便使用
数据存储结构 MapReduce中间计算结果在HDFS磁盘上,延迟大 RDD中间运算结果在内存中,延迟小

 spark 将数据存储在内存中进行计算;MapReduce 将数据存储在磁盘上。

 由于内存访问速度更快,spark 在处理迭代计算和交互式查询等工作负载时通常比 MapReduce 更高效。

Spark 基于内存的计算:

        Spark中我们有一种优化策略:移动计算、不移动数据。旨在减少数据传输的开销,提高计算效率。其核心思想是将计算任务尽可能的放在数据所在的节点上执行,而不是将数据传输到计算节点。具体来说,包括下面两个方面:

1. 数据本地性:

        Spark 会尽量将计算任务分配到存储有数据的节点上,以利用数据的本地性。这样可以减少数据传输的开销。通过在数据所在节点上执行计算任务,可以避免将数据传输到其他节点,从而提高计算性能。

2. 任务调度:

        Spark 不会移动实际的数据。数据仍然保留在存储节点上,只有计算任务被分发到存储数据的节点上执行。

一、内存计算

MapReduce基于磁盘的计算:

1. 数据读取:

        输入数据从磁盘读取到内存中进行处理。也就是说,每次需要处理数据时,都需要从磁盘读取相应的数据块到内存中进行计算操作。

2. 中间结果存储:

        MapReduce 框架会将 Map 和 Reduce 阶段的中间结果存储在磁盘上。在 Map 阶段,将 Map 任务的输出写入磁盘中的临时文件。在 Reduce 阶段,Reduce 任务会从磁盘上读取中间结果,并根据键值对进行合并和排序。

3. 数据持久性:

        将数据存储在持久化的磁盘介质上,及时在节点故障或计算过程中断的情况下,数据也能够持久保存。这样可以确保数据的可靠性和容错性。

二、执行速度

        Spark 的内存计算特性 和 基于DAG有向无环图 的执行模型,通常比 MapReduce 更快。Spark可以在内存中保留数据和计算结果,并通过多个任务合并为更少的阶段来减少磁盘的读写开销。

三、API 和编程模型

   Spark提供了丰富的API,包括 scala、Java、Python等。开发起来更加灵活、表达能力更强。而 MapReduce 使用 Java 编程语言来编写 Map 和 Reduce 函数,需要手动编写更多的代码来实现处理逻辑。

四、扩展性

   Spark 有更好的扩展性,可以方便的与其他数据处理框架和工具集成。如:Spark Streaming用于流处理、Spark SQL 用于查询和结构化数据处理、Spark MLlib用于机器学习等。

五、容错性

Spark提供了弹性式分布数据集RDD,具有自动容错和数据恢复机制。能够在节点故障时重新计算

丢失的数据。

MapReduce 需要在每个任务的开始和结束时将数据写入磁盘,因此在故障情况下需要重新启动整个计算。

什么是容错性?
        容错性是指系统在面对故障、错误或者异常情况时能够保持正常运行,并能够从故障中恢复或继续进行操作的能力。数据在处理中,由于数据规模庞大、且分布在多个计算节点上,节点故障可能导致任务中断或数据丢失
 

Spark框架  

重生之从零开始学习大数据之Spark篇(一),大数据,学习,spark

Spark是一个快速、通用的大数据处理框架,它提供了高效的数据处理和分析能力。以下是Spark框架的一些重要特点和组件:

1. 高性能:Spark使用内存计算技术,将数据存储在内存中进行处理,因此比传统的磁盘存储方式更快速。同时,Spark还支持并行计算,可以将任务分解为多个子任务并行执行,提高了处理速度。

2. 弹性分布式数据集(RDD):RDD是Spark的核心数据抽象,它是一个可分区、可并行计算的数据集合。RDD可以在内存中缓存数据,并支持容错机制,可以在节点故障时自动恢复数据。

3. Spark SQL:Spark SQL是Spark提供的用于处理结构化数据的模块。它支持SQL查询、DataFrame和DataSet API,可以方便地进行数据分析和处理。

4. Spark Streaming:Spark Streaming是Spark提供的流式数据处理模块。它可以实时接收和处理数据流,并支持常见的流式处理操作,如窗口操作、滑动窗口等。

5. MLlib:MLlib是Spark提供的机器学习库,包含了常见的机器学习算法和工具,可以用于构建和训练机器学习模型。

6. GraphX:GraphX是Spark提供的图计算库,用于处理大规模图数据。它提供了图的构建、遍历和计算等功能,可以用于社交网络分析、推荐系统等领域。

7. Spark应用程序:Spark提供了丰富的API和开发工具,可以使用Java、Scala、Python等多种编程语言进行开发。同时,Spark还支持与Hadoop生态系统的集成,可以与HDFS、Hive、HBase等组件无缝配合使用。

 

数据结构

1.什么是结构化数据?

结构化数据是高度组织和整齐格式化的数据,是一种可以放入表格和电子表格中的数据类型。不仅仅人们更容易搜索和使用它,计算机也能够更加轻松的搜索它。
典型的结构化数据包括:信用卡号码、日期、财务金额、电话号码、地址、产品名称等。

有行有列

2.什么是非结构化数据?

非结构化数据本质上是结构化数据之外的一切数据。非结构化数据不是那么容易组织或格式化的。收集,处理和分析非结构化数据也是一项重大挑战。非结构化数据与结构化数据是计算机信息化系统中的两种数据形式,非结构化数据是指那些结构不规则、不完整、没有预定义数据模型、不方便用二维逻辑表现的数据,常见形式为文档、文本、图片、音频、视频、报表、XML、HTML等。

典型的非结构化数据包括:

1.文本文件:文字处理、电子表格、演示文稿、电子邮件、日志。
2.电子邮件:电子邮件由于其元数据而具有一些内部结构,我们有时将其称为半结构化。但是,消息字段是非结构化的,传统的分析工具无法解析它。
3.社交媒体:来自新浪微博、微信、QQ、Facebook,Twitter,LinkedIn等平台的数据。
4.网站: YouTube,Instagram,照片共享网站。
5.移动数据:短信、位置等。
6.通讯:聊天、即时消息、电话录音、协作软件等。
7.媒体:MP3、数码照片、音频文件、视频文件。
8.业务应用程序:MS Office文档、生产力应用程序。
9卫星图像:天气数据、地形、军事活动。
10.科学数据:石油和天然气勘探、空间勘探、地震图像、大气数据。
11.数字监控:监控照片和视频。
12.传感器数据:交通、天气、海洋传感器。

3. 结构化数据与非结构化数据有何区别

除了存储在关系数据库和存储非关系数据库之外的明显区别之外,最大的区别在于分析结构化数据与非结构化数据的便利性。

spark运行结构

Spark框架的核心是一个计算引擎,整体来说,它采用了标准的master-slave的结构
图所示:展示了一个Spark执行时的基本架构,图中的Driver表示master,负责管理整个集群中的作业任务调度。图中的Executor则是slave,负责实际执行任务。

重生之从零开始学习大数据之Spark篇(一),大数据,学习,spark

Spark运行架构由三个主要组件组成:Driver节点、Cluster Manager和Executor节点。

Driver节点是应用程序的入口点,它负责解析用户的应用程序代码,并将任务划分成一系列的任务(stage),以及在集群上为任务安排调度。Driver节点负责管理各个任务之间的依赖关系,并将它们转换成一个可执行的物理执行计划(DAG)
Cluster Manager负责在集群中为应用程序分配资源。它可以是Standalone,YARN或Mesos等。
Executor节点负责在工作节点上执行任务。每个Executor都运行在自己的JVM进程中,并且为应用程序分配了一定数量的内存和CPU资源。Executor在运行过程中负责接收和执行任务。
 

spark架构主要由以下组件构成:

  • Application: 建立在 Spark上的用户程序,包括 Driver代码和运行在集群各节点 Executor中的代码
  • Driver program: 驱动程序, Application中的main函数并创建 SparkContext
  • Cluster Manager : 在集群(Standalone、Mesos、YARN)上获取资源的外部服务
  • Worker Node: 集群中任何可以运行 Application代码的节点
  • Executor : 某个 Application运行在 worker节点上的一个进程
  • Task: 被送到某个 Executor上的工作单元
  • Job : 包含多个 Task 组成的并行计算,往往由 Spark Action算子 触发生成,一个 Application中往往会产生多个 Job
  • Stage: 每个Job会被拆分成多组 Task,作为一个 TaskSet,其名称为 Stage
  • 在驱动程序中,通过SparkContext主导应用的执行
  • SparkContext可以连接不同类型的Cluster Manager(Standalone、YARN、Mesos),连接后,获得集群节点上的Executor
  • 一个Worker节点默认一个Executor,可通过SPARK_WORKER_INSTANCES调整
  • 每个应用获取自己的Executor
  • 每个Task处理一个RDD分区

spark运行的三种模式

重生之从零开始学习大数据之Spark篇(一),大数据,学习,spark

①Local(也称单节点模式):常用于开发和学习
./spark-shell - -master local[n] ,n代表线程数
②Standalone(集群模式)(应用较少)
独立模式,类似MapReduce 1.0所采取的模式,完全由内部实现容错性和资
源管理
③Spark on Yarn(两种模式集群模式) :Yarn Client 与 Yarn Cluster
3.1 Yarn Client:
Yarn Client:适用于交互与调试(应用较多)
交互:提供一个终端进行个调试->反馈一个结果(实时)
让Spark运行在一个通用的资源管理系统之上,这样可以与其他计算框架共享
资源
3.2 Yarn Cluster
Yarn Cluster:(集群)适用于生产环境(公司应用较多)
有哪些信息要输出要反馈都是输出到log日志文件中,只能查看log(后知后觉)

spark运行流程

Standalone模式运行流程

重生之从零开始学习大数据之Spark篇(一),大数据,学习,sparkyarn-cluster运行流程

重生之从零开始学习大数据之Spark篇(一),大数据,学习,sparkyarn-client运行流程

重生之从零开始学习大数据之Spark篇(一),大数据,学习,spark

后续内容持续更新中......关注我看我这一世如何夺回属于我的一切!文章来源地址https://www.toymoban.com/news/detail-837265.html

到了这里,关于重生之从零开始学习大数据之Spark篇(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spark大数据处理学习笔记(2.2)搭建Spark Standalone集群

    一、在master虚拟机上安装配置Spark 1.1 将spark安装包上传到master虚拟机 下载Spark:pyw2 进入/opt目录,查看上传的spark安装包 1.2 将spark安装包解压到指定目录 执行命令: tar -zxvf spark-3.3.2-bin-hadoop3.tgz 修改文件名:mv spark-3.3.2-bin-hadoop3 spark-3.3.2 1.3 配置spark环境变量 执行命令:vim

    2024年02月09日
    浏览(36)
  • 【大数据】Spark学习笔记

    Hadoop Spark 起源时间 2005 2009 起源地 MapReduce University of California Berkeley 数据处理引擎 Batch Batch 编程模型 MapReduce Resilient distributed Datesets 内存管理 Disk Based JVM Managed 延迟 高 中 吞吐量 中 高 优化机制 手动 手动 API Low level high level 流处理 NA Spark Streaming SQL支持 Hive, Impala SparkSQL Gra

    2024年02月03日
    浏览(30)
  • 军用大数据 - Spark机器学习

    本关任务:使用 pyspark ml 的LogisticRegression分类器完成 Iris 分类任务。 1:观察数据集 我们本次使用的数据集是sklearn自带的数据集Iris。 接下来,我们来了解下Iris数据集的数据吧! 示例代码: 打印结果: 简单来说明下数据集,我们第一个打印输出的结果集是Iris的特征,第二

    2024年02月05日
    浏览(30)
  • 学习Spark的数据生命周期管理技术

    数据生命周期管理是数据科学家和数据工程师在处理大规模数据时面临的重要挑战。Apache Spark是一个开源的大数据处理框架,它可以处理批量数据和流式数据,并提供了一个易用的API来进行数据处理和分析。在本文中,我们将探讨如何学习Spark的数据生命周期管理技术,以便

    2024年02月22日
    浏览(24)
  • 大数据笔记--Spark机器学习(第一篇)

    目录 一、数据挖掘与机器学习 1、概念 2、人工智能 3、数据挖掘体系 二、机器学习 1、什么是机器学习 2、机器学习的应用 3、实现机器学习算法的工具与技术框架 三、Spark MLlib介绍 1、简介 2、MLlib基本数据类型 Ⅰ、概述 Ⅱ、本地向量 Ⅲ、向量标签的使用 Ⅳ、本地矩阵 Ⅴ、

    2024年02月07日
    浏览(79)
  • 【大数据学习篇6】 Spark操作统计分析数据操作

    通过前面的文章安装好环境下面我们就可以开始来操作 使用MySQL的root用户对数据库进行修改以下设置

    2024年02月05日
    浏览(31)
  • 大数据学习06-Spark分布式集群部署

    配置好IP vim /etc/sysconfig/network-scripts/ifcfg-ens33 修改主机名 vi /etc/hostname 做好IP映射 vim /etc/hosts 关闭防火墙 systemctl status firewalld systemctl stop firewalld systemctl disable firewalld 配置SSH免密登录 ssh-keygen -t rsa 下载Scala安装包 配置环境变量 添加如下配置 使环境生效 验证 Spark官网 解压 上

    2024年02月10日
    浏览(46)
  • 【从零开始学习数据结构 | 第一篇】树

    目录 前言:  树: 树结点之间的关系描述:  树的常见属性: 森林: ​编辑树的性质: 总结: 当谈论数据结构时,树(Tree)是一种极为重要且常用的数据结构之一。树的概念源自现实生活中的树木,它具有分层结构,由 节点(Node) 和 边(Edge) 组成,形成了一种类似于

    2024年04月16日
    浏览(38)
  • 淘宝资源采集(从零开始学习淘宝数据爬取)

    1. 为什么要进行淘宝数据爬取? 淘宝数据爬取是指通过自动化程序从淘宝网站上获取数据的过程。这些数据可以包括商品信息、销售数据、评论等等。淘宝数据爬取可以帮助您了解市场趋势、优化您的产品选择以及提高销售额。 淘宝作为全球的电商平台,每天都有数以百万

    2024年02月14日
    浏览(44)
  • Spark大数据处理学习笔记(3.1)掌握RDD的创建

    文章目录 一、准备工作 1.1 准备文件 1.1.1 准备本地系统文件 在/home目录里创建test.txt 单词用空格分隔 1.1.2 启动HDFS服务 执行命令:start-dfs.sh 1.1.3 上传文件到HDFS 将test.txt上传到HDFS的/park目录里 查看文件内容 1.2 启动Spark Shell 1.2.1 启动Spark服务 执行命令:start-all.sh 1.2.2 启动Sp

    2024年02月09日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包