大数据Hadoop之——Spark集群部署(Standalone)[亲测有效]

大数据Hadoop之——Spark集群部署(Standalone)[亲测有效]一、Spark概述 Spark基础概念和原理讲解可以参考我上篇博文:大数据Hadoop之——计算引擎Spark 二、Spark的运行模式 1)Standalone(本章讲解) 独立模式,自己独立一套集

大数据Hadoop之——Spark集群部署(Standalone)

目录
  • 一、Spark概述
  • 二、Spark的运行模式
    • 1)Standalone(本章讲解)
    • 2)Mesos
    • 3)YARN(推荐)
    • 4)K8S(新模式)
  • 三、Standalone 模式运行机制
    • 1)Standalone Client 模式
    • 2)Standalone Cluster 模式
  • 四、Spark 集群安装(Standalone)
    • 1)机器及角色划分
    • 2)三台机器安装JDK环境
    • 3)下载
    • 4)配置spark
    • 5)将配置好的包copy另外两台集群
    • 5)启动
      • 1、启动Master(在hadoop-node1节点上执行)
      • 2、启动Worker节点(在所有节点上都执行)
  • 五、测试验证
    • 1)driver client模式(–deploy-mode client)
    • 2)driver cluster模式(–deploy-mode cluster)

一、Spark概述

Spark基础概念和原理讲解可以参考我上篇博文:大数据Hadoop之——计算引擎Spark

二、Spark的运行模式

1)Standalone(本章讲解)

独立模式,自己独立一套集群(master/client/slave),Spark 原生的简单集群管理器, 自带完整的服务, 可单独部署到一个集群中,无需依赖任何其他资源管理系统, 使用 Standalone 可以很方便地搭建一个集群,一般在公司内部没有搭建其他资源管理框架的时候才会使用。缺点:资源不利于充分利用

2)Mesos

一个强大的分布式资源管理框架,它允许多种不同的框架部署在其上,包括 yarn,由于mesos这种方式目前应用的比较少,这里没有记录mesos的部署方式。

3)YARN(推荐)

统一的资源管理机制, 在上面可以运行多套计算框架, 如map reduce、storm,spark、flink 等, 根据 driver 在集群中的位置不同,分为 yarn client 和 yarn cluster,其实本质就是drive不同。企业里用得最多的一种模式。这种模式环境部署,已经在大数据Hadoop之——计算引擎Spark博文中讲过,这里就不重复了。

  • yarn Client模式:Driver运行在本地,适合交互调试
  • yarn Cluster模式:Driver运行在集群(AM),正式提交任务的模式(remote)

4)K8S(新模式)

K8S 是 Spark 上全新的集群管理和调度系统。由于在实际生产环境下使用的绝大多数的集群管理器是 ON YARN模式,因此我们目前最主要还是关注ON YARN模式,ON K8S模式了解就行,有兴趣的小伙伴可以试试,工作模式如下图所示:

大数据Hadoop之——Spark集群部署(Standalone)[亲测有效]

Spark 的运行模式取决于传递给 SparkContext 的 MASTER 环境变量的值, 个别模式还需要辅助的程序接口来配合使用,目前支持的 Master 字符串及 URL 包括:

–deploy-mode:是否将驱动程序(driver)部署在工作节点(cluster)上,或作为外部客户机(client)本地部署(默认值:client)。

Master URL 含义
local 在本地运行,只有一个工作进程,无并行计算能力
local[K] 在本地运行,有 K 个工作进程,通常设置 K 为机器的CPU 核心数量
local[*] 在本地运行,工作进程数量等于机器的 CPU 核心数量。
spark://HOST:PORT 以 Standalone 模式运行,这是 Spark 自身提供的集群运行模式,默认端口号: 7077
mesos://HOST:PORT 在 Mesos 集群上运行,Driver 进程和 Worker 进程运行在 Mesos 集群上,部署模式必须使用固定值:–deploy-mode cluster
yarn 在yarn集群上运行,依赖于hadoop集群,yarn资源调度框架,将应用提交给yarn,在ApplactionMaster(相当于Stand alone模式中的Master)中运行driver,在集群上调度资源,开启excutor执行任务。
k8s 在k8s集群上运行

三、Standalone 模式运行机制

大数据Hadoop之——Spark集群部署(Standalone)[亲测有效]

