• Spark学习(3)-Spark环境搭建-Standalone


    1 Standalone 架构

    Standalone模式是Spark自带的一种集群模式,不同于前面本地模式启动多个进程来模拟集群的环境,Standalone模式是真实地在多个机器之间搭建Spark集群的环境,完全可以利用该模式搭建多机器集群,用于实际的大数据处理。
    StandAlone是完整的Spark运行环境,其中:Master角色以Master进程存在, Worker角色以Worker进程存在,Driver和Executor运行于Worker进程内, 由Worker提供资源供给它们运行。

    StandAlone集群在进程上主要有3类进程:

    • 主节点Master进程:
      • Master角色, 管理整个集群资源,并托管运行各个任务的Driver。
    • 从节点Workers:
      • Worker角色, 管理每个机器的资源,分配对应的资源来运行Executor(Task); 每个从节点分配资源信息给Worker管理,资源信息包含内存Memory和CPU Cores核数。
    • 历史服务器HistoryServer(可选):
      • Spark Application运行完成以后,保存事件日志数据至HDFS,启动HistoryServer可以查看应用运行相关信息。
        在这里插入图片描述
        在这里插入图片描述

    2 Standalone环境安装操作

    2.1 集群规划

    使用三台Linux虚拟机来组成集群环境, 分别是:

    node1\ node2\ node3
    node1运行: Spark的Master进程  和 1个Worker进程
    node2运行: spark的1个worker进程
    node3运行: spark的1个worker进程
    
    • 1
    • 2
    • 3
    • 4

    整个集群提供: 1个master进程 和 3个worker进程

    2.2 在所有机器安装Python(Anaconda)

    同时不要忘记 都创建pyspark虚拟环境,以及安装虚拟环境所需要的包pyspark jieba pyhive

    2.3 在所有机器配置环境变量

    参考 Local模式下 环境变量的配置内容。
    确保3台都配置

    2.4 配置配置文件

    进入到spark的配置文件目录中, cd $SPARK_HOME/conf

    配置workers文件

    # 改名, 去掉后面的.template后缀
    mv workers.template workers
    
    # 编辑worker文件
    vim workers
    # 将里面的localhost删除, 追加
    node1
    node2
    node3
    到workers文件内
    
    # 功能: 这个文件就是指示了  当前SparkStandAlone环境下, 有哪些worker
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    配置spark-env.sh文件

    # 1. 改名
    mv spark-env.sh.template spark-env.sh
    
    # 2. 编辑spark-env.sh, 在底部追加如下内容
    
    ## 设置JAVA安装目录
    JAVA_HOME=/export/server/jdk
    
    ## HADOOP软件配置文件目录,读取HDFS上文件和运行YARN集群
    HADOOP_CONF_DIR=/export/server/hadoop/etc/hadoop
    YARN_CONF_DIR=/export/server/hadoop/etc/hadoop
    
    ## 指定spark老大Master的IP和提交任务的通信端口
    # 告知Spark的master运行在哪个机器上
    export SPARK_MASTER_HOST=node1
    # 告知sparkmaster的通讯端口
    export SPARK_MASTER_PORT=7077
    # 告知spark master的 webui端口
    SPARK_MASTER_WEBUI_PORT=8080
    
    # worker cpu可用核数
    SPARK_WORKER_CORES=1
    # worker可用内存
    SPARK_WORKER_MEMORY=1g
    # worker的工作通讯地址
    SPARK_WORKER_PORT=7078
    # worker的 webui地址
    SPARK_WORKER_WEBUI_PORT=8081
    
    ## 设置历史服务器
    # 配置的意思是  将spark程序运行的历史日志 存到hdfs的/sparklog文件夹中
    SPARK_HISTORY_OPTS="-Dspark.history.fs.logDirectory=hdfs://node1:8020/sparklog/ -Dspark.history.fs.cleaner.enabled=true"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32

    注意, 上面的配置的路径 要根据你自己机器实际的路径来写。

    在HDFS上创建程序运行历史记录存放的文件夹:

    hadoop fs -mkdir /sparklog
    hadoop fs -chmod 777 /sparklog
    
    • 1
    • 2

    配置spark-defaults.conf文件

    # 1. 改名
    mv spark-defaults.conf.template spark-defaults.conf
    
    # 2. 修改内容, 追加如下内容
    # 开启spark的日期记录功能
    spark.eventLog.enabled 	true
    # 设置spark日志记录的路径
    spark.eventLog.dir	 hdfs://node1:8020/sparklog/ 
    # 设置spark日志是否启动压缩
    spark.eventLog.compress 	true
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    配置log4j.properties 文件 [可选配置]

    # 1. 改名
    mv log4j.properties.template log4j.properties
    
    # 2. 修改内容 参考下图
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述
    这个文件的修改不是必须的, 为什么修改为WARN. 因为Spark是个话痨,会疯狂输出日志, 设置级别为WARN 只输出警告和错误日志, 不要输出一堆废话。

    2.5 将Spark安装文件夹 分发到其它的服务器上

    scp -r spark-3.1.2-bin-hadoop3.2 node2:/export/server/
    scp -r spark-3.1.2-bin-hadoop3.2 node3:/export/server/
    
    • 1
    • 2

    不要忘记, 在node2和node3上 给spark安装目录增加软链接

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

    2.6 检查

    检查每台机器的:
    JAVA_HOME
    SPARK_HOME
    PYSPARK_PYTHON
    等等 环境变量是否正常指向正确的目录
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2.7 启动历史服务器

    `sbin/start-history-server.sh`
    
    • 1

    2.8 启动Spark的Master和Worker进程

    # 启动全部master和worker
    sbin/start-all.sh
    
    # 或者可以一个个启动:
    # 启动当前机器的master
    sbin/start-master.sh
    # 启动当前机器的worker
    sbin/start-worker.sh
    
    # 停止全部
    sbin/stop-all.sh
    
    # 停止当前机器的master
    sbin/stop-master.sh
    
    # 停止当前机器的worker
    sbin/stop-worker.sh
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    2.9 查看Master的WEB UI

    • 默认端口master我们设置到了8080。
    • 如果端口被占用, 会顺延到8081 …;8082… 8083… 直到申请到端口为止。
    • 可以在日志中查看, 具体顺延到哪个端口上。

    在这里插入图片描述

    3 连接到StandAlone集群

    3.1 bin/pyspark

    执行:

    bin/pyspark --master spark://node1:7077
    # 通过--master选项来连接到 StandAlone集群
    # 如果不写--master选项, 默认是local模式运行
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    3.2 bin/spark-shell

    bin/spark-shell --master spark://node1:7077
    # 同样适用--master来连接到集群使用
    
    • 1
    • 2
    // 测试代码
    sc.parallelize(Array(1,2,3,4,5)).map(x=> x + 1).collect()
    
    • 1
    • 2

    3.3 bin/spark-submit (PI)

    bin/spark-submit --master spark://node1:7077 /export/server/spark/examples/src/main/python/pi.py 100
    # 同样使用--master来指定将任务提交到集群运行
    
    • 1
    • 2

    4 查看历史服务器WEB UI

    • 历史服务器的默认端口是: 18080
    • 我们启动在node1上, 可以在浏览器打开:node1:18080来进入到历史服务器的WEB UI上.

    在这里插入图片描述

  • 相关阅读:
    java毕业生设计宠物管理系统计算机源码+系统+mysql+调试部署+lw
    C/C++ 代码中使用 CMake 工程目录
    7.关于线性回归模型的Q&A
    聚精品,通全球 2024中国(杭州)国际电商物流包装产业展览会四月隆重开幕
    十年老程序员分享13个最常用的Python深度学习库和介绍,赶紧收藏码住!
    阿里云云安全中心基础免费版不支持审计功能!
    HTML+CSS大作业 格林蛋糕(7个页面) 餐饮美食网页设计与实现
    控制瑞芯微平台GPIO(输入、输出、电平读取)
    威马汽车流血上市,3年烧掉174亿,能否IPO突围?
    Tomcat 部署 war 包
  • 原文地址:https://blog.csdn.net/wu2374633583/article/details/126019782