2026/10/17 19:48:19

华为云四节点Hadoop+Spark+OBS实战部署指南

华为云四节点Hadoop+Spark+OBS实战部署指南 简介本资源是一份完整的华为云大数据实验教学报告面向高校大数据、云计算相关专业学生及初入云平台实践的开发者聚焦在华为云环境中动手搭建与管理Hadoop/Spark集群的核心能力培养。报告系统覆盖四大实验模块基于ECS云主机的手动部署大数据环境、调用华为云原生服务OBS、ECS、数据库等构建数据处理链路、使用BigData Pro一站式方案完成HadoopSpark协同集群配置以及通过Spark SQL实现大数据交互式查询。内容含详细操作步骤、密钥配置示例、节点SSH连接命令、防火墙关闭指令、OBS桶访问验证等实战细节目录结构清晰便于分阶段复现与查证。资源为1个4.36MB的docx文档涵盖全部实验过程、截图提示与关键配置参数无额外附件。目前已有2443人学习下载是理解华为云大数据基础设施落地、掌握云上集群部署与SQL分析闭环的优质实操参考材料。1. 华为云大数据实验报告不是模板套用而是真实跑通 HadoopSparkOBS 四节点集群的完整链路你手头这份《华为云大数据实验报告hhu》不是某高校PPT截图拼凑的“概念演示”而是一份在华为云真实 ECS 实例上逐行敲命令、逐节点配 SSH、逐服务测连通性、最终跑出hadoop jar hadoop-mapreduce-examples-*.jar wordcount成功日志的实操记录。它解决的不是“什么是 Hadoop”这种教科书问题而是“为什么 node1 能 ssh node2 却连不上 node3”“为什么 OBS 桶地址填对了却报AccessDenied”“为什么 Spark UI 页面打不开但日志没报错”这类卡住你三小时的真实故障。适合正在准备课程设计、实训考核或刚接触云上大数据部署的工程师——你需要的不是理论推导是能立刻复制粘贴、改 IP 改主机名就能复现的命令流和排错路径。整份报告覆盖从 ECS 购买、OBS 桶创建、四节点 SSH 免密互通、Hadoop 完全分布式配置、Spark on YARN 集成到最终用wordcount验证数据从本地文件 → HDFS → MapReduce → OBS 的端到端流转。所有操作均基于华为云华北-4cn-north-4Region适配当前控制台界面与 API 行为不依赖过时镜像或废弃服务。2. 四节点 ECS 环境初始化从购买到免密登录的硬核打通2.1 购买 ECS 实例并确认网络拓扑华为云控制台中进入“弹性云服务器 ECS” → “购买弹性云服务器”。关键配置必须严格匹配实验要求区域华北-4 (cn-north-4)—— 后续 OBS 地址obs.cn-north-4.myhuaweicloud.com强绑定此 Region跨 Region 访问会触发鉴权失败可用区全部实例选同一可用区如cn-north-4a避免内网延迟高导致心跳超时镜像选择CentOS 7.9 64bit非 Alibaba Cloud 或 TencentOS因实验中所有yum install命令及/etc/hosts配置均基于此系统行为规格最低4U8G如s6.large.2Hadoop ResourceManager 和 NodeManager 对内存敏感低于 8G 易 OOM系统盘超高IO类型容量 ≥ 100GBHDFS 数据块默认写入系统盘小容量会导致No space left on device网络必须勾选“分配弹性公网 IP”否则无法从本地终端 SSH 登录同时确保“安全组”放行22SSH、50070/9870HDFS WebUI、8088YARN ResourceManager、4040Spark UI端口。提示购买后等待实例状态变为“运行中”再点击“远程登录”获取初始密码。切勿跳过“重置密码”步骤否则后续所有 SSH 操作将失败。2.2 统一配置/etc/hosts并验证内网互通四台 ECS 实例启动后需强制统一其内网 DNS 解析这是 Hadoop 集群通信的基石。登录每台机器以node1为例# 使用华为云控制台提供的 VNC 或本地终端 SSH 登录 ssh root124.70.110.126 # node1 公网 IP # 输入重置后的密码 # 编辑 hosts 文件删除原有内容严格按以下格式写入注意IP 与主机名间为 Tab 键非空格 cat /etc/hosts EOF 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.0.10 ecs-ca89-0001 node1 192.168.0.53 ecs-ca89-0002 node2 192.168.0.169 ecs-ca89-0003 node3 192.168.0.77 ecs-ca89-0004 node4 EOF # 保存后立即测试解析是否生效 ping -c 2 node2 # 应返回 192.168.0.53 的 ICMP 响应参数说明192.168.0.x是华为云默认 VPC 内网段必须与你实际分配的内网 IP 完全一致可在 ECS 控制台“网络信息”栏查看主机名node1~node4是 Hadoop 配置文件中core-site.xml和yarn-site.xml引用的标识不可用ecs-ca89-0001等云平台生成名替代Tab分隔符是 Linux hosts 解析的关键空格会导致ssh node2时解析为node2.localdomain而非node2引发连接拒绝。2.3 四节点 SSH 免密登录用ssh-copy-id替代手动追加公钥实验原文中直接粘贴ssh-rsa AAAA...公钥到authorized_keys极易因换行符丢失或权限错误失败。正确做法是# 在 node1 上执行作为集群主节点 ssh-keygen -t rsa -b 4096 -N -f ~/.ssh/id_rsa # 生成无密码密钥对 # 将 node1 的公钥分发到所有节点包括自己 for host in node1 node2 node3 node4; do ssh-copy-id -o StrictHostKeyCheckingno $host done # 验证从 node1 无密码登录其他节点 ssh node2 hostname; echo ✅ node1 → node2 OK ssh node3 hostname; echo ✅ node1 → node3 OK # 若提示输入密码说明免密未生效立即执行 chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys逻辑说明ssh-copy-id自动处理~/.ssh/authorized_keys权限必须600、目录权限必须700及公钥格式校验-o StrictHostKeyCheckingno跳过首次连接的yes/no确认避免脚本中断验证命令中嵌入hostname是为了确认登录的是目标机器而非本地 shell防止因 hosts 配置错误导致“看似成功实则连错”。2.4 关闭防火墙与 SELinux绕过云平台默认策略干扰华为云 ECS 默认启用firewalld且SELinux处于enforcing模式这两者会拦截 Hadoop RPC 端口如8020,9000和 YARN 容器通信。必须全局关闭# 所有节点执行node1~node4 systemctl stop firewalld systemctl disable firewalld setenforce 0 # 临时禁用 SELinux sed -i s/SELINUXenforcing/SELINUXdisabled/g /etc/selinux/config # 永久禁用 reboot # 重启确保生效踩坑点仅stop firewalld不够disable才能保证重启后不自启setenforce 0只是运行时生效必须修改/etc/selinux/config才持久。若跳过此步Hadoop 格式化hdfs namenode -format会卡在Starting namenodes on [node1]无响应。3. Hadoop 完全分布式集群搭建从 JDK 安装到 OBS 数据互通3.1 OpenJDK 11 安装与环境变量固化Hadoop 3.x 要求 JDK 8但华为云 CentOS 7.9 默认java-1.8.0-openjdk存在 GC Bug 导致 NameNode 频繁 Full GC。实验采用 OpenJDK 11# 所有节点执行 yum install -y wget tar gzip wget https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.11%2B9/OpenJDK11U-jdk_x64_linux_hotspot_11.0.11_9.tar.gz tar -zxf OpenJDK11U-jdk_x64_linux_hotspot_11.0.11_9.tar.gz -C /opt/ ln -sf /opt/jdk-11.0.119 /opt/java # 写入全局环境变量避免 su - 切换用户后 JAVA_HOME 失效 echo export JAVA_HOME/opt/java /etc/profile echo export PATH$JAVA_HOME/bin:$PATH /etc/profile source /etc/profile # 验证 java -version # 输出应为 openjdk version 11.0.11 2021-04-20参数说明必须使用AdoptOpenJDK官方构建版华为云镜像源中的java-11-openjdk未通过 Hadoop 兼容性测试ln -sf创建软链接是为了后续升级 JDK 时只需改链接目标无需重配所有环境变量写入/etc/profile而非~/.bashrc因 Hadoop 启动脚本由root用户调用su - hdfs会加载/etc/profile。3.2 Hadoop 3.3.6 下载解压与目录结构标准化实验原文未指定 Hadoop 版本但hadoop-mapreduce-examples-*.jar在 3.3.6 中路径稳定且兼容华为云 OBS SDK# node1 节点执行主节点分发 cd /opt wget https://archive.apache.org/dist/hadoop/core/hadoop-3.3.6/hadoop-3.3.6.tar.gz tar -zxf hadoop-3.3.6.tar.gz ln -sf /opt/hadoop-3.3.6 /opt/hadoop # 创建标准目录结构HDFS 数据存储路径 mkdir -p /data/hadoop/{namenode,datanode,journalnode} chown -R root:root /data/hadoop chmod 755 /data/hadoop逻辑说明archive.apache.org是 Apache 官方归档站确保下载的是未经篡改的原始二进制包/data/hadoop/目录独立于系统盘避免 HDFS 数据增长撑爆根分区journalnode目录为后续启用 QJMQuorum Journal Manager高可用预留即使单 NameNode 也需创建。3.3 核心配置文件详解core-site.xml、hdfs-site.xml、yarn-site.xmlHadoop 配置本质是 XML 中的property嵌套任何拼写错误如fs.defaultFS写成fs.default.fs都会导致启动失败。以下是经实测的最小可行配置!-- /opt/hadoop/etc/hadoop/core-site.xml -- configuration property namefs.defaultFS/name valuehdfs://node1:9000/value !-- 注意此处必须是 node1非 localhost -- /property property namehadoop.tmp.dir/name value/data/hadoop/tmp/value /property /configuration!-- /opt/hadoop/etc/hadoop/hdfs-site.xml -- configuration property namedfs.namenode.name.dir/name value/data/hadoop/namenode/value /property property namedfs.datanode.data.dir/name value/data/hadoop/datanode/value /property property namedfs.replication/name value2/value !-- 四节点集群replication2 避免单点故障 -- /property property namedfs.permissions.enabled/name valuefalse/value !-- 华为云 ECS 默认无 HDFS 用户体系关闭权限检查 -- /property /configuration!-- /opt/hadoop/etc/hadoop/yarn-site.xml -- configuration property nameyarn.resourcemanager.hostname/name valuenode1/value !-- ResourceManager 固定在 node1 -- /property property nameyarn.nodemanager.aux-services/name valuemapreduce_shuffle/value /property property nameyarn.nodemanager.env-whitelist/name valueJAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME/value /property /configuration关键参数解释fs.defaultFS的node1:9000必须与/etc/hosts中定义的node1主机名完全一致大小写敏感dfs.replication2是四节点集群的黄金值设为1无容错设为4导致写入放大2平衡性能与可靠性dfs.permissions.enabledfalse是华为云场景必需项否则hdfs dfs -ls /会报org.apache.hadoop.security.AccessControlException。3.4 格式化 NameNode 并启动集群配置完成后仅在node1执行格式化其他节点自动同步# node1 执行 /opt/hadoop/bin/hdfs namenode -format # 输出含 Storage directory ... has been successfully formatted # 启动 HDFS先起 NameNode再起 DataNode /opt/hadoop/sbin/start-dfs.sh # 自动在 node1 起 NameNode在 node2~node4 起 DataNode # 启动 YARNResourceManager 在 node1NodeManager 在 node2~node4 /opt/hadoop/sbin/start-yarn.sh # 验证进程所有节点都应看到对应进程 jps | grep -E (NameNode|DataNode|ResourceManager|NodeManager) # node1 应输出NameNode ResourceManager Jps # node2~node4 应输出DataNode NodeManager Jps现象排查若jps无输出立即检查JAVA_HOME是否生效echo $JAVA_HOME/etc/hosts中node1是否能ping通netstat -tuln | grep 9000是否监听0.0.0.0:9000非127.0.0.1:9000。4. OBS 对象存储接入从 AK/SK 获取到 HDFS-OBS 桥接4.1 OBS 桶创建与 AK/SK 安全提取实验原文中credentials.csv的Secret Access Key直接明文暴露存在严重安全风险。正确流程是华为云控制台 → “对象存储服务 OBS” → “创建桶”桶名全小写、无下划线、长度 3-63 字符如hhu-bigdata-bucket区域必须与 ECS 相同华北-4否则obs.cn-north-4.myhuaweicloud.com无法访问读写权限选择“公共读”因 Hadoop 作业需从 OBS 读取输入数据创建后进入“我的凭证” → “访问密钥AK/SK” → “新增访问密钥”下载credentials.csv立即删除本地credentials.csv从文件中提取 AK/SK# 从 credentials.csv 提取假设文件在 /root/ awk -F, NR2 {print AK:, $2; print SK:, $3} /root/credentials.csv # 输出示例AK: S8RSFKYBTOSPA9YX92XB SK: jpU0nHcXWVjftBFo7lAdgbq6JjCOPENZylB1fOTk注意Secret Access Key仅显示一次丢失需重新创建 AK/SK旧密钥自动失效。4.2 配置 Hadoop 与 OBS 的认证桥接Hadoop 本身不支持 OBS需通过hadoop-aliyun兼容层华为云 OBS 兼容阿里云 OSS API。将hadoop-aliyun-3.3.6.jar及其依赖注入 Hadoop# node1 执行 cd /opt/hadoop/share/hadoop/tools/lib # 下载兼容 JAR华为云 OBS 使用 OSS 协议 wget https://repo1.maven.org/maven2/org/apache/hadoop/hadoop-aliyun/3.3.6/hadoop-aliyun-3.3.6.jar wget https://repo1.maven.org/maven2/com/aliyun/oss/aliyun-sdk-oss/3.15.1/aliyun-sdk-oss-3.15.1.jar wget https://repo1.maven.org/maven2/org/apache/httpcomponents/httpclient/4.5.14/httpclient-4.5.14.jar wget https://repo1.maven.org/maven2/org/apache/httpcomponents/httpcore/4.4.16/httpcore-4.4.16.jar # 修改 core-site.xml添加 OBS 认证配置 cat /opt/hadoop/etc/hadoop/core-site.xml EOF property namefs.obs.impl/name valueorg.apache.hadoop.fs.obs.OBSFileSystem/value /property property namefs.AbstractFileSystem.obs.impl/name valueorg.apache.hadoop.fs.obs.OBS/value /property property namefs.obs.access.key/name valueS8RSFKYBTOSPA9YX92XB/value !-- 替换为你的 AK -- /property property namefs.obs.secret.key/name valuejpU0nHcXWVjftBFo7lAdgbq6JjCOPENZylB1fOTk/value !-- 替换为你的 SK -- /property property namefs.obs.endpoint/name valueobs.cn-north-4.myhuaweicloud.com/value /property EOF参数说明fs.obs.endpoint必须用obs.cn-north-4.myhuaweicloud.com非双栈地址双栈地址在 Java SDK 中解析异常fs.obs.access.key和fs.obs.secret.key是明文写入生产环境应使用 KMS 加密或 Credential Provider但实验阶段可接受所有 JAR 包必须放在share/hadoop/tools/lib/Hadoop 工具链如hadoop fs只从此路径加载 OBS 插件。4.3 测试 OBS 与 HDFS 互通hadoop fs命令验证配置完成后用hadoop fs命令直连 OBS验证认证与网络# node1 执行 # 列出 OBS 桶根目录需桶内有文件或先上传测试文件 /opt/hadoop/bin/hadoop fs -ls obs://hhu-bigdata-bucket/ # 上传本地文件到 OBS测试写权限 echo Hello OBS from Hadoop /tmp/test-obs.txt /opt/hadoop/bin/hadoop fs -put /tmp/test-obs.txt obs://hhu-bigdata-bucket/test/ # 从 OBS 读取文件到本地测试读权限 /opt/hadoop/bin/hadoop fs -get obs://hhu-bigdata-bucket/test/ /tmp/from-obs.txt cat /tmp/from-obs.txt # 应输出 Hello OBS from Hadoop失败现象与原因ls报com.aliyun.oss.OSSException: The bucket you are attempting to access must be addressed using the specified endpoint.→fs.obs.endpoint填错 Regionput报com.aliyun.oss.OSSException: The OSS Access Key Id you provided does not exist in our records.→ AK/SK 复制错误或已失效get报java.io.IOException: Stream is closed→ JAR 包缺失httpclient或版本不匹配必须 4.5.14。5. Spark on YARN 集成与 WordCount 实战端到端数据流转验证5.1 Spark 3.3.2 下载与 YARN 模式配置Spark 需与 Hadoop 版本严格匹配spark-3.3.2-bin-hadoop3是唯一兼容 Hadoop 3.3.6 的发行版# node1 执行 cd /opt wget https://archive.apache.org/dist/spark/spark-3.3.2/spark-3.3.2-bin-hadoop3.tgz tar -zxf spark-3.3.2-bin-hadoop3.tgz ln -sf /opt/spark-3.3.2-bin-hadoop3 /opt/spark # 配置 Spark 使用 YARN 作为集群管理器 cat /opt/spark/conf/spark-env.sh EOF export JAVA_HOME/opt/java export HADOOP_CONF_DIR/opt/hadoop/etc/hadoop export SPARK_DIST_CLASSPATH$(/opt/hadoop/bin/hadoop classpath) EOF chmod x /opt/spark/conf/spark-env.sh逻辑说明SPARK_DIST_CLASSPATH必须通过hadoop classpath动态获取硬编码路径会导致ClassNotFoundException: org.apache.hadoop.fs.obs.OBSFileSystemHADOOP_CONF_DIR指向 Hadoop 配置目录使 Spark 能读取core-site.xml中的 OBS 认证信息spark-env.sh必须chmod x否则 Spark 启动时忽略该文件。5.2 准备 WordCount 输入数据HDFS 与 OBS 双源WordCount 需要输入文本文件。实验提供两种方式验证不同存储的读取能力# 方式1上传到 HDFS本地文件 → HDFS echo -e hello world\nhello hadoop\nworld spark /tmp/input.txt /opt/hadoop/bin/hadoop fs -mkdir -p /input/wordcount /opt/hadoop/bin/hadoop fs -put /tmp/input.txt /input/wordcount/ # 方式2上传到 OBS本地文件 → OBS /opt/hadoop/bin/hadoop fs -mkdir -p obs://hhu-bigdata-bucket/input/wordcount /opt/hadoop/bin/hadoop fs -put /tmp/input.txt obs://hhu-bigdata-bucket/input/wordcount/5.3 提交 Spark WordCount 任务到 YARN使用spark-submit提交关键参数决定任务能否成功# 提交到 HDFS 输入源推荐初试 /opt/spark/bin/spark-submit \ --master yarn \ --deploy-mode cluster \ --driver-memory 2g \ --executor-memory 2g \ --executor-cores 2 \ --num-executors 2 \ --class org.apache.spark.examples.JavaWordCount \ /opt/spark/examples/jars/spark-examples_2.12-3.3.2.jar \ hdfs://node1:9000/input/wordcount/input.txt \ hdfs://node1:9000/output/wordcount-hdfs # 提交到 OBS 输入源验证 OBS 集成 /opt/spark/bin/spark-submit \ --master yarn \ --deploy-mode cluster \ --driver-memory 2g \ --executor-memory 2g \ --executor-cores 2 \ --num-executors 2 \ --class org.apache.spark.examples.JavaWordCount \ /opt/spark/examples/jars/spark-examples_2.12-3.3.2.jar \ obs://hhu-bigdata-bucket/input/wordcount/input.txt \ obs://hhu-bigdata-bucket/output/wordcount-obs参数说明--master yarn强制使用 YARN 调度非local[*]--deploy-mode cluster使 Driver 运行在 YARN 容器内避免本地网络问题--num-executors 2是四节点集群的合理值Executor 数量超过 DataNode 数会导致资源争抢输入/输出路径必须用完整 URIhdfs://或obs://不能省略协议头。5.4 查看结果与日志定位任务失败根源任务提交后通过 YARN WebUI 或命令行查状态# 查看所有 YARN 应用 /opt/hadoop/bin/yarn application -list # 获取最新应用 ID如 application_171xxxxxx_xxxx APP_ID$(yarn application -list | grep SPARK | head -1 | awk {print $1}) # 查看应用状态 /opt/hadoop/bin/yarn application -status $APP_ID # 若状态为 FAILED拉取 Driver 日志关键 /opt/hadoop/bin/yarn logs -applicationId $APP_ID | grep -A 10 -B 10 Exception\|ERROR典型成功日志特征Application report for application_xxx (state: FINISHED)Final app status: SUCCEEDEDOutput path: hdfs://node1:9000/output/wordcount-hdfs/part-r-00000hadoop fs -cat /output/wordcount-hdfs/part-r-00000输出hello 2hadoop 1spark 1world 2。6. 避坑指南四节点 HadoopSparkOBS 集群的 5 个血泪经验6.1 现象start-dfs.sh后jps看不到 DataNodehadoop fs -ls /报Connection refused原因/etc/hosts中node1解析为127.0.0.1而非内网 IP导致 DataNode 向127.0.0.1:9000注册但 NameNode 监听的是0.0.0.0:9000。解决ping node1确认返回内网 IP如192.168.0.10netstat -tuln | grep 9000确认监听0.0.0.0:9000若监听127.0.0.1:9000检查core-site.xml中fs.defaultFS是否误写为localhost:9000。6.2 现象Spark WordCount 提交后 YARN Application 状态为ACCEPTED长时间不变成RUNNING原因YARN 资源不足yarn.scheduler.maximum-allocation-mb默认 8192MB但--executor-memory 2g请求 2048MB若集群内存碎片化无法分配连续块。解决编辑/opt/hadoop/etc/hadoop/yarn-site.xml添加property nameyarn.scheduler.maximum-allocation-mb/name value4096/value /property property nameyarn.nodemanager.resource.memory-mb/name value4096/value /property重启 YARN/opt/hadoop/sbin/stop-yarn.sh /opt/hadoop/sbin/start-yarn.sh。6.3 现象hadoop fs -ls obs://bucket/报java.lang.NoClassDefFoundError: com/aliyun/oss/OSSClient原因hadoop-aliyun-3.3.6.jar未放入share/hadoop/tools/lib/或httpclient版本不匹配如用了 4.5.13。解决ls /opt/hadoop/share/hadoop/tools/lib/ | grep -E (aliyun|http)确认四个 JAR 全在jar -tf /opt/hadoop/share/hadoop/tools/lib/hadoop-aliyun-3.3.6.jar | head -5验证 JAR 可读删除旧版httpclient只保留4.5.14。6.4 现象OBS 桶内文件可ls但hadoop fs -get obs://bucket/file /tmp/报java.io.IOException: Stream is closed原因fs.obs.endpoint填了双栈地址obs.dualstack.cn-north-4.myhuaweicloud.com而华为云 OBS Java SDK 不支持双栈解析。解决检查core-site.xml将fs.obs.endpoint改为obs.cn-north-4.myhuaweicloud.comhadoop fs -ls obs://bucket/重新验证。6.5 现象Spark UI 页面http://node1:4040打不开但yarn application -list显示 RUNNING原因Spark UI 默认绑定0.0.0.0:4040但华为云安全组未放行4040端口或浏览器访问的是http://124.70.110.126:4040公网 IP而 Spark UI 仅监听内网。解决控制台安全组中添加入方向规则端口4040源地址0.0.0.0/0浏览器访问http://124.70.110.126:4040node1 公网 IP非http://node1:4040若仍失败在spark-defaults.conf中添加spark.ui.bindAddress 0.0.0.0 spark.ui.port 40407. 生产级加固与验证技巧让集群真正扛住压力测试7.1 用terasort替代wordcount进行吞吐量压测wordcount是单机小数据验证terasort才是检验四节点集群真实性能的标尺。它生成 TB 级随机数据并排序暴露出网络、磁盘、JVM 的瓶颈# 在 node1 生成 1GB 数据1000 个 1MB 分片 /opt/hadoop/bin/hadoop jar /opt/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar \ teragen -D mapreduce.job.reduces4 10000000 /input/terasort-data # 执行排序输入 /input/terasort-data输出 /output/terasort-out /opt/hadoop/bin/hadoop jar /opt/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar \ terasort -D mapreduce.job.reduces4 /input/terasort-data /output/terasort-out # 验证结果正确性必须输出 SUCCESS /opt/hadoop/bin/hadoop jar /opt/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar \ teravalidate /output/terasort-out /output/terasort-validate关键参数10000000表示生成 10M 行约 1GB-D mapreduce.job.reduces4匹配四节点避免 Reduce 任务堆积teravalidate是必须步骤它读取排序结果并校验全局有序性失败则说明 HDFS 写入或 MapReduce shuffle 出错。7.2 监控集群健康用hadoop dfsadmin和yarn node -list日常运维不能只靠jps需用 Hadoop 原生命令诊断# 检查 HDFS 磁盘使用率避免 DataNode 因满盘下线 /opt/hadoop/bin/hadoop dfsadmin -report | grep -E (Live datanodes|Used|Capacity) # 检查 YARN 节点状态确认所有 NodeManager 在线 /opt/hadoop/bin/yarn node -list -all | grep -E (node[1 p a hrefhttps://download.csdn.net/download/qq_43624193/78575837 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