Standalone 集群有四个重要组成部分, 分别是:

  • Driver: 是一个进程,我们编写的 Spark 应用程序就运行在 Driver 上, 由Driver 进程执行;
  • Master:是一个进程,主要负责资源的调度和分配,并进行集群的监控等职责;
  • Worker:是一个进程,一个 Worker 运行在集群中的一台服务器上,主要负责两个职责,一个是用自己的内存存储 RDD 的某个或某些 partition;另一个是启动其他进程和线程(Executor) ,对 RDD 上的 partition 进行并行的处理和计算。
  • Executor:是一个进程, 一个 Worker 上可以运行多个 Executor, Executor 通过启动多个线程( task)来执行对 RDD 的 partition 进行并行计算,也就是执行我们对 RDD 定义的例如 map、flatMap、reduce 等算子操作。

1)Standalone Client 模式

大数据Hadoop之——Spark集群部署(Standalone)[亲测有效]

  • 在Standalone Client模式下,Driver在任务提交的本地机器上运行,
  • Driver启动后向Master注册应用程序,Master根据submit脚本的资源需求找到内部资源至少可以启动一个Executor的所有Worker,
  • 然后在这些Worker之间分配Executor,Worker上的Executor启动后会向Driver反向注册,所有的Executor注册完成后,
  • Driver开始执行main函数,之后执行到Action算子时,开始划分stage,每个stage生成对应的taskSet,之后将task分发到各个Executor上执行。

2)Standalone Cluster 模式

大数据Hadoop之——Spark集群部署(Standalone)[亲测有效]

  • 在 Standalone Cluster 模式下,任务提交后,Master 会找到一个 Worker 启动 Driver进程,
  • Driver 启动后向 Master 注册应用程序,
  • Master 根据 submit 脚本的资源需求找到内部资源至少可以启动一个 Executor 的所有 Worker,
  • 然后在这些 Worker 之间分配 Executor,Worker 上的 Executor 启动后会向 Driver 反向注册,
  • 所有的 Executor 注册完成后,Driver 开始执行 main 函数,之后执行到 Action 算子时,开始划分 stage,每个 stage 生成对应的 taskSet,之后将 task 分发到各个 Executor 上执行。

【 注意】Standalone的两种模式下(client/Cluster),Master在接到Driver注册Spark应用程序的请求后,会获取其所管理的剩余资源能够启动一个Executor的所有Worker,然后在这些Worker之间分发Executor,此时的分发只考虑Worker上的资源是否足够使用,直到当前应用程序所需的所有Executor都分配完毕,Executor反向注册完毕后,Driver开始执行main程序。

四、Spark 集群安装(Standalone)

1)机器及角色划分

机器IP 机器名 节点类型
192.168.0.113 hadoop-node1 Master/Worker
192.168.0.114 hadoop-node2 Worker
192.168.0.115 hadoop-node3 Worker

2)三台机器安装JDK环境

之前安装Hadoop集群的时候已经安装过了,这里就略过了,不清楚的可以参考我之前的文章:大数据Hadoop原理介绍+安装+实战操作(HDFS+YARN+MapReduce)

3)下载

Spark下载地址:http://spark.apache.org/downloads.html

大数据Hadoop之——Spark集群部署(Standalone)[亲测有效]

这里需要注意版本,我的hadoop版本是3.3.1,这里spark就下载最新版本的3.2.0,而Spark3.2.0依赖的Scala的2.13,所以后面用到Scala编程时注意Scala的版本。

$ cd /opt/bigdata/hadoop/software
# 下载
$ wget https://dlcdn.apache.org/spark/spark-3.2.0/spark-3.2.0-bin-hadoop3.2.tgz
# 解压
$ tar -zxvf spark-3.2.0-bin-hadoop3.2.tgz -C /opt/bigdata/hadoop/server/
# 修改安装目录名称
$ cp -r /opt/bigdata/hadoop/server/spark-3.2.0-bin-hadoop3.2 /opt/bigdata/hadoop/server/spark-standalone-3.2.0-bin-hadoop3.2

4)配置spark

1、配置slaves文件

$ cd /opt/bigdata/hadoop/server/spark-standalone-3.2.0-bin-hadoop3.2/conf
$ cp workers.template workers
# slaves文件内容如下:
hadoop-node1
hadoop-node2
hadoop-node3

hadoop-node1即是master,也是worker

2、配置spark-env.sh

