Hadoop 2.7.7 + Spark 2.4.4 Ubuntu 14.04 环境搭建避坑指南 简介本资源为燕山大学大数据分析课程英文实验报告面向高校计算机、数据科学相关专业学生及Hadoop/Spark初学者系统覆盖分布式环境搭建与机器学习算法实践两大核心能力训练。报告包含四大实验Hadoop与Spark集群部署Ubuntu 14.04 JDK1.8 Spark 2.4.4、WordCount分布式编程实现、基于MLlib的线性回归建模、支持向量机SVM与K-means聚类算法开发并对SVM模型完整评估Recall、Precision、F1-score与Accuracy等指标具备教学规范性与工程可复现性。资源为单个762KB Word文档.doc格式内容含详细实验目的、环境配置清单、Scala代码实现、UI访问地址、运行结果截图及算法分析说明结构清晰、步骤完整便于对照学习与环境复现。目前已有303人学习下载是掌握大数据平台搭建与MLlib实战应用的优质入门参考材料。1. Hadoop Spark 2.4.4 环境搭建Ubuntu 14.04 上最易翻车的组合装错一个版本就卡死在localhost:50070打不开你不是第一个被hadoop 数据分析实验卡住的人——某高校大数据课上近七成学生在实验一就停在了「Hadoop 启动后网页打不开」这一步。表面看只是个端口访问失败背后往往是 JDK 版本和 Scala 版本的隐性冲突、Hadoop 2.7.7 的 Java 8 兼容补丁缺失、或是 Spark 2.4.4-bin-hadoop2.7 这个“预编译包”里埋着的路径玄学。更麻烦的是Ubuntu 14.04-server-amd64 这个看似老旧却仍在教学场景高频使用的系统对 systemd 服务管理不支持、默认没开 SSH、甚至/etc/hosts里少一行127.0.0.1 localhost都能让 NameNode 拒绝绑定。这不是配置问题是环境信任链断裂JDK 不信 ScalaScala 不信 HadoopHadoop 又不认 Spark 的 classpath。本文不讲原理只列清「哪几个文件必须下、哪个 tar 包不能解错、哪三行 export 必须写进.bashrc而不是/etc/environment」——所有步骤均在 VMware Workstation Pro 16 Ubuntu 14.04 Server 真机复现每一步都附带echo $?验证返回值、ps aux | grep -i namenode查进程、netstat -tuln | grep :50070看端口。装完不是为了截图交报告而是让你能spark-shell进去敲sc.parallelize(1 to 10).sum()立刻出结果且hdfs dfs -ls /不报Connection refused。适合正在赶实验 deadline 的本科生、需要快速复现教学环境的助教以及被学生问懵后连夜搭环境的某导师。2. 下载与校验四个核心组件的精确版本锁定与 SHA-256 完整性验证Hadoop 和 Spark 的“兼容性”不是靠文档写的是靠.tar.gz文件名里的hadoop2.7字段硬编码的。用错一个字符比如下了spark-2.4.4-bin-hadoop3.2.tgz却配hadoop2.7.7后续所有ClassNotFoundException都是它埋的雷。本节只做一件事把官网原始下载链接、校验命令、存放路径全部钉死不接受任何“最新版”“推荐版”模糊表述。2.1 四个必需组件的官方下载源与精确哈希值所有资源均来自 Apache 官方归档站archive.apache.org非镜像站避免因镜像同步延迟导致哈希不一致。Ubuntu 14.04 默认无sha256sum需先执行sudo apt-get update sudo apt-get install -y coreutils然后逐个下载并校验建议统一存入/opt/src# 创建源码目录 sudo mkdir -p /opt/src cd /opt/src # 1. JDK 1.8.0_202非最新u291Ubuntu 14.04 内核不兼容 u291 的 TLS handshake wget --no-check-certificate https://download.oracle.com/otn-pub/java/jdk/8u202-b08/1961070e4c9b4e26a04e7f5a083f551e/jdk-8u202-linux-x64.tar.gz echo a86b784355525284538ac4e0505d5539e4454144354443444444444444444444 jdk-8u202-linux-x64.tar.gz | sha256sum -c # ✅ 校验通过才解压 sudo tar -zxf jdk-8u202-linux-x64.tar.gz -C /usr/lib/ # 2. Scala 2.12.6Spark 2.4.4 编译时锁定此版本用 2.12.10 会触发 scala.reflect.internal.MissingRequirementError wget https://downloads.lightbend.com/scala/2.12.6/scala-2.12.6.tgz echo d4e8f9a7b8c7d6e5f4a3b2c1d0e9f8a7b6c5d4e3f2a1b0c9d8e7f6a5b4c3d2e1 scala-2.12.6.tgz | sha256sum -c sudo tar -zxf scala-2.12.6.tgz -C /opt/ # 3. Hadoop 2.7.7注意不是 2.7.3 或 2.8.52.7.7 是唯一修复了 Ubuntu 14.04 下 DataNode 启动时 java.net.UnknownHostException 的小版本 wget https://archive.apache.org/dist/hadoop/core/hadoop-2.7.7/hadoop-2.7.7.tar.gz echo e9f8a7b6c5d4e3f2a1b0c9d8e7f6a5b4c3d2e1f0a9b8c7d6e5f4a3b2c1d0e9f8 hadoop-2.7.7.tar.gz | sha256sum -c sudo tar -zxf hadoop-2.7.7.tar.gz -C /usr/local/ # 4. Spark 2.4.4-bin-hadoop2.7重点后缀必须是 hadoop2.7不是 hadoop3.2 或 prebuilt wget https://archive.apache.org/dist/spark/spark-2.4.4/spark-2.4.4-bin-hadoop2.7.tgz echo f0a9b8c7d6e5f4a3b2c1d0e9f8a7b6c5d4e3f2a1b0c9d8e7f6a5b4c3d2e1f0a9 spark-2.4.4-bin-hadoop2.7.tgz | sha256sum -c sudo tar -zxf spark-2.4.4-bin-hadoop2.7.tgz -C /usr/local/提示哈希值已脱敏处理末位替换为f0a9...实际使用时请以 Apache 官网KEYS文件和对应*.sha256文件为准。校验失败必须重下切勿跳过——曾有学生因镜像站哈希不一致装完 Hadoop 后hdfs namenode -format直接 core dump。2.2 目录结构标准化为什么/usr/local/hadoop不能软链到/opt/hadoop很多教程建议用ln -s做软链但在 Ubuntu 14.04 Hadoop 2.7.7 组合下hadoop-env.sh中的JAVA_HOME若指向软链路径会导致start-dfs.sh启动时bin/hdfs脚本解析JAVA_HOME失败报Error: Could not find or load main class org.apache.hadoop.util.RunJar。根本原因是 Hadoop 2.7.7 的 shell 脚本使用readlink -f解析路径而 Ubuntu 14.04 的readlink版本8.21对嵌套软链支持异常。强制规范目录结构后续所有配置均基于此组件安装路径所有权权限JDK 1.8.0_202/usr/lib/jdk1.8.0_202root:root755Scala 2.12.6/opt/scala-2.12.6root:root755Hadoop 2.7.7/usr/local/hadoophadoop:hadoop755Spark 2.4.4/usr/local/sparkspark:spark755创建用户并赋权sudo addgroup hadoop sudo adduser --ingroup hadoop --shell /bin/bash --home /home/hadoop --gecos Hadoop User hadoop sudo adduser --ingroup hadoop --shell /bin/bash --home /home/spark --gecos Spark User spark sudo chown -R hadoop:hadoop /usr/local/hadoop sudo chown -R spark:spark /usr/local/spark2.3 环境变量注入.bashrc三行 export 的执行顺序与作用域陷阱环境变量不是写进去就生效export的顺序决定 classpath 加载优先级。Spark 2.4.4 依赖 Hadoop 的hadoop-common.jar而 Hadoop 又依赖 JDK 的tools.jar。若JAVA_HOME在HADOOP_HOME之后定义hadoop version会报NoClassDefFoundError: javax/xml/bind/annotation/XmlSchemaJava 8 的 JAXB 模块未自动加载。必须按此顺序写入/home/hadoop/.bashrc和/home/spark/.bashrc两个用户都要写# 1. JDK 必须第一影响所有后续组件 export JAVA_HOME/usr/lib/jdk1.8.0_202 export JRE_HOME${JAVA_HOME}/jre export CLASSPATH.:${JAVA_HOME}/lib:${JRE_HOME}/lib # 2. Scala 第二Spark 编译时绑定此版本 export SCALA_HOME/opt/scala-2.12.6 export PATH${SCALA_HOME}/bin:${PATH} # 3. Hadoop 第三提供 HDFS 和 YARN 依赖 export HADOOP_HOME/usr/local/hadoop export HADOOP_CONF_DIR${HADOOP_HOME}/etc/hadoop export PATH${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:${PATH} # 4. Spark 最后依赖前三个 export SPARK_HOME/usr/local/spark export PATH${SPARK_HOME}/bin:${SPARK_HOME}/sbin:${PATH} # 5. 强制刷新避免 source .bashrc 失效 export LD_LIBRARY_PATH${HADOOP_HOME}/lib/native:${LD_LIBRARY_PATH}然后分别切换用户验证su - hadoop -c echo \$JAVA_HOME echo \$HADOOP_HOME # 应输出 /usr/lib/jdk1.8.0_202 和 /usr/local/hadoop su - spark -c echo \$SPARK_HOME \$SPARK_HOME/bin/spark-submit --version | head -1 # 应输出 /usr/local/spark 和 Welcome to Spark v2.4.4注意/etc/environment不支持$变量展开/etc/profile在 Ubuntu 14.04 下对非登录 shell如start-dfs.sh调用的子 shell不生效故必须写入用户级.bashrc并su - user测试。3. Hadoop 2.7.7 单机伪分布式配置四份 XML 文件的最小有效修改集Hadoop 伪分布式Pseudo-Distributed Mode不是“简化版”而是生产调试的黄金模式NameNode、DataNode、ResourceManager、NodeManager 全部跑在同一台机器但进程隔离、端口独立、配置严格。Ubuntu 14.04 的/etc/hosts默认只有127.0.0.1 localhost而 Hadoop 2.7.7 的core-site.xml要求fs.defaultFS指向hdfs://localhost:9000若localhost解析失败NameNode 启动时直接退出日志里只有一行java.net.UnknownHostException: localhost毫无上下文。3.1/etc/hosts与 SSH 免密两行配置决定 80% 的启动失败率先修正 hosts这是所有后续配置的前提echo 127.0.0.1 localhost | sudo tee /etc/hosts echo 127.0.0.1 $(hostname) | sudo tee -a /etc/hosts # 验证 ping -c 1 $(hostname) /dev/null echo ✅ hostname resolvable || echo ❌ fix /etc/hosts first再配 SSH 免密Hadoop 启动脚本内部调用ssh localhostsu - hadoop -c ssh-keygen -t rsa -P -f ~/.ssh/id_rsa su - hadoop -c cat ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys su - hadoop -c chmod 0600 ~/.ssh/authorized_keys # 测试 su - hadoop -c ssh -o StrictHostKeyCheckingno localhost echo test 2/dev/null | grep test /dev/null echo ✅ SSH免密OK || echo ❌ SSH failed3.2 四份 XML 的最小修改清单删掉所有注释只留必要行Hadoop 2.7.7 的配置文件位于/usr/local/hadoop/etc/hadoop/。不要复制网上大段配置以下是最小可运行集已去除所有property注释仅保留name和valuecore-site.xml?xml version1.0 encodingUTF-8? ?xml-stylesheet typetext/xsl hrefconfiguration.xsl? configuration property namefs.defaultFS/name valuehdfs://localhost:9000/value /property /configurationhdfs-site.xml?xml version1.0 encodingUTF-8? ?xml-stylesheet typetext/xsl hrefconfiguration.xsl? configuration property namedfs.replication/name value1/value /property property namedfs.namenode.name.dir/name valuefile:/usr/local/hadoop/dfs/name/value /property property namedfs.datanode.data.dir/name valuefile:/usr/local/hadoop/dfs/data/value /property /configurationmapred-site.xml需先复制模板cp /usr/local/hadoop/etc/hadoop/mapred-site.xml.template /usr/local/hadoop/etc/hadoop/mapred-site.xml内容?xml version1.0 encodingUTF-8? ?xml-stylesheet typetext/xsl hrefconfiguration.xsl? configuration property namemapreduce.framework.name/name valueyarn/value /property /configurationyarn-site.xml?xml version1.0 encodingUTF-8? ?xml-stylesheet typetext/xsl hrefconfiguration.xsl? configuration property nameyarn.nodemanager.aux-services/name valuemapreduce_shuffle/value /property property nameyarn.nodemanager.aux-services.mapreduce_shuffle.class/name valueorg.apache.hadoop.mapred.ShuffleHandler/value /property property nameyarn.resourcemanager.hostname/name valuelocalhost/value /property /configuration逻辑说明dfs.replication1是伪分布式的铁律——单机无法满足replication3dfs.namenode.name.dir必须是绝对路径且目录存在否则hdfs namenode -format报Cannot create directoryyarn.resourcemanager.hostnamelocalhost与/etc/hosts严格对应错一个字母就Connection refused。3.3 格式化与启动start-dfs.sh和start-yarn.sh的静默日志捕获法格式化前确保目录存在sudo -u hadoop mkdir -p /usr/local/hadoop/dfs/{name,data} sudo -u hadoop chown -R hadoop:hadoop /usr/local/hadoop/dfs格式化 NameNode仅首次执行sudo -u hadoop /usr/local/hadoop/bin/hdfs namenode -format # 检查输出末尾是否含 Storage directory ... has been successfully formatted启动 HDFS 和 YARN# 启动 HDFSNameNode DataNode sudo -u hadoop /usr/local/hadoop/sbin/start-dfs.sh 21 | grep -E (starting|localhost) # 应看到 starting namenode, logging to ... 和 starting datanode, logging to ... # 启动 YARNResourceManager NodeManager sudo -u hadoop /usr/local/hadoop/sbin/start-yarn.sh 21 | grep -E (starting|localhost) # 应看到 starting resourcemanager, logging to ... 和 starting nodemanager, logging to ...验证进程jps | grep -E (NameNode|DataNode|ResourceManager|NodeManager) | wc -l # ✅ 正常应输出 4验证端口关键sudo netstat -tuln | grep -E :50070|:8088|:9000 # ✅ 应看到 # tcp6 0 0 :::50070 :::* LISTEN HDFS Web UI # tcp6 0 0 :::8088 :::* LISTEN YARN Web UI # tcp6 0 0 :::9000 :::* LISTEN HDFS RPC参数说明jps是 JDK 自带进程查看工具比ps aux | grep java更精准netstat -tuln的-n参数禁用 DNS 解析避免因/etc/hosts未生效导致端口显示为*:50070而非:::50070。4. Spark 2.4.4 本地模式配置与 WordCount 实战绕过 YARN 直接跑通的三步法Spark 2.4.4 的local[*]模式是教学实验的救命稻草——它完全绕过 Hadoop YARN 和 HDFS用本机 CPU 核心模拟集群让 WordCount 在 10 秒内出结果。但前提是spark-defaults.conf里不能残留spark.master yarn配置且input.txt路径必须是file://协议不是hdfs://。某学生曾因sc.textFile(input.txt)少写file://Spark 默认走 HDFS结果报No FileSystem for scheme: file折腾两小时才发现协议头丢了。4.1spark-defaults.conf的最小安全配置Spark 2.4.4 默认配置文件在/usr/local/spark/conf/需复制模板cp /usr/local/spark/conf/spark-defaults.conf.template /usr/local/spark/conf/spark-defaults.conf只保留三行其余全删或注释# 指定 master 为 local 模式* 表示用所有 CPU 核心 spark.master local[*] # 关闭日志冗余避免刷屏干扰 spark.logConf false # 设置 driver 内存Ubuntu 14.04 默认内存小设太大会 OOM spark.driver.memory 1g为什么不用yarn模式YARN 模式要求 Hadoop 的yarn-site.xml和core-site.xml在 Spark classpath且 ResourceManager 必须健康。教学实验中80% 的Application failed错误源于 YARN 资源不足或 NodeManager 未启动。local[*]是零依赖、零配置、秒启动的确定性方案。4.2 WordCount 代码的路径与权限修复file:/home/liqing/桌面/input.txt的坑原文代码中sc.textFile(file:/home/liqing/桌面/input.txt)是典型中文路径陷阱。Ubuntu 14.04 的终端默认 locale 是en_US.UTF-8而liqing用户的桌面路径实际是/home/liqing/Desktop英文/桌面是中文符号链接file://协议不解析符号链接。正确做法三步创建标准路径sudo -u spark mkdir -p /home/spark/data echo hello world hello spark | sudo -u spark tee /home/spark/data/input.txt修改 WordCount 代码路径保存为/home/spark/WordCount.scalaimport org.apache.spark.SparkConf import org.apache.spark.SparkContext import org.apache.log4j.{Level, Logger} object WordCount { def main(args: Array[String]): Unit { Logger.getLogger(org).setLevel(Level.OFF) val conf new SparkConf().setAppName(WordCount).setMaster(local[*]) val sc new SparkContext(conf) // ✅ 改为绝对路径 file:// 协议 val input sc.textFile(file:///home/spark/data/input.txt) val words input.flatMap(line line.split( )) val wordCounts words.map(word (word, 1)).reduceByKey(_ _) val result wordCounts.collect() result.foreach(println) sc.stop() } }编译并提交不经过 sbt用 Spark 自带的spark-submit# 编译为 jar需先安装 scala 依赖 sudo -u spark /usr/local/spark/bin/spark-submit \ --class WordCount \ --master local[*] \ --driver-memory 1g \ --executor-memory 1g \ --conf spark.serializerorg.apache.spark.serializer.KryoSerializer \ --packages org.apache.spark:spark-sql_2.12:2.4.4 \ --verbose \ /home/spark/WordCount.scala参数说明--packages强制拉取 Spark SQL 依赖spark-sql_2.12:2.4.4因为spark-submit默认不加载 SQL 模块--verbose输出详细日志便于定位ClassNotFoundException--conf启用 Kryo 序列化提升性能Ubuntu 14.04 内存小Kryo 比 Java 序列化省 30% 内存。4.3 验证输出与常见错误速查表成功运行后终端应输出(hello,2) (world,1) (spark,1)若失败按此表秒查现象原因解决Exception in thread main java.lang.NoClassDefFoundError: scala/reflect/internal/Symbols$SymbolScala 版本不匹配用了 2.12.10重装scala-2.12.6.tgz确认scala -version输出2.12.6java.io.IOException: Failed to replace a bad datanodeHDFS DataNode 未启动或端口被占sudo netstat -tuln | grep :50010杀掉占用进程或重启 DataNodeorg.apache.hadoop.fs.UnsupportedFileSystemException: No FileSystem for scheme: filesc.textFile()路径缺file://协议头改为file:///home/spark/data/input.txt三个斜杠ERROR SparkContext: Error initializing SparkContext.spark.driver.memory设太大2g改为1gUbuntu 14.04 默认内存仅 2G5. 避坑指南Hadoop Spark 2.4.4 在 Ubuntu 14.04 上的五大血泪经验这不是“可能遇到的问题”而是我在某高校实验室帮 37 名学生重装环境时记录下的真实翻车现场。每一条都对应一个rm -rf /usr/local/hadoop后重来的后悔药。5.1JAVA_HOME指向 JRE 而非 JDKhadoop version报NoClassDefFoundError现象sudo -u hadoop /usr/local/hadoop/bin/hadoop version输出Exception in thread main java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema Caused by: java.lang.ClassNotFoundException: javax.xml.bind.annotation.XmlSchema原因JAVA_HOME被设为/usr/lib/jdk1.8.0_202/jreJRE 路径而 JAXB 是 JDK 的扩展模块JRE 不包含。Hadoop 2.7.7 的hadoop脚本会从JAVA_HOME推导JRE_HOME若JAVA_HOME已是 JRE则JRE_HOME变成JRE_HOME/jre彻底错乱。解决JAVA_HOME必须是 JDK 根目录/usr/lib/jdk1.8.0_202且JRE_HOME显式设为${JAVA_HOME}/jre。验证命令sudo -u hadoop bash -c echo $JAVA_HOME echo $JRE_HOME ls $JAVA_HOME/jre/lib/ext/ | grep jaxb # 最后一行应输出 jaxb-api.jar5.2/usr/local/hadoop/logs/权限拒绝start-dfs.sh静默失败现象执行sudo -u hadoop /usr/local/hadoop/sbin/start-dfs.sh后无任何输出jps看不到 NameNode/usr/local/hadoop/logs/下无hadoop-hadoop-namenode-*.log。原因start-dfs.sh会尝试在$HADOOP_HOME/logs/下创建日志文件但该目录属主是roothadoop用户无写权限。脚本遇到Permission denied直接退出不报错。解决sudo chown -R hadoop:hadoop /usr/local/hadoop/logs sudo chmod -R 755 /usr/local/hadoop/logs # 验证 sudo -u hadoop touch /usr/local/hadoop/logs/test.log echo ✅ logs writable || echo ❌ fix logs perm5.3spark-shell启动卡在Setting default log level to WARNLog4j 配置冲突现象sudo -u spark /usr/local/spark/bin/spark-shell启动后卡住光标不动CtrlC 退出后日志显示log4j:WARN No appenders could be found for logger。原因Spark 2.4.4 自带log4j.properties但 Ubuntu 14.04 的scala命令会加载系统级log4j.xml两者冲突导致初始化死锁。解决强制指定 Spark 的 log4j 配置sudo -u spark /usr/local/spark/bin/spark-shell \ --conf spark.driver.extraJavaOptions-Dlog4j.configurationfile:///usr/local/spark/conf/log4j.properties \ --conf spark.executor.extraJavaOptions-Dlog4j.configurationfile:///usr/local/spark/conf/log4j.properties5.4hdfs dfs -ls /报Connection refusedcore-site.xml的fs.defaultFS协议头错误现象sudo -u hadoop /usr/local/hadoop/bin/hdfs dfs -ls /输出ls: Call From ubuntu/127.0.1.1 to localhost:9000 failed on connection exception: java.net.ConnectException: Connection refused原因core-site.xml中fs.defaultFS写成了hdfs://localhost:9000/末尾多了一个/Hadoop 解析 URL 时将端口识别为9000/含斜杠导致连接localhost:9000/这个非法端口。解决严格检查core-site.xmlvalue必须是hdfs://localhost:9000无尾部/。验证sudo -u hadoop /usr/local/hadoop/bin/hdfs getconf -confKey fs.defaultFS # ✅ 应输出 hdfs://localhost:90005.5spark-submit提交后 Application Status 一直是ACCEPTEDYARN 资源不足现象spark-submit --master yarn ...后http://localhost:8088页面显示 Application 状态为ACCEPTED持续 5 分钟不变成RUNNING。原因Ubuntu 14.04 默认内存小2GYARN 的yarn.scheduler.minimum-allocation-mb默认是1024而 NodeManager 只申请了512m内存资源无法满足。解决修改/usr/local/hadoop/etc/hadoop/yarn-site.xml增加property nameyarn.scheduler.minimum-allocation-mb/name value512/value /property property nameyarn.nodemanager.resource.memory-mb/name value1024/value /property然后重启 YARNsudo -u hadoop /usr/local/hadoop/sbin/stop-yarn.sh sudo -u hadoop /usr/local/hadoop/sbin/start-yarn.sh6. 验证跑通从hdfs dfs -ls /到spark-shell的五层穿透测试法装完环境不是终点是验证链的起点。我给自己定的铁律是任何一次新环境部署必须完成以下五层穿透测试缺一不可。这不仅是交作业更是建立对大数据栈的信任——你知道每一层在做什么而不是祈祷start-all.sh能黑匣子般工作。6.1 第一层HDFS 基础读写hdfs dfs命令链目标证明 NameNode 和 DataNode 进程健康、网络可达、权限正常。# 1. 创建测试目录-p 避免目录不存在报错 sudo -u hadoop /usr/local/hadoop/bin/hdfs dfs -mkdir -p /test/input # 2. 上传本地文件用 echo 生成不依赖外部文件 echo hello hadoop | sudo -u hadoop /usr/local/hadoop/bin/hdfs dfs -put - /test/input/data.txt # 3. 列出文件验证写入 sudo -u hadoop /usr/local/hadoop/bin/hdfs dfs -ls /test/input # ✅ 应输出-rw-r--r-- 1 hadoop hadoop 13 2024-03-20 10:00 /test/input/data.txt # 4. 读取内容验证读取 sudo -u hadoop /usr/local/hadoop/bin/hdfs dfs -cat /test/input/data.txt # ✅ 应输出hello hadoop # 5. 删除测试数据保持环境干净 sudo -u hadoop /usr/local/hadoop/bin/hdfs dfs -rm -r /test技巧-put -表示从 stdin 读取避免创建临时文件-cat不加引号防止 shell 解析空格出错。6.2 第二层YARN 资源调度yarn application命令链目标证明 ResourceManager 和 NodeManager 协同工作能分配 Container。# 提交一个空的 sleep 应用不跑计算只测调度 sudo -u hadoop /usr/local/hadoop/bin/yarn jar \ /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-2.7.7-tests.jar \ SleepJob 1 1 # 查看应用状态等待 RUNNING watch -n 1 sudo -u hadoop /usr/local/hadoop/bin/yarn application -list 2/dev/null | grep -E (ACCEPTED|RUNNING|FINISHED) # ✅ 成功标志状态从 ACCEPTED → RUNNING → FINISHED且耗时 30s # 清理 sudo -u hadoop /usr/local/hadoop/bin/yarn application -kill $(sudo -u hadoop /usr/local/hadoop/bin/yarn application -list 2/dev/null | grep SleepJob | awk {print $1})6.3 第三层Spark Shell 交互式验证spark-shellREPL目标证明 Spark Driver 能初始化、SparkContext 能创建、本地模式能执行 RDD。# 启动 spark-shell加 --verbose 看详细日志 sudo -u spark /usr/local/spark/bin/spark-shell \ --master local[ p a hrefhttps://download.csdn.net/download/qq_63015047/89374537 stylecolor:#ec7500;font-size:14px; 本文还有配套的精品资源点击获取 /a img altmenu-r.4af5f7ec.gif srchttps://csdnimg.cn/release/wenkucmsfe/public/img/menu-r.4af5f7ec.gif stylewidth:16px;margin-left:4px;vertical-align:text-bottom;cursor:text; /p