Spark学习笔记No.01(基础概念与部署配置)

1.Spark基础概念

1.1 Spark

Spark是用于大规模数据处理的统一分析引擎

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

Spark 借鉴了 MapReduce 思想发展而来,保留了其分布式并行计算的优点并改进了其明显的缺陷。让中间数据存储在内存中提高了运行速度、并提供丰富的操作数据的API提高了开发速度。

1.2 与hadoop相比的优势

在计算层面,Spark相比于Mapreduce有巨大的性能优势,Spark是在内存里迭代计算、交互计算,不仅可以对海量数据进行批处理,还可以实现海量数据流处理;而hadoop智能进行对海量数据批处理,而且是在磁盘里进行迭代计算。

hadoop以进程方式维护,spark以线程方式维护。基于线程的方式进行计算是为了数据共享和提高执行效率,Spark采用线程的最小执行单位,但是缺点是线程之间会有资源竞争。

1.3 Spark特点

速度快、易于使用、通用性强(包括多种工具库)、支持多重运行方式

为什么Spark速度快呢?

Spark支持内存计算,并且通过DAG(有向无环图)执行引擎支持无环数据流。

和MP处理数据相比,有两个不同点:

Spark处理数据时,可以将中间处理结果存储在内存中;Spark提供非常丰富的算子(API),可以做到复杂任务在一个Spark程序中完成。

1.4 Spark框架模块

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

1.4.1 Spark Core: Spark的核心, Spark核心功能均由Spark Core模块提供,是Spark运行的基础。 Spark Core以RDD为数据抽象,提供Python、 Java、Scala、 R语言的API,可以编程进行海量离线数据批处理计算。

1.4.2 SparkSQL:基于SparkCore之上,提供结构化数据的处理模块。 SparkSQL支持以SQL语言对数据进行处理, SparkSQL本身针对离线计算场景。同时基于SparkSQL, Spark提供了StructuredStreaming模块,可以以SparkSQL为基础,进行数据的流式计算。

1.4.3 SparkStreaming:以SparkCore为基础,提供数据的流式计算功能。

1.4.4 MLlib:以SparkCore为基础,进行机器学习计算,内置了大量的机器学习库和API算法等。方便用户以分布式计算的模式进行机器学习计算。

1.4.5 GraphX:以SparkCore为基础,进行图计算,提供了大量的图计算API,方便用于以分布式计算模式进行图计算。

1.5 Spark运行模式

1.5.1 本地模式(单机)

本地模式就是以一个独立的进程,通过其内部的多个线程来模拟整个Spark运行时环境

1.5.2 Standlone模式(集群)

Spark中的各个角色以独立进程的形式存在,并组成Spark集群环境

1.5.3 Hadoop YARN模式(集群)

Spark中的各个角色运行在YARN的容器内部,并组成Spark集群环境

1.5.4 Kubernetes模式(容器集群)

Spark中的各个角色运行在Kubernetes的容器内部,并组成Spark集群环境

1.6 Spark的运行角色

Master:集群资源管理(类同ResourceManager)

Worker:单机资源管理(类同NodeManager)

Driver:单任务管理者(类同ApplicationMaster)

Executor:单任务执行者(类同YARN容器内的Task)

2.部署配置

2.1 安装步骤

通过官网或者压缩包下载linux 配置Anconda的sh文件

在所在文件夹下

bash此shell文件

换镜像文件

(base) [smith@hadoop102 ~]$ vim ~/.condarc

换成清华源镜像

channels:
  - defaults
show_channel_urls: true
default_channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
  conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

用conda安装pyspark

(base) [smith@hadoop102 ~]$ conda create -n pyspark python=3.8

进入spark

(base) [smith@hadoop102 ~]$ conda activate pyspark

在profile里进行配置

#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_333
export PATH=$PATH:$JAVA_HOME/bin

#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.3.3

export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.3.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

#HIVE_HOME
export HIVE_HOME=/opt/module/hive
export PATH=$PATH:$HIVE_HOME/bin

export SPARK_HOME=/opt/module/spark
export PYSPARK_PYTHON=/home/smith/anaconda3/envs/pyspark/bin/python3.8
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

使用交互式的python解释器

(base) [smith@hadoop102 bin]$ ./pyspark
Python 3.8.16 (default, Mar  2 2023, 03:21:46) 
[GCC 11.2.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
2023-03-24 10:00:55,668 WARN conf.HiveConf: HiveConf of name hive.metastore.event.db.notification.api.auth does not exist
2023-03-24 10:00:55,973 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /__ / .__/\_,_/_/ /_/\_\   version 3.2.0
      /_/

Using Python version 3.8.16 (default, Mar  2 2023 03:21:46)
Spark context Web UI available at http://hadoop102:4040
Spark context available as 'sc' (master = local[*], app id = local-1679623259628).
SparkSession available as 'spark'.
>>> print("I am spark")
I am spark
>>> sc.parallelize([1,2,3,4,5]).map(lambda x:x*10).collect()
[10, 20, 30, 40, 50]   

其中 http://hadoop102:4040是监控端口

每一个Spark程序在运行的时候,会绑定在Driver所在机器的4040端口上,如果4040端口被占用,会顺延到4041 4042...

Spark的任务在运行后,会在Driver所在机器绑定到4040端口,提供当前任务的监控页面供查看

2.2 Local模式的运行原理

Local模式就是以一个独立的矜持配合其内部线程来提供完成Spark运行时环境,Local模式可以通过spark-shell/pyspark/spark-submit等来开启

bin/pyspark是一个交互式的解释器执行环境,执行之后可以得到一个本地的spark环境,运行python代码去进行Spark计算,类似于python自带解释器。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值