实验1:Linux、AI助手与HDFS(4学时)
在Windows打开学生包starter/reports/lab01-report.docx,另存为学号+班级+姓名+实验1报告.docx。每步按下方列出的Word栏目填写结果、粘贴文本和插入图片,最终提交这一份Word报告。
目标与起点
从L01镜像开始,无需其他实验。能确认命令在哪台机器执行,能读懂HDFS访问地址,能把文件存入HDFS、查看块位置并取回。Java部分检查运行环境,程序练习使用Python。
建议180分钟:连接与文件操作35分钟;AI辅助和配置35分钟;HDFS操作55分钟;修改与故障练习30分钟;整理报告25分钟。
先阅读记录与提交方法,了解截图、结果、源码与Word报告的提交要求。
1 确认环境
先读 setup.md 并连接虚拟机。以下命令在Linux的student账户执行:
whoami
hostname
pwd
java -version
python --version
labctl doctor
cd ~/work/lab01
mkdir -p evidence
ls -lah
cat hello.txt
预期 whoami 输出student,Python为3.10系列。把“Windows宿主机、Linux客体、SSH”分别写一句说明。Linux命令采用/home/student/...路径;Windows文件通过scp传入虚拟机。
本步填写 Word 报告:1 确认环境
粘贴和填写
- 身份与环境:粘贴whoami、hostname、pwd、java -version、python --version和labctl doctor的命令与关键输出。
- 输入原文:粘贴hello.txt全文。
- 连接解释:各用一句话说明Windows宿主机、Linux虚拟机、SSH的作用;填写镜像与资料版本。
预期结果核对
| 核对项目 | 预期结果 |
|---|---|
| 登录用户 | student |
| Python版本 | 3.10系列 |
| 环境检查 | labctl doctor各检查项为OK |
| 样例文本 | hello distributed computing |
2 确认HDFS访问地址与默认副本数
cat ~/conf/hadoop/core-site.xml
cat ~/conf/hadoop/hdfs-site.xml
hdfs getconf -confKey fs.defaultFS
hdfs getconf -confKey dfs.replication
读取 dfs.replication=1,保留镜像提供的配置。它指定新建文件的默认目标副本数;第4步用实际文件检查保存位置与副本数。已有HDFS保留元数据,禁止重复格式化。
查看 core-site.xml 中 fs.defaultFS 的 hdfs://localhost:9000,区分主机名与端口。用AI解释配置前,先要求它读取实际文件。
本步填写 Word 报告:2 确认HDFS访问地址与默认副本数
粘贴和填写
- 配置原文:粘贴hdfs-site.xml中dfs.replication和core-site.xml中fs.defaultFS的完整property片段。
- 生效配置与地址解释:粘贴hdfs getconf -confKey fs.defaultFS和hdfs getconf -confKey dfs.replication的命令与实际输出;写出地址中的主机名和RPC端口。第4步与实际文件块结果对照。
预期结果核对
| 核对项目 | 预期结果 |
|---|---|
| fs.defaultFS | hdfs://localhost:9000 |
| dfs.replication | 默认目标副本数1 配置保持原值 |
3 启动和观察HDFS
labctl start lab01
jps -l
hdfs dfsadmin -report
hdfs dfs -ls /
预期包含NameNode、DataNode和一个存活DataNode。labctl首次启动会等待可写状态;通过节点报告和文件读写确认HDFS健康。用Windows SSH隧道打开HDFS网页,辨认存活节点。
本步填写 Word 报告:3 启动和观察HDFS
粘贴和填写
- 服务检查输出:粘贴labctl start lab01、jps -l、hdfs dfsadmin -report及hdfs dfs -ls /的命令与关键输出。
- 进程与节点:写出两个服务进程名称及存活节点数,说明网页显示的节点与进程的对应关系。
预期结果核对
| 核对项目 | 预期结果 |
|---|---|
| 服务进程 | NameNode和DataNode |
| 存活DataNode | 1个 |
插图位置
- 图1 HDFS节点状态(模板标识
03-hdfs.png):包含浏览器地址栏、HDFS页面标题和Live Nodes为1的状态。
4 上传读取和下载
hdfs dfs -mkdir -p /course/lab01
hdfs dfs -put -f hello.txt /course/lab01/hello.txt
hdfs dfs -ls /course/lab01
hdfs dfs -cat /course/lab01/hello.txt
hdfs dfs -get -f /course/lab01/hello.txt downloaded.txt
diff hello.txt downloaded.txt
labctl check lab01
diff 没有输出表示两文件相同。ls查看Linux本地文件系统,hdfs dfs -ls查看HDFS名字空间。
运行比较时立即记录退出码:
diff hello.txt downloaded.txt
printf 'diff_exit=%s\n' "$?"
查看刚上传的文件块实际保存在哪里:
hdfs fsck /course/lab01/hello.txt -files -blocks -locations 2>&1 | tee evidence/04-blocks.txt
预期该小文件有1个数据块,每块Live_repl=1,位置列表有1个DataNode地址,文件系统状态为HEALTHY。将位置地址与第3步hdfs dfsadmin -report中的Name地址对照。报告同时列出默认目标副本数、实际副本数和存活节点数;具体块ID和IP以本机输出为准。单个DataNode环境中只有一份节点副本,节点停机后没有另一节点接续提供该块。
本步填写 Word 报告:4 上传读取和下载
粘贴和填写
- 上传与读取:粘贴mkdir、put、HDFS目录列表及cat结果,路径完整。
- 下载与比较:粘贴get命令、diff命令和紧接着输出的diff_exit;写出本地源文件与下载文件名。
- 文件块与节点对照:粘贴hdfs fsck /course/lab01/hello.txt -files -blocks -locations的命令与关键输出,包含块数、块ID、Live_repl、节点地址和健康状态。填写第3步节点报告的Name地址,与块位置对照;分别写出默认目标副本数、实际副本数和存活节点数。
预期结果核对
| 核对项目 | 预期结果 |
|---|---|
| HDFS路径 | /course/lab01/hello.txt |
| 读取内容 | hello distributed computing |
| 本地比较 | diff无差异且diff_exit=0 |
| 小文件块数 | 1 |
| 实际副本与位置 | Live_repl=1 位置列表有1个DataNode地址 与第3步Name地址对应 |
| 文件系统状态 | HEALTHY |
插图位置
- 图2 文件往返核对(模板标识
04-transfer.png):包含上传后的HDFS列表、读取文本、diff命令及diff_exit=0;保留当前实验路径。 - 图3 文件块实际保存位置(模板标识
04-blocks.png):包含fsck命令、hello.txt路径、块ID、Live_repl=1及DataNode地址;具体块ID和IP以本机结果为准。
5 个人文本与路径修复
新建 my-message.txt 写入自己的学号末四位和一句话,上传到/course/lab01/my-message.txt,下载为本地my-message-downloaded.txt并用diff核对。保留规定的hello.txt不变,以便自动检查。
故意读取 /course/lab01/not-exist.txt,记录错误;用列目录的方法确认路径,再读取正确文件。根据列目录的结果修正读取路径。
本步填写 Word 报告:5 个人文本与路径修复
粘贴和填写
- 个人文本与验证:粘贴my-message.txt全文、上传和下载命令及diff退出码。
- 错误与修复记录:粘贴读取not-exist.txt的错误命令、报错原文、列目录输出、修正后的命令与成功结果。
- 最终检查:粘贴labctl check lab01的实际输出。
预期结果核对
| 核对项目 | 预期结果 |
|---|---|
| 个人文件 | my-message.txt含本人学号末四位及一句话 |
| 下载核对 | my-message-downloaded.txt与源文件一致 |
| 故障修复 | 缺失路径报错后读到正确文件 |
报告提交前核对
逐项检查
- [ ] 报告“1 确认环境”的实际结果及填写栏目完整。
- [ ] 报告“2 确认HDFS访问地址与默认副本数”的实际结果及填写栏目完整。
- [ ] 报告“3 启动和观察HDFS”的实际结果及填写栏目完整。
- [ ] 报告“4 上传读取和下载”的实际结果及填写栏目完整。
- [ ] 报告“5 个人文本与路径修复”的实际结果及填写栏目完整。
- [ ] 图1 HDFS节点状态已插入,符合模板中的截图要求。
- [ ] 图2 文件往返核对已插入,符合模板中的截图要求。
- [ ] 图3 文件块实际保存位置已插入,符合模板中的截图要求。
- [ ] 姓名、学号、班级等身份信息完整;实训填写全体成员及个人记录。
- [ ] AI使用情况报告填写简短说明或粘贴一张相关截图;未使用填“未使用”。
- [ ] 保存后重新用Microsoft Word打开,检查截图和文本可读。
按Word记录与提交方法提交填写完成的一份Word报告。教师依据报告中的实际结果、源码、截图和个人记录评分。