Spark集群搭建

Spark集群结构

  1. 名词解释

    1. Driver
      1. 该进程调用 Spark 程序的 main 方法,并且启动 SparkContext
    2. Cluster Manager
      1. 该进程负责和外部集群工具打交道,申请或释放集群资源
    3. Worker
      1. 该进程是一个守护进程,负责启动和管理 Executor
    4. Executor
      1. 该进程是一个 JVM 虚拟机,负责运行 Spark Task
  2. 运行一个Spark程序大致经历如下几个步骤

    1. 启动 Driver, 创建SparkContext
    2. Client 提交程序给Driver, Driver 向 Cluster Manager 申请集群资源
    3. 资源申请完毕,在 Worker 中启动 Executor
    4. Driver 将程序转化为 Tasks ,分发给 Executor 执行
  3. 问题

    1. 问题一:Spark 程序可以运行在什么地方?

      1. Spark 可以将任务运行在两种模式下:
        1. 单机,使用线程模拟并行来运行程序
        2. 集群,使用集群管理器来和不同类型的集群交互,将任务运行在集群中
      2. Spark 可以使用的集群管理工具有:
        1. Spark Standalone
        2. Hadoop Yarn
        3. Apache Mesos
        4. Kubernetes
    2. 问题二:Driver 和 Worker 什么时候被启动?

      1. Standalone 集群

        1. Standalone 集群中,分为两个角色:Master 和 Slave,而 Slave 就是Worker ,所以在 Standalone 集群中,启动之初就会创建固定数量的 Worker

        2. Driver 的启动分为两种模式:Client 和Cluster。在 Client 模式下,Driver 运行在 Client 端,在 Client 启动的时候被启动。在 Cluster 模式下,Driver 运行在某个 Worker 中,随着应用的提交而启动

          Spark Standalone 图

      2. yarn 集群

        1. 在 Yarn 集群模式下, 也依然分为 Client 模式和 Cluster 模式, 较新的版本中已经逐渐在废弃 Client 模式了, 所以上图所示为 Cluster 模式

        2. 如果要在 Yarn 中运行 Spark 程序, 首先会和 RM 交互, 开启 ApplicationMaster, 其中运行了 Driver, Driver创建基础环境后, 会由 RM 提供对应的容器, 运行 Executor, Executor会反向向 Driver 反向注册自己, 并申请 Tasks 执行

        3. 在后续的 Spark 任务调度部分, 会更详细介绍

        4. yarn图

    3. 总结

      1. Master 负责总控, 调度, 管理和协调 Worker, 保留资源状况等
      2. Slave 对应 Worker 节点, 用于启动 Executor 执行 Tasks, 定期向 Master汇报
      3. Driver 运行在 Client 或者 Slave(Worker) 中, 默认运行在 Slave(Worker) 中