$ cd /opt/bigdata/hadoop/server/spark-standalone-3.2.0-bin-hadoop3.2/conf
# 创建data目录(所有节点都得创建这个目录)
$ mkdir -p /opt/bigdata/hadoop/data/spark-standalone
# copy一份环境变量文件
$ cp spark-env.sh.template spark-env.sh
# 加入以下内容:
export SPARK_MASTER_HOST=hadoop-node1
export SPARK_LOCAL_DIRS=/opt/bigdata/hadoop/data/spark-standalone

3、配置spark-defaults.conf
这里不做修改,如果需要修改,自行修改就行,默认端口7077

$ cp spark-defaults.conf.template spark-defaults.conf
$ cat spark-defaults.conf

大数据Hadoop之——Spark集群部署(Standalone)[亲测有效]

5)将配置好的包copy另外两台集群

$ scp -r spark-standalone-3.2.0-bin-hadoop3.2 hadoop-node2:/opt/bigdata/hadoop/server/
$ scp -r spark-standalone-3.2.0-bin-hadoop3.2 hadoop-node3:/opt/bigdata/hadoop/server/

5)启动

1、启动Master(在hadoop-node1节点上执行)

$ cd /opt/bigdata/hadoop/server/spark-standalone-3.2.0-bin-hadoop3.2/sbin
$ ./start-master.sh
# 查看进程端口,spark master web ui 默认端口为8080
$ ss -tnlp|grep :8080
# 如果端口冲突,修改start-master.sh脚本里的端口即可
$ grep SPARK_MASTER_WEBUI_PORT start-master.sh

大数据Hadoop之——Spark集群部署(Standalone)[亲测有效]
访问spark master web ui:http://hadoop-node1:8080
大数据Hadoop之——Spark集群部署(Standalone)[亲测有效]

2、启动Worker节点(在所有节点上都执行)

$ cd /opt/bigdata/hadoop/server/spark-standalone-3.2.0-bin-hadoop3.2/sbin
$ ./start-worker.sh spark://hadoop-node1:7077

大数据Hadoop之——Spark集群部署(Standalone)[亲测有效]

五、测试验证

spark-submit 详细参数说明

参数名 参数说明
–master master 的地址,提交任务到哪里执行,例如 spark://host:port, yarn, local
–deploy-mode 在本地 (client) 启动 driver 或在 cluster 上启动,默认是 client
–class 应用程序的主类,仅针对 java 或 scala 应用
–name 应用程序的名称
–jars 用逗号分隔的本地 jar 包,设置后,这些 jar 将包含在 driver 和 executor 的 classpath 下
–packages 包含在driver 和executor 的 classpath 中的 jar 的 maven 坐标
–exclude-packages 为了避免冲突 而指定不包含的 package
–repositories 远程 repository
–conf PROP=VALUE 指定 spark 配置属性的值, 例如 -conf spark.executor.extraJavaOptions=”-XX:MaxPermSize=256m”
–properties-file 加载的配置文件,默认为 conf/spark-defaults.conf
–driver-memory Driver内存,默认 1G
–driver-java-options 传给 driver 的额外的 Java 选项
–driver-library-path 传给 driver 的额外的库路径
–driver-class-path 传给 driver 的额外的类路径
–driver-cores Driver 的核数,默认是1。在 yarn 或者 standalone 下使用
–executor-memory 每个 executor 的内存,默认是1G
–total-executor-cores 所有 executor 总共的核数。仅仅在 mesos 或者 standalone 下使用
–num-executors 启动的 executor 数量。默认为2。在 yarn 下使用
–executor-core 每个 executor 的核数。在yarn或者standalone下使用

1)driver client模式(–deploy-mode client)

$ cd /opt/bigdata/hadoop/server/spark-standalone-3.2.0-bin-hadoop3.2/bin
$ ./spark-submit 
--class org.apache.spark.examples.SparkPi 
--master spark://hadoop-node1:7077 
--deploy-mode client 
--driver-memory 1G 
--executor-memory 1G 
--total-executor-cores 2 
--executor-cores 1 
/opt/bigdata/hadoop/server/spark-standalone-3.2.0-bin-hadoop3.2/examples/jars/spark-examples_2.12-3.2.0.jar 10

这种模式运行结果,直接在客户端显示出来了。
大数据Hadoop之——Spark集群部署(Standalone)[亲测有效]

2)driver cluster模式(–deploy-mode cluster)

