一、实验目标

  1. 掌握HDFS的格式化操作及其影响。
  2. 熟练使用hdfs dfsadmin命令查看集群状态和网络拓扑。
  3. 理解并实践HDFS的安全模式(Safe Mode),观察其对文件操作的影响。
  4. 综合运用HDFS文件上传、下载、查看等基础命令。

二、实验环境

  • 已配置好的Hadoop集群(包含Namenode和至少一个Datanode)。
  • 学生已登录到Namenode节点(例如 node1)。

三、实验步骤

步骤 1:环境准备与HDFS格式化 (热身)

  1. 停止Hadoop服务:为确保环境干净,先停止所有Hadoop相关服务。

    1
    2
    3
    4
    stop-all.sh 
    # 或者分别停止
    # stop-dfs.sh
    # stop-yarn.sh
  2. 格式化Namenode:执行格式化命令,清空HDFS的元数据。

    1
    hdfs namenode -format
  3. 验证格式化结果:进入dfs.name.dir(由hadoop.tmp.dir配置决定)的current目录,查看是否生成了新的fsimage等文件。

    1
    2
    3
    # 路径可能因配置而异,请根据实际情况修改
    cd /opt/bigdata/hadoop/default/dfs/name/current
    ll

    预期结果:能看到 fsimage_*, seen_txid, VERSION 等文件。

  4. 重启Hadoop服务:启动所有Hadoop服务,使格式化生效。

    1
    2
    3
    4
    start-all.sh
    # 或者分别启动
    # start-dfs.sh
    # start-yarn.sh

步骤 2:上传文件并查看HDFS状态

  1. 创建本地测试文件:在Linux本地创建一个文本文件。

    1
    echo "Hello HDFS, this is a test file for comprehensive operation." > test_hdfs.txt
  2. 上传文件到HDFS:将创建的文件上传到HDFS的用户主目录下。

    1
    hdfs dfs -put test_hdfs.txt /user/zhangsan/
  3. 查看HDFS文件列表:确认文件已成功上传。

    1
    hdfs dfs -ls /user/zhangsan/
  4. 查看HDFS集群报告:使用管理员命令查看整个文件系统的容量、使用情况和Datanode状态。

    1
    hdfs dfsadmin -report

    思考:记录下 DFS UsedDFS Remaining 的值,稍后对比。

步骤 3:管理安全模式

  1. 进入安全模式:手动将Namenode置于安全模式。

    1
    hdfs dfsadmin -safemode enter
  2. 查看安全模式状态:确认当前模式。

    1
    hdfs dfsadmin -safemode get

    预期结果:输出 Safe mode is ON

  3. 尝试修改操作(验证限制):在安全模式下,尝试删除刚刚上传的文件。

    1
    hdfs dfs -rm /user/zhangsan/test_hdfs.txt

    预期结果:操作失败,并提示 Name node is in safe mode.

  4. 尝试读取操作(验证权限):在安全模式下,尝试查看文件内容。

    1
    hdfs dfs -cat /user/zhangsan/test_hdfs.txt

    预期结果:可以成功读取文件内容。

  5. 离开安全模式:手动强制Namenode退出安全模式。

    1
    hdfs dfsadmin -safemode leave

步骤 4:验证与清理

  1. 再次尝试删除文件:在安全模式关闭后,重新执行删除命令。

    1
    hdfs dfs -rm /user/zhangsan/test_hdfs.txt

    预期结果:文件被成功删除。

  2. 再次查看集群报告

    1
    hdfs dfsadmin -report

    思考:对比步骤2中记录的 DFS Used 值,这次的值应该有所减少。

  3. 查看网络拓扑:使用管理员命令查看HDFS集群的网络拓扑结构。

    1
    hdfs dfsadmin -printTopology

    预期结果:显示出机架(rack)和下属的Datanode列表。

四、实验报告要求

  1. 记录实验中每一步执行的命令。
  2. 截图或粘贴步骤关键输出结果。