ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

鲲鹏云大数据实验实战:从docx文档到Hadoop/Spark集群可复现部署

鲲鹏云大数据实验实战:从docx文档到Hadoop/Spark集群可复现部署 简介这份鲲鹏云大数据实验docx面向高校学生与云计算初学者聚焦在华为云环境中搭建Hadoop集群的完整实践。内容从购买ECS与OBS、获取AK/SK认证密钥讲起逐步覆盖节点互信配置、SSH无密码登录、目录结构创建、core-site.xml等核心配置文件编写以及NameNode初始化与HDFS服务启动并记录了Java家目录出错后重新分发Hadoop包的排错过程。资源包内含1个docx文件大小约2.52MB以图文步骤形式呈现实验全流程。目前已有891人学习下载适合需要掌握云环境下大数据基础设施部署与管理的读者参考可帮助理解OBS作为数据源的接入方式、集群节点一致性维护及服务启动常见问题的解决思路对课程实验与项目实践均有较高参考价值。1. 鲲鹏云大数据实验docx从一份实验文档到能跑通的集群很多人第一次接触鲲鹏云大数据实验拿到手的往往就是一份 docx——里面写着实验目的、步骤截图、命令片段看起来什么都有真照着敲却处处卡壳。这份文档本身不是问题问题在于它通常只记录了「成功路径」没记录环境差异、参数含义和失败回退。鲲鹏云底层是 ARM 架构大数据组件在 aarch64 上的编译、依赖、内存行为跟 x86 有明显区别直接照搬网上 x86 的教程翻车概率极高。这篇笔记面向两类人一是手里有实验 docx、需要在鲲鹏云上把 Hadoop/Spark/Hive 集群真正跑起来的学生和初级工程师二是想把实验文档沉淀成可复现流程、避免每次重装都重新踩坑的开发者。我会把「文档里写了什么」和「实际要补什么」拆开讲给出可抄的命令、参数和排查思路。2. 先看懂 docx 里的实验拓扑鲲鹏云上到底要搭什么2.1 从文档目录反推集群角色一份典型的大数据实验 docx目录大致是环境准备、JDK 安装、Hadoop 部署、Spark 部署、Hive 部署、实验验证。它不会明说的是这几台机器各自承担什么角色。鲲鹏云实验常见的是三节点起步角色划分如下。节点主机名示例角色常驻进程node1masterNameNode / ResourceManager / Hive MetastoreNameNode、RM、DataNode、NodeManagernode2slave1DataNode / NodeManager / WorkerDataNode、NodeManagernode3slave2DataNode / NodeManager / WorkerDataNode、NodeManager看文档时先确认三件事节点数量、每台机器的 CPU 架构uname -m返回aarch64还是x86_64、内存大小。鲲鹏云实验环境常见单节点 4C8G 或 8C16G内存直接决定你后面 YARN 容器能开多大。文档里如果只写「修改配置文件」你要自己补上「改哪个文件的哪一行、改成什么值」。2.2 确认架构与系统版本别急着装动手前先跑三条命令把环境底数摸清。这一步文档通常不写但它是后面所有编译和依赖问题的根源。uname -m # 确认 CPU 架构鲲鹏应为 aarch64 cat /etc/os-release # 确认发行版常见 openEuler / CentOS / Ubuntu free -h # 确认内存决定 YARN 容器上限 java -version # 确认是否已装 JDK没装则后续统一装逻辑说明uname -m决定你下载的安装包必须是 aarch64 版本x86 的 tar 包在鲲鹏上根本跑不起来。/etc/os-release决定包管理命令用yum还是apt。free -h的数字要记下来后面配yarn.nodemanager.resource.memory-mb时直接用。参数上如果内存是 8GYARN 可用内存一般给到 6G 左右留 2G 给系统和其他进程这是血泪经验给满会频繁触发 OOM。2.3 主机名与 hosts 映射最容易被跳过的一步文档里常写「配置主机名映射」但不说为什么。Hadoop 各组件之间靠主机名通信如果 hosts 没配好会出现 NameNode 起来了但 DataNode 连不上、Spark 找不到 master 这类玄学问题。# 在每台机器上执行主机名按实际改 hostnamectl set-hostname node1 # 编辑 /etc/hosts三台机器内容保持一致 cat /etc/hosts EOF 192.168.1.101 node1 192.168.1.102 node2 192.168.1.103 node3 EOF # 验证互通 ping -c 2 node2逻辑说明hostnamectl改的是运行时主机名重启后仍生效。/etc/hosts必须三台一致否则跨节点解析会失败。ping验证的是网络层如果 ping 不通先查安全组和网卡别往下走。参数上IP 换成你鲲鹏云实例的实际内网地址不要用公网 IP 做集群内通信。3. 按 docx 步骤落地JDK、Hadoop、Spark 的鲲鹏适配3.1 JDK 选型与安装aarch64 版本别下错大数据组件对 JDK 版本敏感。Hadoop 3.x 推荐 JDK 8Spark 3.x 也以 JDK 8 为主。鲲鹏云上要下 aarch64 的 JDK 包常见做法是用 OpenJDK 或毕昇 JDK。# 以 openEuler 为例直接用包管理安装 sudo yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel # 验证 java -version javac -version # 配置环境变量 echo export JAVA_HOME/usr/lib/jvm/java-1.8.0-openjdk ~/.bashrc echo export PATH$JAVA_HOME/bin:$PATH ~/.bashrc source ~/.bashrc逻辑说明-devel包必须装否则没有javac后面编译会报错。JAVA_HOME路径用readlink -f $(which java)反推确认不同发行版路径不同。参数上如果实验 docx 指定了某个 JDK 版本以文档为准文档没写就选 JDK 8兼容性最好。3.2 Hadoop 部署配置文件逐项对照Hadoop 部署的核心是改五个文件core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml、workers。文档里通常只贴了片段这里给一份鲲鹏云三节点可用的最小配置。!-- core-site.xml -- configuration property namefs.defaultFS/name valuehdfs://node1:9000/value /property property namehadoop.tmp.dir/name value/opt/hadoop/data/tmp/value /property /configuration!-- hdfs-site.xml -- configuration property namedfs.replication/name value2/value /property property namedfs.namenode.name.dir/name value/opt/hadoop/data/name/value /property property namedfs.datanode.data.dir/name value/opt/hadoop/data/data/value /property /configuration逻辑说明fs.defaultFS指向 node1 的 9000 端口所有节点一致。hadoop.tmp.dir是临时目录必须提前mkdir -p并授权否则启动报权限错误。dfs.replication三节点设 2 即可设 3 会让写入等待第三个副本实验环境没必要。参数上目录路径按你实际磁盘规划改别放在根分区容易写满。!-- yarn-site.xml -- configuration property nameyarn.resourcemanager.hostname/name valuenode1/value /property property nameyarn.nodemanager.resource.memory-mb/name value6144/value /property property nameyarn.nodemanager.resource.cpu-vcores/name value4/value /property /configuration逻辑说明resourcemanager.hostname指定 RM 所在节点。memory-mb按 2.2 节记下的内存来算8G 机器给 614416G 给 12288。cpu-vcores按实际核数减 1 到 2留出系统开销。这两个值给大了会拖垮节点给小了任务排队是调优里最常动的参数。3.3 格式化与启动顺序错了就得重来配置改完启动顺序是格式化 NameNode → 启动 HDFS → 启动 YARN。顺序错了或者重复格式化会导致 clusterID 不一致DataNode 起不来。# 只在 node1 执行且只执行一次 hdfs namenode -format # 启动 HDFS start-dfs.sh # 启动 YARN start-yarn.sh # 验证进程 jps逻辑说明-format只能执行一次重复执行会清空元数据如果已经启动过又格式化需要把所有节点的data目录清掉重来。jps在 node1 应看到 NameNode、ResourceManager、DataNode、NodeManager在 node2/node3 应看到 DataNode、NodeManager。如果某进程缺失去对应节点的日志目录logs/下看.log文件报错信息通常直接指出问题。3.4 Spark 部署on YARN 模式的关键参数Spark 在鲲鹏云上一般跑 on YARN 模式不单独起 Standalone 集群。装完解压后重点是spark-env.sh和提交参数。# spark-env.sh 关键项 export JAVA_HOME/usr/lib/jvm/java-1.8.0-openjdk export HADOOP_CONF_DIR/opt/hadoop/etc/hadoop export YARN_CONF_DIR/opt/hadoop/etc/hadoop# 提交一个测试任务 spark-submit \ --master yarn \ --deploy-mode client \ --executor-memory 2g \ --executor-cores 2 \ --num-executors 2 \ --class org.apache.spark.examples.SparkPi \ $SPARK_HOME/examples/jars/spark-examples_2.12-3.3.0.jar 10逻辑说明HADOOP_CONF_DIR和YARN_CONF_DIR必须指向 Hadoop 配置目录否则 Spark 找不到 YARN。executor-memory乘num-executors不能超过 YARN 可用总内存否则任务卡在 ACCEPTED。deploy-mode client适合调试cluster适合生产。参数上num-executors按节点数乘每节点容器数来估三节点 8G 内存大概能开 2 到 3 个。4. 避坑与排查docx 不会写的五类翻车现场4.1 DataNode 启动后立刻消失现象jps里 DataNode 一闪而过或者根本没出现。原因多次namenode -format导致 clusterID 不一致或者data目录权限不对。解决停掉所有进程删除所有节点的dfs.datanode.data.dir目录内容重新格式化一次确保只格式化一次并chown给运行用户。4.2 YARN 任务一直卡在 ACCEPTED现象spark-submit后任务状态长期 ACCEPTED不进入 RUNNING。原因请求的容器内存超过yarn.nodemanager.resource.memory-mb或者yarn.scheduler.maximum-allocation-mb没调大。解决把executor-memory降到单节点可用内存以下同时在yarn-site.xml里把maximum-allocation-mb设为和resource-memory-mb一致重启 YARN。4.3 Hive 启动报 metastore 连接失败现象hive命令进去后执行 SQL 报无法连接 metastore。原因MySQL 驱动没放、hive-site.xml里连接串写错、或者 MySQL 没启动。解决确认mysql-connector-javajar 包在$HIVE_HOME/lib下检查javax.jdo.option.ConnectionURL的主机名和端口systemctl status mysqld看数据库状态。4.4 鲲鹏上编译报 illegal instruction现象运行某个组件时报非法指令。原因用了 x86 的二进制包或者依赖里有 x86 的 native 库。解决uname -m确认架构重新下载 aarch64 版本如果是 Maven 依赖检查是否有linux-x86_64的 classifier换成linux-aarch64。4.5 磁盘写满导致 NameNode 进入安全模式现象HDFS 无法写入NameNode 处于 safe mode。原因hadoop.tmp.dir或数据目录所在分区写满。解决df -h定位满的分区清理日志和临时文件或者把数据目录迁到大盘然后hdfs dfsadmin -safemode leave退出安全模式。5. 把 docx 变成可复现脚本一个验证清单和自动化习惯实验做完docx 还是那份 docx下次换台机器又要重来。我的习惯是把整个流程沉淀成一个setup.sh加一份verify.sh。setup.sh负责装 JDK、解压组件、分发配置verify.sh负责逐项检查输出一张通过/失败的表。#!/bin/bash # verify.sh 核心检查项 check() { local name$1; shift if $ /dev/null 21; then echo [PASS] $name else echo [FAIL] $name fi } check 架构为aarch64 test $(uname -m) aarch64 check JDK可用 java -version check NameNode进程 jps | grep -q NameNode check DataNode进程 jps | grep -q DataNode check YARN RM进程 jps | grep -q ResourceManager check HDFS可写 hdfs dfs -mkdir -p /test hdfs dfs -rm -r /test逻辑说明check函数把命令的成功失败转成可读输出方便一眼看出哪一步断了。hdfs dfs -mkdir加-rm是一次真实写入验证比只看进程更可靠。参数上jps的 grep 匹配进程名如果你改了进程名要同步改。这个脚本我一般放在实验环境根目录每次重启后先跑一遍比翻 docx 快得多。再补一个提交任务时的参数对照表方便按机器规格直接查。单节点内存resource-memory-mbexecutor-memorynum-executors8G61442g216G122884g332G245768g4最后说个我自己的教训早期做鲲鹏实验我总想一次把所有组件装完再验证结果一出错就不知道是哪一层的问题。后来改成装完 JDK 验一次、装完 Hadoop 验一次、装完 Spark 再验一次每次只引入一个变量排查成本直接降下来。这份 docx 的价值不在于它写了多少而在于你愿不愿意在它之外补上环境确认、参数推导和验证脚本这三块。希望帮到你。本文还有配套的精品资源点击获取
返回列表