资讯动态

华为云大数据实验全流程指南:从OBS建桶到Hive结果校验

发布时间:2026/10/13 14:03:55 来源:尧图企业网站定制
简介华为云大数据实验报告通过四个循序渐进的实验完整呈现了在华为云上构建大数据处理平台的过程云主机自建Hadoop集群、云服务支撑大数据应用、BigData Pro一站式大数据方案搭建以及基于Spark SQL/Flink SQL的交互式查询。报告从购买弹性云服务器ECS、创建OBS桶并配置访问密钥入手逐步展开Hadoop集群的安装、节点SSH互信、关闭防火墙、测试与OBS互联再到Spark与Hadoop协同工作的关键细节涉及创建数据表、编写SQL查询、运行复杂分析并实时查看结果等环节将环境准备、集群部署与服务验证串联成一个完整闭环。每一步都给出关键命令和验证结果方便按步骤复盘也可作为课程实验报告或认证备考的参考资料。资源包为1个docx文档约4.36MB便携易读无需额外配置环境。已有2368人学习适合大数据初学者或备考大数据认证的工程师快速上手华为云大数据平台理解基础设施与云服务的配合方式并可根据报告中的配置思路迁移到其他云环境。1. 华为云大数据实验为什么总在环境上翻车先搞清 hhu 这门课到底要你交什么很多第一次做华为云大数据实验的人把全部精力押在 SQL 语法上结果本地跑得飞起的统计查询到了云上两小时出不来结果。真正卡人的不是语句本身而是存储、计算、权限这三件套没对齐。hhu 是某高校本科大数据实践课的实验编号最终交付物是一份「能复现」的报告建桶、传数据、起集群、跑 Hive、导出结果每一步都要有截图、命令和日志佐证。下面按实验报告顺序讲从 OBS 建桶到结果文件校验把参数怎么填、失败看哪里一次说清新手能照做熟手可以拿我给的排查思路省下半天时间。2. hhu 实验的标准架构OBS 存数据MRS 算数据IAM 管权限2.1 为什么实验要把存储和计算拆开从本地 MySQL 思维切到云原生常见的课程实验在单机 MySQL 里做数据、计算、权限全在一个库里SELECT 一把梭。华为云大数据实验不一样它模拟的是生产环境的存算分离对象存储 OBS 负责放原始文件和结果文件MapReduce 服务 MRS 负责跑 Hive、Spark 这类计算任务IAM 统一管理身份和权限。三者通过一条带协议头的路径串起来比如obs://hhu-exp-2024-001/data/orders.csv。第一次做这个实验的人最容易犯的错是想当然地认为「文件传到服务器某个目录下Hive 就能读」。在云上不是这个逻辑。MRS 集群内部确实有 HDFS但这个 HDFS 跟着集群生命周期走集群一删数据就没了。实验数据放 OBS等于把数据放在集群外面计算集群想用的时候通过授权去读。我一般会叮嘱初次接触的同学所有原始数据、所有导出结果一律放 OBSHDFS 只当临时计算空间。这一条写进实验报告本身就是对「存算分离」设计意图最好的说明。2.2 IAM 子账号、委托和资源配额一次配到位避免后面反复改实验第一步不是急着买集群而是先把账号体系理顺。常见做法是用主账号登录然后立刻创建一个 IAM 子账号只给这个实验需要的权限OBS 桶的读写、MRS 集群的查看和创建、ECS 跳板机的使用。理由很简单主账号权限太大实验里误删一个桶或者改错一个安全组规则排查成本比写 SQL 高得多。接下来是委托agency。这是华为云上最容易翻车的概念之一让 MRS 集群以某个身份去读你 OBS 桶里的数据这个身份就是委托。实验里最常见的问题是「Hive 能正常启动但一访问obs://路径就报 403」十有八九是委托没配或者配错了角色。创建 MRS 集群时直接选系统预置的 MRS 委托它能帮集群获取临时凭证去访问同一账号下的 OBS 桶。注意委托的授权范围别给成全局管理员够用就行。资源规划上实验数据量通常只有几 MB资源需求极其有限但有几个参数必须提前定好。下面是我在这个实验里固定使用的规划表你可以直接照抄到报告的环境说明章节。资源实验用途关键配置计费建议IAM 子账号登录控制台、调用 API开启编程访问免费OBS 桶存放原始数据和结果与集群同区域按存储量计实验成本极低MRS 集群运行 Hive 作业普通集群最小规格按需计费跑完删除ECS 跳板机SSH 登录集群所在 VPC与集群同 VPC、同安全组按需计费用完删除一个硬性要求OBS 桶、MRS 集群、ECS 跳板机必须在同一个区域。跨区域访问不是不行但数据会走公网或专线实验环境里只会引入速度变慢和额外的流量计费得不偿失。2.3 普通集群与安全集群实验别碰 KerberosMRS 集群创建时有「普通集群」和「安全集群」两种模式。安全集群会启用 Kerberos 认证客户端每次执行 Hive 命令前都要先kinit拿票据票据过期要重新认证日志里到处是 keytab、principal 这些概念。对课程实验来说这是纯额外负担。我建议选普通集群理由有三条一是认证链路短SSH 到节点后source环境变量就能直接跑 Hive二是排查权限问题时少一层干扰三是报告写起来干净能集中讲数据分析和结果验证。如果你所在实验要求必须用安全集群那记住一个固定动作每次打开一个新的 SSH 会话先执行kinit输入密码再跑任何 Hive 命令。这一步漏了报错信息千奇百怪通常都是各种 principal 相关的异常。3. 从零跑通第一个 Hive 作业建桶、传数据、起集群、执行 SQL3.1 用 OBS 建桶并上传数据obsutil 两条命令搞定上传数据有两个途径控制台网页拖拽或者命令行工具 obsutil。报告里我推荐用命令行因为命令天然带执行记录粘贴到报告里就是可复现的操作步骤。obsutil 的安装包在云控制台帮助页能找到按操作系统选对应版本解压即可不需要安装直接执行二进制文件。先配置 AK/SK 和区域端点然后建桶、上传、验证一套命令如下。# 配置访问凭证AK/SK 在 IAM 子账号的安全凭证里生成 ./obsutil config -iAK -kSK -eyour-region-endpoint # 建桶桶名全局唯一建议带实验编号或课程代号 ./obsutil mb obs://hhu-exp-2024-001 --locationyour-region # 上传整个 data 目录-r 表示递归-f 表示覆盖 ./obsutil cp ./data obs://hhu-exp-2024-001/exp/ -r -f # 验证文件确实在桶里并显示大小 ./obsutil ls obs://hhu-exp-2024-001/exp/参数说明-e后面的端点要和控制台左上角选的区域对应填错了会一直报连接超时桶名只允许小写字母、数字和连字符全局唯一所以一般会加上学号或日期后缀-r是递归上传目录-f是强制覆盖同名文件如果你只想增量上传新文件把-f换成-u。mb是 make bucket 的简写--location指定区域这个值和前面的-e必须一致。3.2 MRS 集群创建参数怎么填组件、规格、委托一次选对MRS 集群创建在控制台里是向导式页面参数多但真正的关键选项只有几个。集群类型选「自定义购买」这样能精确控制组件。组件勾选 Hive 和 Hadoop如果实验报告想加一个 MapReduce 的对比分析可以把 MapReduce 组件也勾上Spark 这轮实验用不到就先不选组件越多节点内存消耗越大。实例规格选择上我一般直接选最小档位的通用计算型数据量只有几 MB资源根本不是瓶颈瓶颈永远在权限和网络配置。节点布局默认会建议 3 个 master 节点做高可用实验环境可以削减 master 节点数量core 节点保留 2 个保证有地方跑任务。计费模式选「按需」实验做完立刻删除这是成本控制的关键。网络配置这一栏最容易被忽略VPC 要和已经建好的桶在同一区域安全组先保持默认后面会在跳板机部分单独说。委托这一栏直接选择系统预置的委托名字通常是 MRS 开头带 DEFAULT 字样。这一步没选对后面 Hive 读取 OBS 时会一直报 access denied。提交创建后集群启动大约需要十到二十分钟。这个时间别干等可以先把分析和表结构写好也可以造实验数据。集群状态显示「运行中」再继续下一步。3.3 登录集群执行第一条 Hive 命令验证环境比跑大查询更重要集群本身在 VPC 内部通常没有公网 IP登录要经过跳板机。先把 ECS 跳板机和集群放进同一个 VPC然后在本地终端 SSH 到跳板机再从跳板机 SSH 到 MRS master 节点。这个过程适合写成报告里的「网络连接说明」段落。# 本地 SSH 到跳板机用自己的公网 IP 访问 22 端口 ssh -i ~/.ssh/hhu-key.pem root跳板机公网IP # 从跳板机 SSH 到 master 节点用集群详情页看到的私网 IP ssh root192.168.1.10 # 进入 MRS 客户端目录并加载环境变量 cd /opt/client source bigdata_env # 普通集群不需要 kinit直接执行 Hive 命令验证 hive -e show databases;source bigdata_env这一步很关键它会设置 HADOOP_HOME、HCATALOG 等一堆环境变量。没执行直接敲hive大概率报 command not found。hive -e适合执行单条语句输出可以直接重定向到本地文件如果实验包含多段 SQL用hive -f script.sql更合适。我把这两种用法都写在报告对应的步骤里并附上执行时间。# 报告佐证记录执行时间和输出内容 date %F %T step1_time.txt hive -e show databases; step1_log.txt 21 cat step1_log.txt这里能看到default和实验自建的库。到这一步环境链路已经通了接下来把实验做成一个完整的分析案例。4. 把实验做成案例分析订单流水的 Hive 统计与结果导出4.1 造一份实验数据字段简单但足够支撑分析很多实验给的原始数据集动辄几百 MB对学生来说既难上传又难排查。我习惯自己造一份结构清晰的模拟订单数据一万行三个字段关联足够支撑 PV、UV、品类排行这些典型分析。mkdir -p hhu-exp/data cd hhu-exp # 生成 10000 行模拟订单用户ID,下单日期,品类,金额 for i in $(seq 1 10000); do echo ${RANDOM},2024-07-$((RANDOM%301)),$((RANDOM%51)),$((RANDOM%2001)) done data/orders.csv # 检查生成结果 head -5 data/orders.csv wc -l data/orders.csv字段设计解释用户 ID 用$RANDOM生成值域在 0 到 32767 之间天然有重复可以算 UV日期是字符串格式2024-07-01后续所有时间处理都围绕这个格式展开品类取值 1 到 5金额取值 1 到 200。数据格式统一减少了排错变量。生成之后用obsutil cp ./data obs://hhu-exp-2024-001/exp/ -r -f上传然后回到 Hive 建表。要注意造出来的 CSV 文件里日期是乱序的这正好用来验证 GROUP BY 和 ORDER BY 的语义。4.2 外部表与数据映射建表时的类型和分隔符决定了后面所有查询建表是整个实验里最容易埋坑的环节。先建库再建外部表指向 OBS 路径。SQL 如下。CREATE DATABASE IF NOT EXISTS hhu_db; CREATE EXTERNAL TABLE IF NOT EXISTS hhu_db.orders ( user_id BIGINT, order_dt STRING, category INT, amount DOUBLE ) ROW FORMAT DELIMITED FIELDS TERMINATED BY , STORED AS TEXTFILE LOCATION obs://hhu-exp-2024-001/exp/data;逻辑说明用EXTERNAL TABLE而不是普通内部表是因为外部表删除时只删元数据不删 OBS 上的原始文件。内部表 DROP 时 Hive 会尝试清空 LOCATION 指向的数据一旦操作失误就把结果文件也删了。实验中所有业务数据都该用外部表。FIELDS TERMINATED BY ,必须和 CSV 的分隔符严格一致哪怕多一个空格整行数据都会读成 NULL。类型这里也有讲究用户 ID 用 BIGINT金额用 DOUBLE日期先留成 STRING。有人喜欢把日期在建表时就转成 DATE 类型但转完再排查格式问题就麻烦先 STRING 后 CAST 是更稳的顺序。我用一个反直觉案例说明CSV 文件如果是在 Windows 上编辑过行尾会带\r回车符Hive 读取时把\r算进最后一个字段金额列就会出现诡异的小数点和科学计数法。解决办法是在上传前用sed -i s/\r$// data/orders.csv清洗一遍。建表完成后验证一下这是每个报告里必须有的步骤。SELECT count(*) FROM hhu_db.orders; SELECT * FROM hhu_db.orders LIMIT 5;如果 count 返回 10000数据映射正确。如果出现 NULL优先检查分隔符、换行符和字段顺序而不是怀疑集群资源。4.3 统计分析、结果导出与文件校验让每条结论都能被复查分析任务我一般拆成三个每日订单量 PV、每日去重用户数 UV、每日总金额以及品类金额排行。第一个报表结果写入 OBS 指定目录。INSERT OVERWRITE DIRECTORY obs://hhu-exp-2024-001/exp/output/stat1/ ROW FORMAT DELIMITED FIELDS TERMINATED BY , SELECT order_dt, COUNT(*) AS order_cnt, COUNT(DISTINCT user_id) AS user_cnt, ROUND(SUM(amount), 2) AS total_amt FROM hhu_db.orders GROUP BY order_dt ORDER BY order_dt;参数说明INSERT OVERWRITE DIRECTORY会把目标目录下的旧文件清空再写入新结果所以每个统计结果要单独建子目录比如stat1、stat2不要全部塞进同一个output目录否则后跑的语句会把先跑的结果覆盖掉。执行完成后OBS 对应目录下会生成part-00000-xxx文件和_SUCCESS标记文件。_SUCCESS存在表示作业成功这是报告里很好的成功信号。第二个统计是品类金额排行正好用来对比COUNT(DISTINCT)的性能变化。SELECT category, COUNT(*) AS order_cnt, ROUND(SUM(amount), 2) AS total_amt FROM hhu_db.orders GROUP BY category ORDER BY total_amt DESC LIMIT 5;当数据量小的时候COUNT(DISTINCT user_id)没压力。但实验报告里最好主动写一句数据量大时这个写法会引发数据倾斜和内存压力可以用「先 GROUP BY user_id 再 COUNT(1)」的两阶段查询替代。这句话是加分项说明你不仅会跑还知道瓶颈在哪。结果文件校验这一步常被忽略。跑完 SQL 后回到跳板机执行以下命令。# 列出结果目录下所有文件及大小 obsutil ls obs://hhu-exp-2024-001/exp/output/stat1/ # 直接查看结果文件前几行 obsutil cat obs://hhu-exp-2024-001/exp/output/stat1/part-00000-000000 # 统计结果文件行数 obsutil cat obs://hhu-exp-2024-001/exp/output/stat1/part-00000-000000 | wc -lwc -l的行数和 SQL 里 GROUP BY 得到的分组数应该一致比如 31 天的数据就应该是 31 行。这个数字能证明文件完整、没有半途截断报告里把它和 Hive 的返回行数写在一起可复现性就立住了。5. 华为云大数据实验常见问题排坑连不上、没权限、跑得慢5.1 SSH 连不上跳板机或 master 节点现象本地执行ssh -i hhu-key.pem root跳板机IP后一直卡在 Connection timed out或连上跳板机后 SSH master 节点失败。原因安全组入方向没有放行 22 端口或者放行的源地址写错。很多同学直接放行0.0.0.0/0看似省事反而容易被云平台的安全策略拦截master 节点通常没有公网 IP必须从跳板机通过私网 IP 访问。解决在 VPC 安全组里给跳板机放行「源地址为你当前公网 IP」的 22 端口给 master 节点放行「源地址为跳板机私网 IP」的 22 端口。排查时加ssh -v参数看输出停在哪一步停在「Connection timed out」是网络不通停在「Permission denied」是密钥问题。5.2 hive 命令找不到或 bigdata_env 不生效现象登录 master 节点后执行hive -e show databases;返回bash: hive: command not found。原因MRS 客户端没安装或者安装了但在别的目录当前 shell 没有加载bigdata_env。MRS 集群详情页可以下载客户端安装包解压位置一般是/opt/client但这不是绝对的。解决先find / -name bigdata_env 2/dev/null找到环境脚本路径执行后再which hive验证。如果连bigdata_env都找不到说明客户端没装回到 MRS 控制台下载对应版本客户端按帮助文档解压。这个问题在报告里不需要回避直接写成「客户端环境变量初始化」步骤。5.3 SELECT 结果一列全是 NULL现象SELECT * FROM orders LIMIT 5能返回行数但 category 或 amount 字段全是 NULL。原因三个可能来源。一是 CSV 行尾带\r回车符被读进字段导致类型转换失败二是表的分隔符和文件不一致三是本地生成的 CSV 是 UTF-8但某些情况下转码后出现 BOM 头第一个字段名和值混入不可见字符。解决先看原始文件的隐蔽字符head -3 data/orders.csv | od -c如果行尾出现\r用sed -i s/\r$//清洗后重新上传。再检查建表语句的FIELDS TERMINATED BY是否和文件里实际使用的分隔符一致。排查顺序固定为先查文件再查表结构不要一上来就改 SQL。5.4 作业提交后一直 ACCEPTED 不执行现象Hive SQL 提交后很快返回但日志里一直显示 ACCEPTED 或 PENDING状态不变跑几分钟都没结果。原因YARN 资源不足。集群规格太小或者同实验小组多个人共用一个集群资源被僵尸任务占满。另一个常见原因是 SQL 太复杂且数据量增大后单核小内存的节点反复 OOM 重试。解决先yarn application -list看所有作业状态找到占用资源的 application ID用yarn application -kill application_id清掉卡死的任务。然后在报告里把这个过程写成「资源排查记录」。如果同一个小组共用集群规划好时间段错峰跑而不是所有人同时提交大查询。5.5 删除集群后结果文件找不到了现象集群删除后重新创建发现之前在 Hive 里跑出来的某张表数据不见了误以为云上数据丢失。原因数据存放在 HDFS 上而 HDFS 属于 MRS 集群生命周期的一部分集群删除即释放。原始数据和最终结果如果全程放 OBS就不会出现这个问题。解决从建表开始就遵守「数据在 OBS计算在临时集群」的约定关键结果用INSERT OVERWRITE DIRECTORY写到 OBS。删除集群前用obsutil ls核对所有输出目录确认结果文件都在。这也是报告里值得主动写一段的原则存算分离的意义就在这里数据不因计算集群销毁而丢失。6. 把报告写扎实用时间戳、应用 ID 和结果快照证明你真的跑过实验报告最怕写成「操作说明书粘贴版」只有命令没有证据。我的习惯是给每个关键步骤加三类佐证时间戳、任务编号、结果快照。时间戳最简单在 SQL 前后各打一个date命令两个时间差就是这个查询的真实耗时。命令如下。date %F %T; hive -e SELECT count(*) FROM hhu_db.orders;; date %F %T任务编号去 YARN 里拿。执行yarn application -list能看到一串application_xxxx格式的 ID。把这个 ID 和对应的 SQL 放进报告导师或评审一眼能看出作业是真的在集群里跑过的而不是只贴了一段截图。我最早交 hhu 实验报告时只写了 SQL 和结果后来补上应用 ID 和耗时之后被某导师点评说「这才像做过实验」。结果快照包括两部分OBS 目录下obsutil ls的文件列表和wc -l统计的行数。前者证明输出存在后者证明输出完整。有条件的话把 OBS 控制台里结果文件的浏览截图也放一版配合命令行输出主次分明。进阶方向是加一个对照实验同一份 SQL在华为云 DLI 这种无服务器计算服务上重新跑一遍不需要维护集群把两者的耗时和操作步骤整理成一张对比表。这个对照能说明你理解了「集群型计算」和「无服务器计算」的差别也能在 MRS 集群资源不足陷入死胡同时兜底。最后说一句我的经验报告的可复现性比任何花哨图表都重要凡是能落到命令和文件的操作就不要只贴截图。希望帮到你。本文还有配套的精品资源点击获取

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