Spark多模式部署实战(从Local到YARN一站式通关)
1. 环境准备从零搭建Spark实验环境第一次接触Spark的朋友可能会被各种术语搞晕其实部署Spark就像组装电脑一样简单。我建议使用Ubuntu 18.04作为实验系统实测下来兼容性最好。下面是详细的环境清单虚拟机配置VMware Workstation 16 或 VirtualBox 6.1分配至少4GB内存基础软件栈JDK 1.8注意必须是Oracle JDKOpenJDK可能遇到奇怪问题Python 3.6推荐Anaconda3管理环境Hadoop 2.7.7仅YARN模式需要踩坑提醒我曾因为使用OpenJDK 11导致Spark Shell无法启动报错信息非常隐晦。建议用java -version确认输出包含Java(TM) SE Runtime Environment安装Hadoop时有个小技巧先单独测试HDFS和YARN是否正常工作。我习惯用以下命令验证hdfs dfs -mkdir /test hdfs dfs -put /etc/hosts /test hadoop jar /path/to/hadoop-mapreduce-examples.jar wordcount /test/hosts /output2. Spark安装与Local模式实战2.1 版本选择与安装Spark官网提供了多个版本新手常被各种打包版本搞懵。这里直接给结论学习环境选Pre-built for Apache Hadoop 2.7版本生产环境选对应Hadoop版本的Without Hadoop版本安装步骤其实就三步tar -xzf spark-3.3.1-bin-hadoop2.tgz -C /opt cd /opt ln -s spark-3.3.1-bin-hadoop2 spark echo export SPARK_HOME/opt/spark ~/.bashrc2.2 Local模式快速验证Local模式是Spark的玩具车模式适合快速验证代码。启动交互式环境# Scala版本 spark-shell --master local[2] # Python版本 pyspark --master local[2]这里的local[2]表示使用2个线程相当于模拟两个CPU核心。做个简单测试在spark-shell中val textFile sc.textFile(file:///etc/hosts) textFile.filter(_.contains(localhost)).count()实用技巧如果看到满屏INFO日志可以修改conf/log4j.properties把log4j.rootCategory改为WARN3. 伪分布式Standalone模式部署3.1 关键配置详解Standalone模式是Spark自带的集群模式配置文件主要修改两个地方spark-env.shexport SPARK_MASTER_HOSTyour_hostname export SPARK_WORKER_CORES2 export SPARK_WORKER_MEMORY4gworkers旧版本叫slaveslocalhost3.2 服务启停与管理启动集群就像开机关机一样简单# 一键启停 sbin/start-all.sh sbin/stop-all.sh # 单独控制组件 sbin/start-master.sh sbin/start-worker.sh spark://master:7077验证集群状态有两种方式命令行curl http://localhost:8080Web UI浏览器访问http://your_ip:80803.3 提交作业实战用Standalone模式运行WordCountspark-submit --master spark://your_host:7077 \ --class org.apache.spark.examples.SparkPi \ $SPARK_HOME/examples/jars/spark-examples_2.12-3.3.1.jar \ 100遇到过的一个典型报错WARN TaskSchedulerImpl: Initial job has not accepted any resources这通常是资源不足导致的解决方法要么增加worker要么调小--executor-memory参数。4. 集成YARN集群实战4.1 前置条件检查YARN模式下需要确保Hadoop集群正常运行start-yarn.shHADOOP_CONF_DIR环境变量已设置Spark配置中包含YARN支持验证YARN是否就绪yarn node -list4.2 配置调优要点在spark-defaults.conf中添加spark.yarn.jars hdfs:///spark/jars/* spark.driver.memory 2g spark.executor.instances 3建议提前上传Spark依赖包到HDFShdfs dfs -mkdir /spark hdfs dfs -put $SPARK_HOME/jars/* /spark/jars/4.3 YARN作业提交提交作业时有个部署模式的选择# 客户端模式日志直接输出到控制台 spark-submit --master yarn --deploy-mode client ... # 集群模式适合生产环境 spark-submit --master yarn --deploy-mode cluster ...常见问题处理内存不足在yarn-site.xml中调整yarn.nodemanager.resource.memory-mb类冲突添加--conf spark.executor.extraClassPath/path/to/libs5. 三种模式对比与选型建议通过实际测试对比8核CPU/16GB内存环境模式启动速度资源隔离适合场景最大并发Local3秒无开发调试线程数Standalone~30秒一般专用Spark集群节点×核数YARN~1分钟完善混合部署环境队列配额个人经验法则本地开发用Local模式测试环境用Standalone省资源生产环境必选YARN/Mesos最后分享一个排查问题的万能命令# 查看详细日志YARN模式 yarn logs -applicationId app_id | less

