详解 Spark 各种运行环境的搭建

一、Local 环境

本地模式,即不需要其他任何节点资源就可以在本地执行 Spark 代码的环境;区别于 IDEA 开发时的 local 环境

1. 搭建

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

  • 下载 spark-3.0.0-bin-hadoop3.2.tgz 安装包并上传到虚拟机上的 /opt/software 目录

  • spark-3.0.0-bin-hadoop3.2.tgz 解压缩到 /opt/module 并修改名称

    tar -zxvf spark-3.0.0-bin-hadoop3.2.tgz -C /opt/module
    cd /opt/module
    mv spark-3.0.0-bin-hadoop3.2.tgz spark-local
    
  • 进入 spark-local 目录执行 bin/spark-shell 检查是否搭建成功

    cd /opt/module/spark-local
    bin/spark-shell
    
  • 查看 Web 监控页面:http://hadoop102:4040

2. 操作

  • 命令行工具:

    bin/spark-shell# 进入 scala 命令工具
    sc.textFile("data/word.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect().foreach(println)
    
  • 提交应用:

    bin/spark-submit \
    --class org.apache.spark.examples.SparkPi \
    --master local[2] \
    ./examples/jars/spark-examples_2.12-3.0.0.jar \
    10
    
    • bin/spark-submit 表示提交命令
    • --class 表示要执行程序的主类
    • --master local[2] 表示部署模式,默认为本地模式,数字表示分配的虚拟 CPU 核数量
    • spark-examples_2.12-3.0.0.jar 表示运行的应用类所在的 jar 包
    • 10 表示程序的入口参数,用于设定当前应用的任务数量

二、Standalone 环境

独立部署模式,只使用 Spark 自身节点运行的集群模式,分为 master 和 workers

1. 集群规划

SparkHadoop102Hadoop103Hadoop104
master
worker

2. 搭建

  • 下载 spark-3.0.0-bin-hadoop3.2.tgz 安装包并上传到虚拟机上的 /opt/software 目录

  • spark-3.0.0-bin-hadoop3.2.tgz 解压缩到 /opt/module 并修改名称

    tar -zxvf spark-3.0.0-bin-hadoop3.2.tgz -C /opt/module
    cd /opt/module
    mv spark-3.0.0-bin-hadoop3.2.tgz spark-standalone
    
  • 修改配置文件

    # 1.进入 spark-standalone 的 conf 目录,将 slaves.template 文件更名为 slaves
    cd /opt/module/spark-standalone/conf
    mv slaves.template slaves# 2.在 slaves 文件中添加 worker 节点
    hadoop102
    hadoop103
    hadoop104# 3.将 spark-env.sh.template 文件更名为 spark-env.sh
    mv spark-env.sh.template spark-env.sh# 4.在 spark-env.sh 文件中添加 JAVA_HOME 环境变量和集群对应的 master 节点
    export JAVA_HOME=/opt/module/jdk1.8.0_212
    SPARK_MASTER_HOST=hadoop102
    SPARK_MASTER_PORT=7077 #注意:7077 端口,相当于 hadoop3 内部通信的 8020 端口,此处的端口需要确认自己的 Hadoop 配置# 5.分发 spark-standalone 目录到其他集群节点
    xsync spark-standalone
    
  • 启动集群

    # 在 hadoop102 的 spark-standalone 目录
    cd /opt/module/spark-standalone
    sbin/start-all.sh# 查看进程
    jps
    
  • 查看 Web 监控页面:http://hadoop102:8080

3. 测试

bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://hadoop102:7077 \
./examples/jars/spark-examples_2.12-3.0.0.jar \
10
参数说明示例
–classSpark 程序中包含主函数的类
–masterSpark 程序运行的模式(环境)local[*]、spark://hadoop102:7077、Yarn
–executor-memory 1G指定每个 executor 可用内存为 1G符合集群内存配置即可,具体情况具体分析
–total-executor-cores 2指定所有 executor 使用的 cpu 核数为 2 个
–executor-cores指定每个 executor 使用的 cpu 核数
application-jar打包好的应用 jar,包含依赖。这个 URL 在集群中全局可见。 比如 hdfs://共享存储系统,如果是 file://path ,那么所有的节点的 path 都包含同样的 jar
application-arguments传给 main()方法的参数

4. 配置历史服务

  • 修改并添加配置

    # 1.将 spark-defaults.conf.template 文件更名为 spark-defaults.conf
    cd /opt/module/spark-standalone/conf
    mv spark-defaults.conf.template spark-defaults.conf# 2.在 spark-default.conf 文件中配置日志存储路径
    spark.eventLog.enabled true
    spark.eventLog.dir hdfs://hadoop102:8020/directory # 注意:需要启动 hadoop 集群,HDFS 上的 directory 目录需要提前存在# 3.在 spark-env.sh 文件中添加日志配置
    export SPARK_HISTORY_OPTS="
    -Dspark.history.ui.port=18080 # WEB UI 访问的端口号为 18080
    -Dspark.history.fs.logDirectory=hdfs://hadoop102:8020/directory #历史服务器日志存储路径
    -Dspark.history.retainedApplications=30" 
    # 指定保存 Application 历史记录的个数,如果超过这个值,旧的应用程序信息将被删除,这个是内存中的应用数,而不是页面上显示的应用数# 4.分发配置文件(xsync 为自定义分发脚本,详见“Hadoop生产环境集群搭建”文章)
    xsync conf/
    
  • 启动 Hadoop 集群并创建日志存储目录

    cd /opt/module/hadoop-3.1.3
    sbin/start-dfs.sh
    hadoop fs -mkdir /directory
    
  • 启动 Spark 集群和历史服务

    cd /opt/module/spark-standalone
    sbin/start-all.sh
    sbin/start-history-server.sh
    
  • 提交应用执行

    bin/spark-submit \
    --class org.apache.spark.examples.SparkPi \
    --master spark://hadoop102:7077 \
    ./examples/jars/spark-examples_2.12-3.0.0.jar \
    10 
    
  • 查看历史服务:http://hadoop102:18080

5. 配置高可用

5.1 集群规划
规划Hadoop102Hadoop103Hadoop104
master
worker
zookeeper
5.2 搭建
  • 修改 spark-env.sh 文件配置内容

    cd /opt/module/spark-standalone/conf
    vim spark-env.sh#1.注释如下内容:
    #SPARK_MASTER_HOST=hadoop102
    #SPARK_MASTER_PORT=7077#2.添加如下内容:
    #修改 Master 监控页面默认访问端口 8080 为 8989,避免和 Zookeeper 冲突
    SPARK_MASTER_WEBUI_PORT=8989#Zookeeper配置信息
    export SPARK_DAEMON_JAVA_OPTS="
    -Dspark.deploy.recoveryMode=ZOOKEEPER 
    -Dspark.deploy.zookeeper.url=hadoop102,hadoop103,hadoop104 
    -Dspark.deploy.zookeeper.dir=/spark"
    
  • 分发配置:xsync conf/

  • 启动 Zookeeper 集群

  • 启动 Spark 集群;在 hadoop103 上启动 master 服务

    #hadoop102
    cd /opt/module/spark-standalone
    sbin/start-all.sh#hadoop103
    cd /opt/module/spark-standalone
    sbin/start-master.sh
    
  • 分别查看 hadoop102 和 hadoop103 的 Web 页面:https:://hadoop102:8989https:://hadoop103:8989

  • 提交应用执行

    bin/spark-submit \
    --class org.apache.spark.examples.SparkPi \
    --master spark://hadoop102:7077,hadoop103:7077 \
    ./examples/jars/spark-examples_2.12-3.0.0.jar \
    10
    
  • 模拟 master 下线,保证高可用

    #停止 hadoop102 的 master 进程
    jps
    kill -9 [pid]#分别访问 web 页面查看状态:https:://hadoop102:8989 和 https:://hadoop103:8989
    

三、Yarn 模式

由于 Spark 主要是计算框架,而不是资源调度框架,所以本身提供的资源调度并不是它的强项,因此在生产上多集成 Yarn 使用

1. 搭建

  • 下载 spark-3.0.0-bin-hadoop3.2.tgz 安装包并上传到虚拟机上的 /opt/software 目录

  • spark-3.0.0-bin-hadoop3.2.tgz 解压缩到 /opt/module 并修改名称

    tar -zxvf spark-3.0.0-bin-hadoop3.2.tgz -C /opt/module
    cd /opt/module
    mv spark-3.0.0-bin-hadoop3.2.tgz spark-yarn
  • 修改 hadoop 安装目录下的 etc/hadoop/yarn-site.xml 配置文件并分发到集群其他节点

    <!--是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认
    是 true -->
    <property><name>yarn.nodemanager.pmem-check-enabled</name><value>false</value>
    </property>
    <!--是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认
    是 true -->
    <property><name>yarn.nodemanager.vmem-check-enabled</name><value>false</value>
    </property>
    
  • 修改 Spark 配置文件

    cd /opt/module/spark-yarn/conf#1.将 spark-env.sh.template 文件更名为 spark-env.sh
    mv spark-env.sh.template spark-env.sh
    vim spark-env.sh#2.在 spark-env.sh 文件中添加 JAVA_HOME 和 YARN_CONF_DIR 配置
    export JAVA_HOME=/opt/module/jdk1.8.0_212
    YARN_CONF_DIR=/opt/module/hadoop/etc/hadoop
    
  • 启动 Hadoop 集群

2. 测试

  • 以集群方式提交应用:不会打印结果

    bin/spark-submit \
    --class org.apache.spark.examples.SparkPi \
    --master yarn \
    --deploy-mode cluster \
    ./examples/jars/spark-examples_2.12-3.0.0.jar \
    10
    
  • 以客户端方式提交应用:

    bin/spark-submit \
    --class org.apache.spark.examples.SparkPi \
    --master yarn \
    --deploy-mode client \
    ./examples/jars/spark-examples_2.12-3.0.0.jar \
    10
    

3. 配置历史服务

  • 修改 Spark 配置

    cd /opt/module/spark-yarn/conf#1.将 spark-defaults.conf.template 文件更名为 spark-defaults.conf
    mv spark-defaults.conf.template spark-defaults.conf
    vim spark-defaults.conf#2.在 spark-defaults.conf 文件中配置日志存储路径和 yarn 历史服务器信息
    spark.eventLog.enabled true
    spark.eventLog.dir hdfs://hadoop102:8020/directory #注意:需要启动 hadoop 集群,HDFS 上的目录需要提前存在
    spark.yarn.historyServer.address=hadoop102:18080
    spark.history.ui.port=18080#3.在 spark-env.sh 文件中添加日志配置
    export SPARK_HISTORY_OPTS="
    -Dspark.history.ui.port=18080 
    -Dspark.history.fs.logDirectory=hdfs://hadoop02:8020/directory 
    -Dspark.history.retainedApplications=30"
    
  • 启动历史服务:sbin/start-history-server.sh

  • 提交应用执行并查看历史服务:https://hadoop103:8088

四、其他模式简介

  • K8S&Mesos 模式:https://spark.apache.org/docs/latest/running-on-kubernetes.html

    • Mesos 是 Apache 下的开源分布式资源管理框架
    • Kubernetes(k8s)是目前最为流行的容器管理工具
  • Windows 模式:

    • spark-3.0.0-bin-hadoop3.2.tgz 解压缩到无中文无空格的路径中

    • 执行解压缩文件路径下 bin 目录中的 spark-shell.cmd 文件,启动 Spark 本地环境

    • 编写 Scala 程序执行或在 DOS 命令行窗口中执行提交指令

      spark-submit --class org.apache.spark.examples.SparkPi --master local[2] ../examples/jars/spark-examples_2.12-3.0.0.jar 10
      

六、各模式对比

模式Spark安装机器数需启动的进程所属者应用场景
Local1Spark测试
Standalone3Master及WorkerSpark单独部署
Yarn1Yarn及HDFSHadoop混合部署

七、常用端口号说明

服务端口
Spark 查看当前 Spark-shell 运行任务情况端口号(计算)4040
Spark Master 内部通信服务7077
Standalone 模式下,Spark Master Web 端口号(资源)8080
Spark 历史服务器18080
Hadoop YARN 任务运行情况查看8088

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

力扣hot100:23. 合并 K 个升序链表

23. 合并 K 个升序链表 这题非常容易想到归并排序的思路&#xff0c;俩升序序列合并&#xff0c;可以使用归并的方法。 不过这里显然是一个多路归并排序&#xff1b;包含多个子数组的归并算法&#xff0c;这可以让我们拓展归并算法的思路。 假设n是序列个数&#xff0c;ni是…

yarn 设置淘宝镜像配置

为了提升在中国大陆地区的下载速度&#xff0c;你可以将Yarn的包仓库配置为淘宝镜像。最新的推荐做法是使用npmmirror.com作为镜像源&#xff0c;替代旧的npm.taobao.org。以下是设置Yarn使用淘宝镜像&#xff08;npmmirror.com&#xff09;的步骤&#xff1a; 查询当前镜像配置…

大规模服务治理中etcd的实践与深度应用

导读&#xff1a;随着企业对于服务治理的日益重视&#xff0c;特别是在云原生和微服务架构的广泛应用下&#xff0c;百度小程序团队基于大模型服务治理的实战经验&#xff0c;结合分布式开源KV产品etcd&#xff0c;分享了其核心技术Raft与boltdb的实现原理&#xff0c;并深入剖…

Simulink从0搭建模型07-P8for循环的使用

Simulink从0搭建模型07-P8for循环的使用 今日学习内容1. For Iterator Subsystem模块介绍1.1. 累加器1.2. For Iterator1.3.小结 2. states介绍3. Set next i&#xff08;相当break)学习心得 今日学习内容 b站视频 【Simulink 0基础入门教程 P8 for循环的使用 For Itrator Sub…

基于 Coze 从 0-1 搭建专属 小白的Bot 机器人

基于 Coze 从 0-1 搭建专属 小白的Bot 机器人 ​ 作为一个GIS从业人员&#xff0c;对于AI的使用是必不可少的&#xff0c;在过去的一两年里各种大模型频出&#xff0c;AI技术已经成为GIS领域的一项重要工具&#xff0c;为我们提供了许多强大的功能和解决方案。看到好文章都在介…

【Android】【netd】网络相关调试技巧

网络调试技巧总结 ifconfig ifconfig 查看网卡信息 ifconfig -S tcpdump tcpdump -i any -n icmp 查看流量出入ip addr 上面的log 以及ifcong -S 信息可以知道&#xff0c;当前是从wlan0 网卡请求数据。 iptable iptable 部分指令 //禁止www.baidu.com 网址流量进入&a…

2024广东省赛 G.Menji 和 gcd

题目 #include <bits/stdc.h> using namespace std; #define int long long #define pb push_back #define fi first #define se second #define lson p << 1 #define rson p << 1 | 1 #define ll long long const int maxn 1e6 5, inf 1e12, maxm 4e4 …

Codeforces Round 909 (Div. 3) E. Queue Sort(模拟 + 贪心之找到了一个边界点)

弗拉德找到了一个由 n 个整数组成的数组 a &#xff0c;并决定按不递减的顺序排序。 为此&#xff0c;弗拉德可以多次执行下面的操作&#xff1a; 提取数组的第一个元素并将其插入末尾&#xff1b; 将个元素与前一个元素对调&#xff0c;直到它变成第一个元素或严格大于前一个…

国际常用的编程博客网址:技术资源与学习平台

常用的编程博客网址&#xff1a;技术资源与学习平台 引言 编程博客是开发者获取最新技术资讯、学习编程知识、分享个人经验的重要平台。以下是一些广受推崇的编程博客网址&#xff0c;它们覆盖了从前端到后端、从理论到实践的各个方面。 编程博客集合 Medium - Programming …

【测评】雨云香港三区云服务器,2核2G 5兆,仅需38元/月

写在前面 雨云香港三区云服务器&#xff0c;高性能的 AMD EPYC 处理器 企业级 NVME SSD 高性能云服务器。2核2G 10兆 400G防御&#xff0c;仅需38元/月&#xff0c;年付7折仅 319.2元/年。 官网&#xff1a;https://www.rainyun.com 本次测评服务器配置如下&#xff1a; C…

2023 年网络等级保护考试题库及答案

一、单项选择题 1.在等保 1.0 的根本要求中&#xff0c;网络设备防护的内容归属于网络安全&#xff0c;在等保 2.0 中将其归属到〔〕。 A 安全通信网络 B 安全区域边界 C 安全计算环境 D 安全治理中心 答案&#xff1a;c 2.应成立指导和治理网络安全工作的委员会或领导小组&…

局域网,广域网,WLAN,WiFi,互联网(Internet)

文章目录 前言局域网&#xff08;Local Area Network, LAN&#xff09;特点 广域网&#xff08;Wide Area Network, WAN&#xff09;WLAN&#xff08;Wireless Local Area Network&#xff09;WiFi互联网&#xff08;Internet&#xff09;联系与比较总结 前言 网络知识介绍 局…

【JavaScript】P1 JavaScript 是什么、其组成

1.1 JavaScript 是什么 JavaScript 是一种运行在浏览器的编程语言&#xff0c;用于实现人机交互效果。其作用包含&#xff1a; 监听用户行为并指导网页做出反馈。针对表单数据进行合法性验证。获取后台数据&#xff0c;渲染到前端界面。服务器编程&#xff0c;最后端的事情&a…

什么是老板和工程师都喜欢的FMEA?——FMEA软件

免费试用FMEA软件-免费版-SunFMEA 在企业管理与工程技术领域&#xff0c;FMEA&#xff08;潜在失效模式与效应分析&#xff09;早已不仅仅是一个概念或工具&#xff0c;它更是一种思维方式和团队协作的精髓。那么&#xff0c;究竟什么才是老板和工程师都喜欢的FMEA呢&#xff…

类文件接口和虚拟机加载机制

这里写目录标题 Class类文件的结构1&#xff09;魔数与Class文件的版本2&#xff09;常量池3&#xff09;访问标志4&#xff09;类索引、父类索引与接口索引集合5&#xff09;字段表集合6&#xff09;方法表集合7&#xff09;属性表集合 类加载机制加载验证1&#xff09;文件格…

安卓ADB通过WIFI无线连接手机[通过无线安装APK]

安卓ADB通过无线连接手机 本文摘录于&#xff1a;https://www.cnblogs.com/zhuxibo/p/14261117.html只是做学习备份之用&#xff0c;绝无抄袭之意&#xff0c;有疑惑请联系本人&#xff01; 别人给的操作确实可行,我这里实操记录如下: AdministratorpiaoranPC MINGW64 /e/Wor…

基于h5和大数据的游戏数据型网站-计算机毕业设计源码30844

摘 要 在目前的形势下&#xff0c;科技力量已成为我国的主要竞争力。而在科学技术领域&#xff0c;计算机的使用逐渐达到成熟&#xff0c;无论是从国家到企业再到家庭&#xff0c;计算机都发挥着其不可替代的作用&#xff0c;可以说计算机的可用领域遍及生活、工作的各个方面。…

找到可靠的APP外包开发公司

找到可靠的APP外包开发公司需要经过一系列细致的筛选和评估。以下是寻找和选择一家合适的APP外包开发公司的步骤和注意事项。选择一家可靠的APP外包开发公司需要经过详细的研究和多方面的评估&#xff0c;确保公司能够满足项目需求并提供高质量的服务。北京木奇移动技术有限公司…

【乐吾乐3D可视化组态编辑器】灯光

灯光 在场景属性中&#xff0c;我们介绍了HDR&#xff0c;它的作用是为场景提供环境光&#xff0c;如果网格设置了PBR材质&#xff0c;那么网格表面就会反射出光照效果。这是为场景提供环境光的手段之一&#xff0c;但是它也有缺陷&#xff0c;一是只对PBR材质有效&#xff0c…

实用新型专利申请被驳回原因

实用新型专利作为知识产权的重要组成部分&#xff0c;对推动技术创新和产业发展具有重要意义。然而&#xff0c;在申请实用新型专利的过程中&#xff0c;有时会遇到被驳回的情况。 实用新型专利被驳回的一个常见原因是技术方案不具备新颖性、创造性和实用性等专利授权条件。专利…