课程定位:动手部署与运维能力
建议学时:64 学时(32理论 + 32上机)
核心主线:Linux基础 → 单机/伪分布式 → 完全分布式 → MapReduce编程 → Hive数仓 → HA高可用
| 教材名称 | 特点 | 配套资源 |
|---|---|---|
| 林子雨《大数据技术原理与应用》(第4版) | 人民邮电出版社,国内 500+ 高校采用。第 4 版覆盖 Hadoop / HDFS / HBase / NoSQL / MapReduce / Hive / Spark / Flink / 流计算。 | 讲义PPT、教学大纲、软件、数据集、实验答案、虚拟机镜像、500 道题库(教师可申请) |
| 林子雨《大数据基础编程、实验和案例教程》(第3版) | 清华大学出版社,上面那本的配套实践教材。按大数据分析全流程讲:采集→存储→处理→可视化。 | 实验答案与在线资源可在教材官网下载 |
| 《Hadoop权威指南》(第4版)Tom White | O'Reilly。讲原理与配置细节最权威,适合教师备课深挖和学生进阶阅读。 | - |
| 林子雨《Spark编程基础(Scala版/Python版)》 | 若课时允许加 Spark 环节,用这本,配套国家级一流课程。 | - |
重点,直接省掉大量备课工作量
| 资源 | 说明 | 入口 |
|---|---|---|
| 教材配套下载专区(百度网盘) | 含最新版讲义 PPT、教学大纲、软件安装包、数据集、实验答案、课程思政素材、虚拟机镜像(学生直接导入 VMware 即可,绕过装环境的坑) | 百度网盘 提取码: ziyu |
| 高校大数据课程公共服务平台 | 厦门大学数据库实验室维护,累计访问 2500 万+。内含 17 本系列教材的全部配套资源、上机实验指南、安装指南。 | dblab.xmu.edu.cn |
| Hadoop 集群安装配置教程 | 厦大出品,步骤极详细(含 Ubuntu/CentOS 差异、常见错误),可作为学生实验手册直接印发。 | 集群安装配置教程 |
| 机房上机实验指南 | 与教材课后实验一致的上机指导,直接对应实验课时安排。 | dblab.xmu.edu.cn/post/6131 |
| MOOC《大数据系统及应用》 | 林子雨主讲,每讲配套 PPT 下载,共 7 讲覆盖 Hadoop/HDFS/MapReduce/Hive/YARN。 | 中国大学MOOC |
| 500 道题库 | 教师身份可向出版社/官网申请,出卷非常省事。 | 见教材官网"500道题库"入口 |
| 国家智慧教育平台《Hadoop大数据技术与项目实战》 | 对标国家专业教学标准"大数据平台部署与运维",以"电商平台用户行为数据分析"为项目主线。 | 课程页 |
| 文档 | 链接 | 用途 |
|---|---|---|
| Hadoop Single Node Setup | SingleCluster.html | 单机 / 伪分布式三步走(standalone → pseudo-distributed → YARN),第 1~2 次实验 |
| Hadoop Cluster Setup | ClusterSetup.html | 完全分布式:角色划分、5 个配置文件、hadoop-env.sh、守护进程环境变量,第 5 次实验 |
| HDFS Architecture / User Guide | HdfsDesign.html | 讲存储原理、读写流程、副本机制的理论依据 |
| YARN / MapReduce 官方教程 | hadoop.apache.org/docs/stable 下 MapReduce Tutorial、YARN 文档 | MapReduce 编程与资源调度 |
| HDFS High Availability(QJM) | HDFSHighAvailabilityWithQJM | 第 15 次 HA 实验的权威依据 |
| Hive / HBase / Spark / Zookeeper 官方 Getting Started | 各项目官网 Documentation | 生态组件安装 |
机房环境不统一时的最佳解法
传统方式让每个学生装虚拟机 + 配 3 节点集群,一个班会有 30 种不同的报错。用 Docker Compose 可以一条命令起一套全分布式集群,极大降低第 1~2 周的损耗。
| 仓库 | 内容 | 适用环节 |
|---|---|---|
| hadoop-spark-docker | Hadoop 3.4.1 + Spark 3.5.6 全分布式,改 .env 里的 NUM_WORKER_NODES 即可扩缩容,内置 JupyterLab(8888)、HDFS UI(9870)、YARN UI(8088)、Spark History(18080)。MIT 许可。 |
核心实验环境,一学期通用 |
| eng_dados_cluster | Hadoop 3.x + Spark + Hive 3.1.3 + PostgreSQL 元数据库,配置文件按 .env 自动改写,节点数可调。 |
需要讲 Hive 时 |
| docker-hadoop | 基础 Hadoop 3.3.3 + 可选 Pig 节点、Hive 节点,可 make datanode-scaled WORKERS=N 动态扩 DataNode。 |
演示节点扩缩容 |
| Hadoop_Cluster (HA) | 3 Master + Worker + Zookeeper + Hive Metastore,含健康检查、资源限额、持久化卷,完整 HA。 | 高可用专题实验 |
| Hadoop-Hbase-HA | 最大的价值是保留了"手动搭建全过程命令记录"(Documentation 目录),可直接改编成"手动搭建 HA 集群"实验指导书。 | HA 手动搭建实验 |
| # | 实验 | 关键产出 / 考察点 |
|---|---|---|
| 1 | Linux 基础 + 环境准备(虚拟机 / WSL / Docker 三选一)、创建 hadoop 用户 | 能敲出基本命令、理解用户与权限 |
| 2 | JDK 安装 + SSH 免密登录 + 单机/伪分布式 Hadoop 安装 | jps 看到 NameNode/DataNode |
| 3 | HDFS Shell 操作 + Web UI(9870)+ IDEA/Eclipse 远程开发环境搭建 | 文件增删改查、能看到块信息 |
| 4 | HDFS Java API 编程:上传下载、目录操作、文件元数据读取 | 可运行的 Java 工程 |
| 5 | 完全分布式集群搭建(3 节点:1 Master + 2 Worker) | Live Nodes = 2,跑通 WordCount |
| 6 | 集群基准测试(Terasort)+ 故障排查专题 | 性能数据 + 排错记录 |
| 7 | MapReduce 全流程:WordCount 编码→编译→打包→提交→看 YARN 日志 | 理解 split→map→shuffle→reduce |
| 8 | MapReduce 进阶:去重、排序、TopN、单表关联、多表 Join | 5 个小作业 |
| 9 | MapReduce 经典案例:倒排索引 / 好友推荐 / PageRank(三选二) | 综合编程能力 |
| 10 | YARN 资源调度:队列配置、Container 内存/CPU 调优、三种调度器对比 | 调参前后对比 |
| 11 | Hive 安装 + HiveQL:建表、分区表、数据导入、查询 | HQL 脚本 |
| 12 | Hive 数仓综合:ODS/DWD/DWS 分层 + 电商用户行为分析(UV/PV、漏斗、留存) | 数仓设计文档 + 结果表 |
| 13 | HBase 安装 + Shell/Java API 的 CRUD、RowKey 设计 | 对比 HBase 与 Hive 适用场景 |
| 14 | 数据采集入湖:Flume 采集日志 / Sqoop 同步 MySQL ↔ HDFS ↔ Hive | 端到端数据链路 |
| 15 | HA 高可用部署:Zookeeper + QJM + NameNode 自动故障转移(模拟 kill 主节点观察切换) | 故障转移截图与日志分析 |
| 16 | 综合项目答辩(集群搭建 + 数据入湖 + 处理分析 + 可视化) | 演示 + 报告 |
教学价值极高,建议印成手册发学生
| 现象 | 根因与解法 |
|---|---|
| Live Nodes 为 0 / DataNode 启动后消失 | 多次 hdfs namenode -format 导致 clusterID 不一致。解法:清空所有节点 datanode.data.dir 与 namenode.name.dir 目录后重新格式化(讲清"为什么不能随便 format",是个很好的考点) |
| SSH 免密登录失败 | .ssh 目录权限需 700,authorized_keys 需 600;/etc/hosts 中不能有 127.0.0.1 Master 这类记录 |
| ping 得通但端口不通 | CentOS 防火墙未关闭:systemctl stop firewalld && systemctl disable firewalld |
Error: JAVA_HOME is not set |
需在 hadoop-env.sh 中显式写绝对路径(脚本远程执行时读不到 ~/.bashrc) |
| 9870 / 8088 页面打不开 | 主机名与 IP 映射错误;或配置文件里写 localhost 而非主机名;检查 yarn.resourcemanager.hostname |
| Container killed by YARN / 内存不足 | yarn.nodemanager.resource.memory-mb 与 mapreduce.map.memory.mb 配置不合理,或虚拟机内存本身不够 |
| Windows 本地跑 MR 报 winutils.exe 缺失 | 需额外放置 winutils.exe 与 hadoop.dll。建议 Windows 学生统一改用 WSL2 或 Docker |
| HDFS 副本数告警 / Under-replicated blocks | DataNode 数量少于 dfs.replication,教学集群设为 1~2 |
| 中文乱码 | 源文件编码、MR 读写需统一 UTF-8,Hive 表字符集设置 |
| SafeMode 无法写入 | 刚启动时处于安全模式,hdfs dfsadmin -safemode leave(讲解安全模式机制的好时机) |
| Hive 启动报 metastore 连接失败 | MySQL 驱动未放 $HIVE_HOME/lib、JDBC URL 错误、未初始化 schema(schematool -dbType mysql -initSchema) |
| HBase 启动后 RegionServer 立刻挂 | 时钟不同步(hbase.master.maxclockskew)、Zookeeper 未起、主机名解析问题 |
| 周次 | 理论 | 上机 |
|---|---|---|
| 1 | 大数据概述、Hadoop 生态与版本演进、课程项目介绍 | 实验1 Linux 与虚拟机 |
| 2 | Hadoop 项目结构与安装(伪分布式) | 实验2 伪分布式安装 |
| 3 | HDFS 概念、体系结构、存储原理 | 实验3 HDFS Shell + Web UI |
| 4 | HDFS 读写过程、容错机制 | 实验4 HDFS Java API |
| 5 | 完全分布式部署、配置文件详解 | 实验5 3 节点集群 |
| 6 | 集群管理、基准测试、监控 | 实验6 Terasort + 排错 |
| 7 | MapReduce 模型、体系结构与工作流程 | 实验7 WordCount |
| 8 | Shuffle 过程原理、阶段测验 | 实验8 去重/排序/TopN |
| 9 | MapReduce 应用案例剖析 | 实验9 倒排索引/PageRank |
| 10 | YARN 架构、调度器与资源模型 | 实验10 YARN 调参 |
| 11 | Hive 原理、SQL→MR 转换机制、HA | 实验11 Hive 安装与 HiveQL |
| 12 | 数据仓库分层设计方法论 | 实验12 电商数仓综合 |
| 13 | HBase 数据模型、Region 与存储机制 | 实验13 HBase CRUD |
| 14 | 数据采集:Flume / Sqoop / Kafka 概览 | 实验14 数据采集链路 |
| 15 | 高可用架构(Zookeeper + QJM)、集群运维与调优 | 实验15 HA 部署与故障转移 |
| 16 | 综合项目答辩 + 复习 | 答辩 |
平时(考勤+笔记)20% + 实验报告(16 次,要求含关键截图、日志片段、排错记录,而非只写步骤)40% + 期末实操考试或综合项目(现场搭建/排错 + 答辩)40%。
这门课的核心能力是"遇到问题能解决",所以实验报告的评分重点应放在排错过程而非"照着做成功"。
| 数据集 | 说明 | 获取方式 |
|---|---|---|
| 厦大教材配套数据集 | 含电商用户行为日志(启动日志/事件日志)、数据仓库 10 张表结构字典等,与教材综合案例完全对应 | 教材官网下载专区(网盘) |
| MovieLens 数据集 | 经典推荐系统/MapReduce 练习数据,有 100K / 1M / 25M 多个规模 | grouplens.org/datasets/movielens |
| 淘宝用户行为数据集(天池) | 亿级行为记录,适合做数据清洗 + Hive 数仓分层 + 漏斗分析综合项目 | 天池数据集平台搜索 "UserBehavior" |
| Apache 官方示例作业 | hadoop-mapreduce-examples-*.jar 内含 WordCount、Grep、Sort、Terasort(集群基准测试标配)、Pi 估算 |
随 Hadoop 发行版自带 |