相关新闻

Python爬虫(2):续(1)用PyAutoGUI玩转小游戏自动化(实例)

Python爬虫(2):续(1)用PyAutoGUI玩转小游戏自动化(实例)

大家好,本次文章主要针对于对Python爬虫(1)中内容的实践[后续]:使用pyautogui完成一些简单小游戏的自动化,大家可以参考本次案例自行去写一些简单代码试验一下,多多创新、发散思维。技术仅用于学习:本技术仅用于 Pytho…

2026/7/16 8:41:55 阅读更多 →
Deepseek V4:打破AI代码助手枷锁,提升工程开发效率

Deepseek V4:打破AI代码助手枷锁,提升工程开发效率

上周在调试一个复杂的多模块项目时,我遇到了一个让人头疼的问题:代码逻辑看似正确,但运行时总在某些边界条件下出现难以追踪的异常。尝试了几个主流的大模型助手后,要么是上下文长度不够,要么是对代码逻辑的理解停留在…

2026/7/16 8:41:55 阅读更多 →
mobaxterm输入命令太长,导致行首覆盖的解决办法

mobaxterm输入命令太长,导致行首覆盖的解决办法

现象如上:为什么会发生“从头覆盖”?开发板内核 TTY 驱动与 MobaXterm 终端软件存在终端显示宽度配置不匹配问题,具体机制如下:开发板内核 TTY 驱动内置固定行宽限制,单行最大可显示字符数为 80;当单行输入…

2026/7/16 8:41:55 阅读更多 →

最新新闻

3分钟掌握Briss-2.0:智能PDF裁剪工具,让电子阅读体验提升200%

3分钟掌握Briss-2.0:智能PDF裁剪工具,让电子阅读体验提升200%

3分钟掌握Briss-2.0:智能PDF裁剪工具,让电子阅读体验提升200% 【免费下载链接】Briss-2.0 Briss 2.0 is intended to be a GUI Update for the Briss PDF cropping tool. 项目地址: https://gitcode.com/gh_mirrors/br/Briss-2.0 Briss-2.0是一款…

2026/7/16 14:09:43 阅读更多 →
cuSignal容器化部署:Docker与Kubernetes中的最佳实践

cuSignal容器化部署:Docker与Kubernetes中的最佳实践

cuSignal容器化部署:Docker与Kubernetes中的最佳实践 【免费下载链接】cusignal cuSignal - RAPIDS Signal Processing Library 项目地址: https://gitcode.com/gh_mirrors/cu/cusignal cuSignal作为RAPIDS Signal Processing Library的核心组件,…

2026/7/16 14:09:43 阅读更多 →
暗黑破坏神2存档编辑器d2s-editor:Web端终极修改工具完整指南

暗黑破坏神2存档编辑器d2s-editor:Web端终极修改工具完整指南

暗黑破坏神2存档编辑器d2s-editor:Web端终极修改工具完整指南 【免费下载链接】d2s-editor 项目地址: https://gitcode.com/gh_mirrors/d2/d2s-editor 对于每一位热爱《暗黑破坏神2》的玩家来说,游戏存档的管理和定制是提升游戏体验的关键环节。…

2026/7/16 14:07:42 阅读更多 →
企业微信API二次开发:万级并发回调下的极致幂等性设计与防重放架构实战

企业微信API二次开发:万级并发回调下的极致幂等性设计与防重放架构实战

在企业微信 API 的集成架构中,Webhook 事件回调是触发内部系统状态流转的唯一入口。从审批流的状态变更到客户标签的修改,企业微信官方服务器会在事件发生的毫秒级内,向开发者配置的公网 URL 发送加密的 POST 报文。 然而,在分布式…

2026/7/16 14:07:42 阅读更多 →
PM2实战:从零到一构建高可用Node.js应用集群

