大数据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

相关推荐

  • [翻译]——Accelerated Database Recovery; Instant Rollback and Database Recovery「终于解决」

    [翻译]——Accelerated Database Recovery; Instant Rollback and Database Recovery「终于解决」前言: 本文是对这篇博客Accelerated Database Recovery; Instant Rollback and Database Recovery的翻译,翻译如有不当的地方,敬请谅解,

    2023-04-18
    149
  • Python变量:管理你的数据

    Python变量:管理你的数据Python是一门强大的编程语言,用于解决各种问题。它可以用来创建各种类型的程序,包括Web应用程序、桌面应用程序、游戏、数据分析和科学计算。 Python有许多有用的特性,其中变量被认为是最强大和有用的特性之一。Python变量可以用来存储各种类型的数据。

    2024-02-17
    91
  • oracle 12c数据库报ORA-01654错的问题处理

    oracle 12c数据库报ORA-01654错的问题处理现象:用的致远的OA,今天用户在提交数据的时候报这个这个错 处理过程: 1、查看表空间的使用情况 SELECT T.TABLESPACE_NAME,D.FILE_NAME,D.AUTOEXTENSI…

    2023-04-05
    170
  • Python字符串转Byte

    Python字符串转Byte在Python中,字符串和Byte是不同的数据类型。字符串是一组字符序列,而Byte是一组二进制数据。Python中的字符串不支持直接转换为Byte,因此我们需要使用一些方法来完成这个操作。

    2024-07-17
    34
  • 数据库基本知识点总结(二)[云图智联][通俗易懂]

    数据库基本知识点总结(二)[云图智联][通俗易懂]数据库知识-范式 一、相关概念和知识点 1.数据依赖:反映一个关系内部属性与属性之间的约束关系,是现实世界属性间相互联系的抽象,属于数据内在的性质和语义的体现。 2. 规范化理论:是用来设计良好的关…

    2023-03-17
    135
  • Postgesql 空间点聚合实验

    Postgesql 空间点聚合实验聚合效果:根据范围四至获取区域内的聚合点数据。 aggregate_build_data /***创建测试空间点数据库***/ create table tpoint( gid serial pri…

    2023-01-27
    158
  • nebulagraph教程_graph数据结构

    nebulagraph教程_graph数据结构更新历史 在学习过程中,本文持续更新 2021-12-13:更新nebula官方介绍 2021-12-14:更新编译与部署方式,总结importer导入方式 2021-12-15:更新使用用例,常见命

    2023-05-09
    132
  • 数据库基础-事务篇「终于解决」

    数据库基础-事务篇「终于解决」1、事务是什么 事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消。也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个都不做。 2、事…

    2023-02-21
    139

发表回复

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