Spark集群搭建

  1. 下载Spark安装包

    1. https://archive.apache.org/dist/spark/spark-2.2.1/
  2. 上传并解压改名

    cd soft
    rz
    tar -zxvf spark-2.1.1-bin-hadoop2.7.tgz -C /root
     mv /root/spark-2.1.1-bin-hadoop2.7 /root/spark
    
  3. 配置

    1. 修改 spark-env.sh

      1. 进入配置目录, 并复制一份新的配置文件, 以供在此基础之上进行修改

        cd /root/spark/conf
        cp spark-env.sh.template spark-env.sh
        vi spark-env.sh
        
        # 将以下内容复制进配置文件末尾
        # 指定 Java Home
        export JAVA_HOME=/root/jdk
        
        # 指定 Spark Master 地址
        export SPARK_MASTER_HOST=master
        export SPARK_MASTER_PORT=7077
        
    2. 修改配置文件 slaves, 以指定从节点为止, 从在使用 sbin/start-all.sh 启动集群的时候, 可以一键启动整个集群所有的 Worker

      1. 进入配置目录, 并复制一份新的配置文件, 以供在此基础之上进行修改

        cd /root/spark/conf
        cp slaves.template slaves
        vi slaves
        
        # 配置所有节点的地址
        master
        slave1 
        slave2
        
    3. 配置 HistoryServer

      1. 默认情况下, Spark 程序运行完毕后, 就无法再查看运行记录的 Web UI 了, 通过 HistoryServer 可以提供一个服务, 通过读取日志文件, 使得我们可以在程序运行结束后, 依然能够查看运行过程

      2. 复制 spark-defaults.conf, 以供修改

        cd /root/spark/conf
        cp spark-defaults.conf.template spark-defaults.conf
        vi spark-defaults.conf
        
      3. 将以下内容复制到spark-defaults.conf末尾处, 通过这段配置, 可以指定 Spark 将日志输入到 HDFS 中

        spark.eventLog.enabled  true
        spark.eventLog.dir      hdfs://master:9000/spark_log
        spark.eventLog.compress true
        
        # (注意:spark.eventLog.dir与Dspark.history.fs.logDirectory的NameNode地址要与$HADOOP_HOME/etc/hadoop下的core-site中的namenode地址相同)
        
      4. 将以下内容复制到spark-env.sh的末尾, 配置 HistoryServer 启动参数, 使得 HistoryServer 在启动的时候读取 HDFS 中写入的 Spark 日志

        # 指定 Spark History 运行参数
        export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=4000 -Dspark.history.retainedApplications=3 -Dspark.history.fs.logDirectory=hdfs://master:9000/spark_log"
        
      5. 为 Spark 创建 HDFS 中的日志目录

        hdfs dfs -mkdir -p /spark_log
        
  4. 分发和运行

    1. 将 Spark 安装包分发给集群中其它机器

      cd /root/
      scp -r spark root@slave1:/root/
      scp -r spark root@slave2:/root/
      
    2. 启动 Spark Master 和 Slaves, 以及 HistoryServer

      cd /root/spark
      sbin/start-all.sh
      sbin/start-history-server.sh
      
  5. 以上是spark standalone 集群搭建

Spark 集群高可用搭建

  1. 目标

    1. 简要了解如何使用 Zookeeper 帮助 Spark Standalone 高可用
      1. 对于 Spark Standalone 集群来说, 当 Worker 调度出现问题的时候, 会自动的弹性容错, 将出错的 Task 调度到其它 Worker 执行
      2. 但是对于 Master 来说, 是会出现单点失败的, 为了避免可能出现的单点失败问题, Spark 提供了两种方式满足高可用
        1. 使用 Zookeeper 实现 Masters 的主备切换
        2. 使用文件系统做主备切换
  2. 停止 Spark 集群

    cd /root/spark
    sbin/stop-all.sh
    
  3. 修改配置文件, 增加 Spark 运行时参数, 从而指定 Zookeeper 的位置

    1. 进入spark-env.sh 所在目录, 打开 vi 编辑

      cd /root/spark/conf
      vi spark-env.sh
      
    2. 编辑 spark-env.sh, 添加 Spark 启动参数, 并注释SPARK_MASTER_HOST 地址

      # 指定 Java Home
      export JAVA_HOME=/root/jdk
      
      # 指定 Spark Master 地址
      # export SPARK_MASTER_HOST=master
      export SPARK_MASTER_PORT=7077
      
      # 指定 Spark History 运行参数
      export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=4000 -Dspark.history.retainedApplications=3 -Dspark.history.fs.logDirectory=hdfs://node01:9000/spark_log"
      
      # 指定 Spark 运行时参数
      export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=master:2181,slave1:2181,slave2:2181 -Dspark.deploy.zookeeper.dir=/spark"
      
  4. 分发配置文件到整个集群

    cd /export/servers/spark/conf
    scp spark-env.sh slave1:/root/spark/conf
    scp spark-env.sh slave2:/root/spark/conf
    
  5. 启动

    1. 在 master上启动整个集群

      cd /root/spark
      sbin/start-all.sh
      sbin/start-history-server.sh
      
    2. 在 slave1上单独再启动一个 Master

      cd /root/spark
      sbin/start-master.sh
      
  6. 查看 master master 和 slave1 master 的 WebUI

    1. 你会发现一个是 ALIVE(主), 另外一个是 STANDBY(备)
    2. 如果关闭一个, 则另外一个成为ALIVE, 但是这个过程可能要持续两分钟左右, 需要耐心等待