PM2实战:从零到一构建高可用Node.js应用集群

1. 为什么需要PM2管理Node.js应用?刚接触Node.js开发时,我习惯直接用node app.js启动服务。直到有次半夜收到报警短信——线上服务挂了,连滚带爬爬起来重启服务器的经历,让我彻底明白了进程管理工具的重要性。Node.js的单线程架构…

2026/7/16 14:05:41 阅读更多 →
Apollo Save Tool:你的PS4游戏存档终极管理方案

Apollo Save Tool:你的PS4游戏存档终极管理方案

Apollo Save Tool:你的PS4游戏存档终极管理方案 【免费下载链接】apollo-ps4 Apollo Save Tool (PS4) 项目地址: https://gitcode.com/gh_mirrors/ap/apollo-ps4 还在为PS4游戏存档丢失而烦恼吗?Apollo Save Tool正是你需要的专业PS4存档管理解决…

2026/7/16 14:05:41 阅读更多 →

日新闻

HarmonyOs应用《重要日》开发第6篇 - 数据持久化存储

HarmonyOs应用《重要日》开发第6篇 - 数据持久化存储

本篇深入剖析 ImportantDays 项目的数据持久化方案——基于 HarmonyOS ArkData 模块的 Preferences 轻量级存储,以及 PreferenceUtil 工具类的单例封装。一、HarmonyOS 数据存储方案对比 HarmonyOS 提供了多种数据存储方案:方案适用场景特点Preferences轻…

2026/7/16 0:08:27 阅读更多 →
Python实现跨境电商商品图批量翻译教程

Python实现跨境电商商品图批量翻译教程

一、问题引入做跨境电商的卖家朋友,你是否遇到过这样的困扰?每次上架新品到亚马逊、Shopee或Lazada等平台,都需要处理大量商品图片的多语言版本。比如上架200款衣服,每款需要翻译成英语、日语、韩语等5种语言,这意味着…

2026/7/16 0:08:27 阅读更多 →
鸿蒙 7 新特性实战①:从 0 到 1 掌握 @kit 标准导入规范

鸿蒙 7 新特性实战①:从 0 到 1 掌握 @kit 标准导入规范

从鸿蒙 7(HarmonyOS NEXT)开始,官方全面完成了从 ohos.* 零散模块到 kit.* 领域套件的体系重构。对开发者来说,第一道门槛不是 API 用法变化,而是统一的导入规范——旧体系默认导入、解构导入混用的混乱局面被彻底终结…

2026/7/16 0:10:29 阅读更多 →

周新闻

互联网大厂 Java 求职面试:燕双非的搞笑回答与技术探讨

互联网大厂 Java 求职面试:燕双非的搞笑回答与技术探讨

互联网大厂 Java 求职面试:燕双非的搞笑回答与技术探讨 在一个阳光明媚的上午,互联网大厂的面试官坐在桌前,准备迎接他的面试候选人——燕双非,一个以搞笑和幽默著称的程序员。第一轮提问 面试官:燕双非,作…

2026/7/15 21:09:01 阅读更多 →
车载以太网PMA测试设备选型:示波器、VNA、信号源3类仪器关键参数与预算评估

车载以太网PMA测试设备选型:示波器、VNA、信号源3类仪器关键参数与预算评估

车载以太网PMA测试设备选型:示波器、VNA、信号源3类仪器关键参数与预算评估在智能驾驶和车联网技术快速发展的今天,车载以太网作为新一代车载网络的核心传输技术,其物理层性能直接决定了数据传输的可靠性和稳定性。1000BASE-T1作为当前主流的…

2026/7/15 19:42:20 阅读更多 →
VSCode EIDE 插件 2.0:APM32/STM32 项目迁移实战,5步完成Keil工程转换

VSCode EIDE 插件 2.0:APM32/STM32 项目迁移实战,5步完成Keil工程转换

VSCode EIDE 插件 2.0:APM32/STM32 项目迁移实战指南嵌入式开发领域正经历一场工具链的静默革命。当传统Keil用户首次打开VSCode的扩展市场搜索EIDE时,往往会惊讶于这个看似简单的插件竟能重构十余年的开发习惯。本文将揭示如何用五个精准步骤&#xff0…

2026/7/15 17:52:08 阅读更多 →

月新闻