PySpark | Spark框架简述 | Spark环境搭建


传送门:


一.Spark框架简述

1.Spark是什么

  定义:Apache Spark是用于大规模数据(large-scala data)处理的统一(unified)分析引擎(数据处理分析引擎)。

RDD 是一种分布式内存抽象,其使得程序员能够在大规模集群中做内存运算,并且有一定的容错方式。而这也
是整个 Spark 的核心数据结构,Spark 整个平台都围绕着RDD进行。

在这里插入图片描述

"分而治之"的思想,对数据的处理与计算,都是进行分区,对数据进行分布式任务分配来完成大规模数据集的计算。
Spark 借鉴了 MapReduce 思想发展而来,保留了其分布式并行计算的优点并改进了其明显的缺陷,让中间数据存储在内存中提高了运行速度、并提供丰富的操作数据的API提高了开发速度。

  Spark是一款分布式内存计算的统一分析引擎。其特点就是对任意类型的数据进行自定义计算。Spark可以计算:结构化、半结构化、非结构化等各种类型的数据结构,同时也支持使用Python、Java、Scala、R以及SQL语言去开发应用程序计算数据。Spark的适用面非常广泛,所以,被称之为 统一的(适用面广)的分析引擎(数据处理)。

2.Spark与Hadoop的对比

  Spark与Hadoop技术栈的对比:
在这里插入图片描述

Spark解决什么问题? 海量数据的计算,可以进行离线批处理和实时流计算
注:
线程是CPU的基本调度单位
一个进程一般包含多个线程, 一个进程下的多个线程共享进程的资源
不同进程之间的线程相互不可见
线程不能独立执行
一个线程可以创建和撤销另外一个线程

尽管Spark相对于Hadoop而言具有较大优势,但Spark并不能完全替代Hadoop

  • 计算层面,Spark相比较MR(MapReduce)有巨大的性能优势,但至今仍有许多计算工具基于MR构架,比如非常成熟的Hive
  • Spark仅做计算,而Hadoop生态圈不仅有计算(MR)也有存储(HDFS)和资源管理调度(YARN),HDFS和YARN仍是许多大数据体系的核心架构。

Spark与Hadoop融合在一起,形成HDFS+YARN+Spark。仍然需要使用Hadoop中的存储(HDFS)和资源管理调度(YARN)。

3.Spark的四大特点
  1. 运行速度快
    由于Apache Spark支持内存计算,并且通过DAG(有向无环图)执行引擎支持无环数据流,所以官方宣称其在内存中的运算速度要比Hadoop的MapReduce快100倍,在硬盘中要快10倍。

    Spark处理数据与MapReduce处理数据相比,有如下两个不同点:

    • 其一、Spark处理数据时,可以将中间处理结果数据存储到内存中;
    • 其二、Spark 提供了非常丰富的算子(API), 可以做到复杂任务在一个Spark 程序中完成。
  2. 易于使用
    Spark支持了包括 Java、Scala、Python 、R和SQL语言在内的多种语言

  3. 通用性强
    在 Spark 的基础上,Spark 还提供了包括Spark SQL、Spark Streaming、MLib 及GraphX在内的多个工具库,我们可以在一个应用中无缝地使用这些工具库。
    在这里插入图片描述

    • Spark SQL模块:通过SQL语言来完成结构化数据处理
    • Spark Streaming模块:完成流式数据处理
    • MLib模块:完后机器学习的数据计算
    • GraphX模块:完成图计算
  4. 多种模式运行
    Spark 支持多种运行方式,包括在 Hadoop 和 Mesos 上,也支持 Standalone的独立运行模式,同时也可以运行在云Kubernetes——容器(Spark 2.3开始支持)上。对于数据源而言,Spark 支持从HDFS、HBase、Cassandra 及 Kafka 等多种途径获取数据。
    在这里插入图片描述

  • 文件系统: LocalFS、HDFS、Hive、text、parquet、orc、json、csv
  • 数据库RDBMs: mysql、Orade、mssql
  • NOSQL数据库:HBase、ES、Redisiv
  • 消息对象:Kafka
4.Spark框架模块

  整个Spark 框架模块包含: SparkCore、Spark SQL、SparkStreaming、Spark GraphX、Spark MLlib,而后四项的能力都是建立在核心引擎之上。

  • Spark Core:Spark的核心,Spark核心功能均由Spark Core模块提供,是Spark运行的基础。Spark Core以RDD为数据抽象,提供Python、Java、Scala、R语言的API,可以编程进行海量离线数据批处理计算。
  • SparkSQL:基于SparkCore之上,提供结构化数据的处理模块。SparkSQL支持以SQL语言对数据进行处理,SparhSQL本身针对离线计算场景。同时基于SparkSQL,Spark提供了StructuredStreaming模块,可以以SparkSQL为基础,进行数据的流式计算。
  • SparkStreaming:以SparkCore为基础,提供数据的流式计算功能。
  • MLlib:以SparkCore为基础,进行机器学习计算,内置了大量的机器学习库和API算法等。方便用户以分布式计算的模式进行机器学习计算。
  • GraphX:以SparkCore为基础,进行图计算,提供了大量的图计算API,方便用于以分布式计算模式进行图计算。