运行案例测试集群

目标

  1. 从示例应用运行中理解 Spark 应用的运行流程
    1. 流程
      1. 进入 Spark 安装目录中

        cd /root/spark/
        
      2. 运行 Spark 示例

        bin/spark-submit \\
        --class org.apache.spark.examples.SparkPi \\
        --master spark://master:7077 \\
        --executor-memory 1G \\
        --total-executor-cores 2 \\
        --/root/spark/examples/jars/spark-examples_2.11-2.1.1.jar \\ # 视jar包版本而定
        100 # 计算100次
        

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/293686.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux-故障排查

实验要求 samba仅允许192.168.1.0/24、192.168.10/24进行访问 开一台虚拟机 快照恢复到未联网安装 关闭防火墙 安全linux 编辑ens33网卡 vim /etc/sysconfig/network-scripts/ifcfg-ens33 将ens33网卡复制一份命名为ens37 cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc…

深度学习课程实验三训练和测试卷积神经网络

一、 实验目的 1、学会搭建、训练和测试卷积神经网络,并掌握其应用。 2、掌握使用numpy实现卷积(CONV)和池化(POOL)层,包括正向春传播和反向传播。 二、 实验步骤 Convolutional Neural Networks: Step by Step 1、导入所需要的安装包 2、构建卷积神经…

Docker安装与仓库使用

日升时奋斗,日落时自省 目录 1、Docker引擎 2、Docker和虚拟机的区别 3、Docker架构 4、Docker安装 4.1、Ubuntu安装 4.1.1、查看版本需求 4.1.2、卸载历史版本 4.1.3、配置docker下载源 4.1.4、自动启动配置 4.1.5、查看docker版本 4.2、CentOS安装 4…

flutter 五:MaterialApp

