• Spark学习(2)-Spark环境搭建-Local


    1 基本原理

    本质:启动一个JVM Process进程(一个进程里面有多个线程),执行任务Task。

    • 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)内的线程提供计算能力

    PS: Driver也算一种特殊的Executor, 只不过多数时候, 我们将Executor当做纯Worker对待, 这样和Driver好区分(一类是管理 一类是工人)

    注意: Local模式只能运行一个Spark程序, 如果执行多个Spark程序, 那就是由多个相互独立的Local进程在执行。

    2 搭建

    2.1 下载地址

    3.3.0 下载链接

    2.2 条件

    • Python推荐3.8
    • JDK 1.8

    2.3 Anaconda On Linux 安装

    2.4 解压

    解压下载的Spark安装包

    `tar -zxvf spark-3.2.0-bin-hadoop3.2.tgz -C /export/server/`
    
    • 1

    2.5 环境变量

    配置Spark由如下5个环境变量需要设置:

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

    这5个环境变量 都需要配置在: /etc/profile中:
    在这里插入图片描述
    PYSPARK_PYTHON和 JAVA_HOME 需要同样配置在: /root/.bashrc中:
    在这里插入图片描述

    2.6 设置软链接

    ln -s /export/server/spark-3.2.0-bin-hadoop3.2 /export/server/spark
    
    • 1

    在这里插入图片描述
    在这里插入图片描述

    2.7 测试

    bin/pyspark

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

    在这里插入图片描述

    如图:
    在这里插入图片描述
    在这个环境内, 可以运行spark代码

    图中的: parallelizemap 都是spark提供的API
    sc.parallelize([1,2,3,4,5]).map(lambda x: x + 1).collect()

    2.8 WEB UI (4040)

    Spark程序在运行的时候, 会绑定到机器的4040端口上,如果4040端口被占用, 会顺延到4041 … 4042…
    在这里插入图片描述
    4040端口是一个WEBUI端口, 可以在浏览器内打开:
    输入:服务器ip:4040 即可打开:
    在这里插入图片描述
    打开监控页面后, 可以发现 在程序内仅有一个Driver,因为我们是Local模式, Driver即管理 又 干活。
    同时, 输入jps:
    在这里插入图片描述
    可以看到local模式下的唯一进程存在,这个进程 即是master也是worker。

    2.9 bin/spark-shell

    同样是一个解释器环境, 和bin/pyspark不同的是, 这个解释器环境 运行的不是python代码, 而是scala程序代码。

    scala> sc.parallelize(Array(1,2,3,4,5)).map(x=> x + 1).collect()
    res0: Array[Int] = Array(2, 3, 4, 5, 6)
    
    • 1
    • 2

    这个是用于scala语言的解释器环境。

    2.10 bin/spark-submit (PI)

    作用: 提交指定的Spark代码到Spark环境中运行。
    使用方法:

    # 语法
    bin/spark-submit [可选的一些选项] jar包或者python代码的路径 [代码的参数]
    
    # 示例
    bin/spark-submit /export/server/spark/examples/src/main/python/pi.py 10
    # 此案例 运行Spark官方所提供的示例代码 来计算圆周率值.  后面的10 是主函数接受的参数, 数字越高, 计算圆周率越准确.
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    对比
    在这里插入图片描述

  • 相关阅读:
    W5300-TOE Arduino 网络服务器
    Flutter 精品项目大全之 侧边栏银行管理完成App(教程含源码)
    最新Next 14快速上手基础部分
    02--Spring中AOP
    Django初窥门径-自定义用户模型
    02第二课 指标与指标体系
    python自动化测试selenium核心技术3种等待方式详解
    超神之路 数据结构 3 —— Stack栈实现及应用
    快速求完全二叉树的节点个数
    使用Pytorch从零实现Vision Transformer
  • 原文地址:https://blog.csdn.net/wu2374633583/article/details/126012044