5.Spark运行模式

  Spark提供多种运行模式,包括:本地模式、集群模式和云模式

  • 本地模式(单机)=> Local:用于开发和测试,下面的几个模式用于生产环境
    本地模式就是以一个独立的进程,通过其内部的多个线程来模拟整个Spark运行时环境
  • Standalone模式(集群)
    Spark中的各个角色以独立进程的形式存在,并组成Spark集群环境
  • Hadoop YARN模式(集群)
    Spark中的各个角色运行在YARN的容器内部,并组成Spark集群环境
  • Kubernetes模式(容器集群)
    Spark中的各个角色运行在Kubernetes的容器内部,并组成Spark集群环境
  • 云服务模式(运行在云平台上)
    提供EMR框架(弹性MapReduce)
6.Spark的架构角色

在这里插入图片描述

在这里插入图片描述
注:正常情况下Executor是干活的角色,不过在特殊场景下(Local模式)Driver可以即管理又干活

二、Spark环境搭建

1.服务器环境

  使用三台Linux虚拟机服务器来学习,三台虚拟机的功能分别是:

  • node1: Master(HDFS\YARN\Spark) 和 Worker(HDFS\ YARN\ Spark)
  • node2: Worker(HDFS\ YARN\ Spark)
  • node3: Worker(HDFS\ YARN\ Spark) 和 Hive

我使用的是课程中提供的虚拟机,没有自己搭建
课程资料中提供了3台虚拟机的压缩包, 同学们解压后导入VMWare即可
在这里插入图片描述
软件存放在/export/software
组件安装存放/export/server/

2.Local模式基本原理

  本质:启动一个JVM Process进程(一个进程里面有多个线程),执行任务Task。简单来讲,Local模式就是以一个独立进程配合其内部线程(每个线程模拟一个Spark服务器)来提供完成Spark运行时环境.。Local模式可以通过spark-shell/pyspark/spark-submit等来开启。

  • Local模式可以限制模拟Spark集群环境的线程数量, 即Local[N] 或 Local[*]
  • 其中N代表可以使用N个线程,每个线程拥有一个cpu core。如果不指定N,则默认是1个线程(该线程有1个core)。 通常Cpu有几个Core,就指定几个线程,最大化利用计算能力。
  • 如果是local[*],则代表按照Cpu最多的Cores设置线程数。

Local下的角色分布

  • 资源管理:
    Master:Local进程本身
    Worker:Local进程本身
  • 任务执行:
    Driver:Local进程本身
    Executor:不存在,没有独立的Executor角色, 由Local进程(也就是Driver)内的线程提供计算能力

Driver也算一种特殊的Executor, 只不过多数时候, 我们将Executor当做纯Worker对待, 这样和Driver好区分(一类是管理 一类是工人)
注意: Local模式只能运行一个Spark程序, 如果执行多个Spark程序, 那就是由多个相互独立的Local进程在执行
在这里插入图片描述

3.安装包下载
  • anaconda3

    //安装文件夹
    /root/anaconda3
    

    在这里插入图片描述
    每个虚拟机中有两个虚拟环境,pyspark_env可供课程使用

4.基础操作
  • 解压spark文件并建立软链接
    在这里插入图片描述在这里插入图片描述
  • 配置spark环境变量,

    配置Spark由如下5个环境变量需要设置,这5个环境变量 都需要配置在: /etc/profile

    • SPARK_HOME: 表示Spark安装路径在哪里
    • PYSPARK_PYTHON: 表示Spark想运行Python程序, 那么去哪里找python执行器
    • JAVA_HOME: 告知Spark Java在哪里
    • HADOOP_CONF_DIR: 告知Spark Hadoop的配置文件在哪里
    • HADOOP_HOME: 告知Spark Hadoop安装在哪里
      在这里插入图片描述

    PYSPARK_PYTHON和 JAVA_HOME 需要同样配置在: /root/.bashrc
    在这里插入图片描述

5.测试

  spark中代码展示如下:
在这里插入图片描述
bin/pyspark:利用bin目录下的pyspark来进行测试

bin/pyspark 程序, 可以提供一个 交互式的 Python解释器环境, 在这里面可以写普通python代码让spark执行

在这里插入图片描述
ctrl+d退出

这一步碰到一个错误:开启hadoop集群后,可以正常使用了

WEB UI (4040):
  Spark的任务在运行后,会在Driver所在机器绑定到4040端口,提供当前任务的监控页面供查看。如果4040端口被占用, 会顺延到4041 … 4042…
输入:服务器ip:4040 即可打开:
在这里插入图片描述

打开监控页面后, 可以发现 在程序内仅有一个Driver。因为我们是Local模式, Driver即管理 又干活。

spark-submit
  利用bin目录下的spark-submit来提交写好的代码到spark集群中运行
在这里插入图片描述
在这里插入图片描述
总结:pyspark/spark-shell/spark-submit 对比
在这里插入图片描述

三、Standalone环境搭建

1.Standalone 架构

  Standalone模式是Spark自带的一种集群模式,Standalone模式是真实地在多个机器之间搭建Spark集群的环境,完全可以利用该模式搭建多机器集群,用于实际的大数据处理。StandAlone 是完整的Spark运行环境,其中:

    • 5
      点赞
    • 21
      收藏
      觉得还不错? 一键收藏
    • 打赏
      打赏
    • 1
      评论

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

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

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包

    打赏作者

    幼稚的人呐

    你的鼓励将是我创作的最大动力

    ¥1 ¥2 ¥4 ¥6 ¥10 ¥20
    扫码支付:¥1
    获取中
    扫码支付

    您的余额不足,请更换扫码支付或充值

    打赏作者

    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

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

    余额充值