MaterialApp const MaterialApp({super.key,this.navigatorKey, //导航键this.scaffoldMessengerKey, //scaffold管理this.home, //首页Map<String, WidgetBuilder> this.routes const <String, WidgetBuilder>{}, //路由this.initialRoute, //初始路由th…

WORD交叉引用参考文献批量转上标

试了好几种方法&#xff0c;只有这个对我奏效

卷积神经网络|导入图片

在学习卷积神经网络时&#xff0c;我们通常使用的就是公开的数据集&#xff0c;这里&#xff0c;我们不使用公开数据集&#xff0c;直接导入自己的图片数据&#xff0c;下面&#xff0c;就简单写个程序实现批量图片的导入。 import osfrom PIL import Imageimport numpy as np…

nginx配置图片服务器

目录 一&#xff1a;访问流程 二&#xff1a;缓存服务器配置 三&#xff1a;上传图片直接上传到图片服务器 四&#xff1a;加快图片访问 一&#xff1a;访问流程 访问缓存服务器(上面安装nginx反向代理到图片服务器&#xff0c;对外提供服务)->图片服务器 二&#xff1…

Windows【工具 05】使用freeSSHd搭建sftp环境(安装+配置+避坑)freeSSHd version 1.3.1安装包网盘分享

使用freeSSHd搭建sftp环境 1.安装2. 使用2.1 开启2.2 配置 3.避坑3.1 端口占用3.2 配置数据无法保存或报没有权限 官方网址已经停止维护&#xff0c;网盘文件 freeSSHd.exe版本为 1.3.1: 链接&#xff1a;https://pan.baidu.com/s/1X-4i9pWGKOsCFEByfPXhig?pwdxp6f 提取码&a…

C# xml序列化和反序列化

问题 有的项目使用webservice返回结果是xml&#xff0c;需要进行xml序列化和反序列化 xml序列化相关特性 C#中&#xff0c;XML序列化相关的特性主要包括&#xff1a; XmlIgnore&#xff1a;这个特性可以用来指示序列化过程忽略一个属性或一个字段。当使用XmlIgnore特性时&a…

Windows PowerShell的安全目标——安全警报

Windows PowerShell的安全目标——安全警报 1. 保证Shell安全 ​ 自从2006年年底PowerShell发布以来&#xff0c;微软在安全和脚本方面并没有取得很好的名声。毕竟那个时候&#xff0c;**VBScript和Windows Script Host(WSH)**是两个最流行的病毒和恶意软件的载体&#xff0c…

3D Gaussian Splatting复现

最近3D Gaussian Splatting很火&#xff0c;网上有很多复现过程&#xff0c;大部分都是在Windows上的。Linux上配置环境会方便简单一点&#xff0c;这里记录一下我在Linux上复现的过程。 Windows下的环境配置和编译&#xff0c;建议看这个up主的视频配置&#xff0c;讲解的很细…

SemCms外贸网站商城系统 SQL注入漏洞复现(CVE-2023-50563)

0x01 产品简介 SemCms是国内团队打造的专门针对外贸网站的开源CMS,主要用于外贸企业,兼容IE,Firefox等主流浏览器。建设商城性质的外贸网站,多语言(小语种)网站。 0x02 漏洞概述 SemCms外贸网站商城系统SEMCMS_Function.php 中的 AID 参数存在SQL注入漏洞,未经身份认…

el-autocomplete远程搜索使用及el-upload上传多个文件流给后端,详情接口返回的是文件地址,前端将文件地址转成文件流,回传文件流给后端

最近遇到一个项目,里面有2个需求我觉得挺常见的,第一个需求是一个表单里,当用户在输入名称后,前端调接口发请求获取到关联名称的企业名称,并展示,然后当用户选中企业后,前端调接口获取选中企业的具体信息,并填充到表单里;第二个需求是,表单里有个上传图片的功能,前端…

异常、反射、注解知识点

1. Java 中的异常 是 Java 提供的一种处理程序中错误的机制。 当发生异常时&#xff0c;JVM 会将异常封装成一个异常对象抛出。此对象用来描述异常信息。 当 JVM 遇到程序异常就会自动停止。 2. 异常分类 Throwable&#xff1a;是 Java 异常的根类&#xff0c;Error 和 Exc…

macOS跨进程通信: XPC 创建实例

一&#xff1a;简介 XPC 是 macOS 里苹果官方比较推荐和安全的的进程间通信机制。 集成流程简单&#xff0c;但是比较绕。 主要需要集成 XPC Server 这个模块&#xff0c;这个模块最终会被 apple 的根进程 launchd 管理和以独立进程的方法唤起和关闭&#xff0c; 我们主app 进…

JAVA版鸿鹄云商B2B2C:解析多商家入驻直播带货商城系统的实现与应用

一、技术选型 java开发语言&#xff1a;java是一种跨平台的编程语言&#xff0c;适用于大型企业级应用开发。使用java开发直播商城可以保证系统的稳定性和可扩展性。 spring boot框架&#xff1a;spring boot是一个快速构建spring应用的框架&#xff0c;简化了开发过程&#xf…

Java大数据hadoop2.9.2搭建伪分布式yarn资源管理器

1、修改配置文件 cd /usr/local/hadoop/etc/hadoop cp ./mapred-site.xml.template ./mapred-site.xml vi mapred-site.xml <configuration><property><name>mapreduce.framework.name</name><value>yarn</value></property> &l…

盲盒、一番赏小程序搭建,打开线上盲盒市场

近几年&#xff0c;我国潮玩市场发展非常迅速&#xff0c;在互联网的影响下&#xff0c;盲盒更是迅速走红网络&#xff0c;深受年轻人的喜欢&#xff0c;各大社交平台上关于盲盒的讨论度也是层出不穷。 一番赏与盲盒的机制都是差不多的&#xff0c;盲盒是在包装一样的盒子中放…

华为 1+X《网络系统建设与运维(初级)》 认证实验上机模拟试题

华为 1X《网络系统建设与运维&#xff08;初级&#xff09;》认证实验上机模拟试题 一、考试背景二、考试说明2.1考试分数说明2.2考试要求2.3考试环境介绍2.4启动考试环境2.5保存答案 三、考试正文3.1考试内容3.1.1任务 1&#xff1a;设备连接3.1.2任务 2&#xff1a;设备命名3…