$ cd /opt/bigdata/hadoop/server/spark-standalone-3.2.0-bin-hadoop3.2/bin
$ ./spark-submit 
--class org.apache.spark.examples.SparkPi 
--master spark://hadoop-node1:7077 
--deploy-mode cluster 
--driver-memory 1G 
--executor-memory 1G 
--total-executor-cores 2 
--executor-cores 1 
/opt/bigdata/hadoop/server/spark-standalone-3.2.0-bin-hadoop3.2/examples/jars/spark-examples_2.12-3.2.0.jar 10

这种模式基本上没什么输出信息,需要登录web页面查看
大数据Hadoop之——Spark集群部署(Standalone)[亲测有效]

大数据Hadoop之——Spark集群部署(Standalone)[亲测有效]

查看driver日志信息
大数据Hadoop之——Spark集群部署(Standalone)[亲测有效]
最终在driver日志里查看运行结果了。
大数据Hadoop之——Spark集群部署(Standalone)[亲测有效]

【温馨提示】目前企业里用的最多的模式还是on yarn模式,Standalone模式了解就行。

原文地址:https://www.cnblogs.com/liugp/archive/2022/04/16/16153043.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/5363.html

(0)
上一篇 2023-05-12
下一篇 2023-05-12

相关推荐

  • Python Launcher:高效管理Python环境的利器

    Python Launcher:高效管理Python环境的利器Python是目前最流行的脚本编程语言之一,大多数的运维、数据分析和机器学习都需要用到它。但是,Python的版本和依赖包管理经常会引发问题,而Python Launcher可以解决这一切,能够让你轻松管理多个Python环境,而无需安装任何其他的工具。

    2024-09-09
    24
  • MongoDB – 增删改查「建议收藏」

    MongoDB – 增删改查「建议收藏」对于开发人员而言,数据库的增删改查操作才是最常使用的功能,学习 MongoDB 时还需对这些功能熟记于心才行啊。我就在这里做一个简单的备忘,多看官方文档才是正道。

    2023-06-15
    136
  • python编写盲注自动化脚本(用python写自动化脚本)

    python编写盲注自动化脚本(用python写自动化脚本)首先你需要在北鲲云超算上申请python这款软件,然后选择配置后就可以直接开始作业了,运行软件后就可以开始搭建脚本界面,编写脚本代码,用超算跑作业很方便,直接线上就可以使用,不需要下载到本地,而且计算效率非常的高。

    2023-10-28
    150
  • 人大金仓数据库启动命令_人大金仓命令行连接

    人大金仓数据库启动命令_人大金仓命令行连接人大金仓是国产数据库,属ORACLE系,安装步骤如下: 一,安装数据库(完成后可使用查询分析器等,可以远程其他库) 1,解压自己系统对应的kingbase版本。以64位为例子 2,解压完成先安kin…

    2022-12-15
    478
  • 把串行数据变成并行数据_串行数据到并行数据如何实现

    把串行数据变成并行数据_串行数据到并行数据如何实现在MySQL 5.7版本,官方称为enhanced multi-threaded slave(简称MTS),复制延迟问题已经得到了极大的改进,可以说在MySQL 5.7版本后,复制延迟问题永不存在。

    2023-05-21
    129
  • 石家庄商业银行是河北银行吗_河北银行资产规模

    石家庄商业银行是河北银行吗_河北银行资产规模11 月 1 日,秦皇岛银行新一代分布式核心系统成功投产并稳定安全运行超过三个月,标志着秦皇岛银行数字化转型应用和服务水平登上了一个新台阶。 这是秦皇岛银行有史以来规模最大、范围最广、难度最高的一次系

    2023-06-13
    146
  • 如何在Linux中升级Python版本

    如何在Linux中升级Python版本Python是一种流行的编程语言,它在Linux系统中得到广泛应用。随着Python的版本更新和改进,我们有时需要在Linux系统中升级Python版本。本文将介绍如何在Linux系统中升级Python版本。

    2024-06-22
    45
  • Python使用实例:创建符号链接

    Python使用实例:创建符号链接符号链接(Symbolic Link),也叫软链接,是一种特殊的文件类型,它在文件系统中的作用类似于Windows中的快捷方式。符号链接文件本身只是指向另一个文件或目录的文件指针,因此符号链接文件的大小非常小,只有几个字节。符号链接不是真正的副本,如果源文件或目录被删除或重命名,它指向的位置也会失效。

    2024-03-22
    73

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注