任务 1:Client1 - HDFS 操作(基于 VM 命令行)

核心目标

通过 Client1(可直接操作 VM 的node1节点)执行 HDFS 基础管理操作,验证文件系统可用性。

操作步骤
  1. 启动 HDFS 服务

    • 登录node1节点(已免密,执行ssh wanglicheng@node1)。
    • 进入 Hadoopsbin目录(替换/path/to/hadoop为实际安装路径):

      bash

      cd /path/to/hadoop/sbin
      
    • 启动 HDFS:

      bash

      ./start-dfs.sh
      
    • 验证进程(出现NameNodeDataNode即成功):

      bash

      jps
      
  2. 执行 HDFS 核心操作

    操作类型具体命令验证方式
    查看根目录hdfs dfs -ls /终端显示 HDFS 根目录下的文件 / 目录
    创建专属目录hdfs dfs -mkdir /client1_hdfs_dir再次执行hdfs dfs -ls /确认目录存在
    上传本地文件hdfs dfs -put /home/wanglicheng/test.txt /client1_hdfs_dir执行hdfs dfs -ls /client1_hdfs_dir查看文件
    下载 HDFS 文件hdfs dfs -get /client1_hdfs_dir/test.txt /home/wanglicheng/download/查看本地download目录是否有文件
    查看文件内容hdfs dfs -cat /client1_hdfs_dir/test.txt终端显示文件内容
1. 查看 HDFS 空间使用情况

bash

hdfs dfs -df -h /
  • 预期结果:显示 HDFS 总容量、已用空间、可用空间及使用率。
2. 查看 HDFS 块状态

bash

hdfs fsck / -files -blocks
  • 用途:检查文件块的完整性(适合数据校验场景)。

任务 2:Client2 - 9870 端口 HDFS Web UI 操作

核心目标

通过 Client2(另一台可访问 VM 网络的设备)的浏览器,可视化管理 HDFS 并完成 “联系” 相关操作(集群监控、日志查看)。

操作步骤
  1. 获取 VM 的 IP 地址

    • node1终端执行,获取node1的局域网 IP(如192.168.1.105):

      bash

      ifconfig  # 或ip addr,找到“inet”后的IP
      
  2. 访问 Web UI 界面

    • 在 Client2 的浏览器(Chrome/Edge)地址栏输入:

      plaintext

      http://[node1的IP]:9870  # 示例:http://192.168.1.105:9870
      
    • 若无法访问,在node1终端关闭防火墙(测试环境适用):

      bash

      sudo systemctl stop firewalld
      
  3. 关键 Web 操作(含 “联系” 相关)

    1. 文件管理:点击左侧「Utilities」→「Browse the file system」,可查看 / 上传 / 删除文件,与任务 1 创建的/client1_hdfs_dir联动验证。
    2. 集群监控:在首页「Cluster Summary」查看 HDFS 总容量、可用空间;点击「DataNodes」查看节点状态(用于集群维护 “联系”)。
    3. 日志查看:点击左侧「Utilities」→「Logs」,查看NameNode/DataNode运行日志,若需技术支持,可导出日志用于 “联系” 沟通。

任务 3:Client3 - Java 代码操作 HDFS

一、确认 JDK 有效性(关键第一步)

  1. 验证 JDK 版本打开终端(Linux)或 CMD(Windows),执行:

    bash

    java -version
    
    • 若输出类似 java version "1.8.0_xxx" 或更高版本(如11.0.x),说明 JDK 可用,继续下一步。
    • 若版本低于 1.8,需升级 JDK(参考之前的 JDK 安装步骤)。

二、安装 IntelliJ IDEA(含 Big Data Tools 插件)

  1. 下载并安装 IDE访问IntelliJ IDEA 官网,选择社区版(免费)下载,按向导安装(Linux/Windows 步骤类似)。

    • 安装时勾选 “添加到 PATH”(Windows)或默认路径(Linux),确保 IDE 可正常启动。
  2. 安装 Big Data Tools 插件启动 IDE 后:

    • 进入 File > Settings > Plugins(Windows/Linux)或 IntelliJ IDEA > Settings > Plugins(Mac)。
    • 在搜索框输入 Big Data Tools,点击Install,安装完成后重启 IDE。

三、配置 Maven(IDE 内置,无需单独安装)

IntelliJ IDEA自带 Maven,无需手动安装,只需确认配置即可:

  1. 进入 File > Settings > Build, Execution, Deployment > Build Tools > Maven
  2. 确认 Maven home path 为 IDE 内置路径(如 C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2023.2.5\plugins\maven\lib\maven3),保持默认即可。
  3. 点击OK,Maven 环境就绪。

四、后续步骤(已有 JDK 的情况下)

  1. 创建 Maven 项目:在 IDE 中新建 Maven 项目,添加 Hadoop 客户端依赖(参考之前的pom.xml配置)。
  2. 编写 Java 代码:实现 HDFS 操作逻辑(目录创建、文件上传等)。
  3. 配置 Big Data Tools 连接 HDFS:通过插件可视化验证代码执行结果。

总结

只要 JDK 有效,可直接通过 IntelliJ IDEA 的内置 Maven 和插件市场完成剩余环境搭建,无需额外安装独立的 Maven。核心依赖 JDK 已满足,后续步骤聚焦于 IDE 配置和代码开发即可。

具体操作

以下是在已有 JDK(8 及以上) 的前提下,完成 Client3 - Java 代码操作 HDFS(含 Big Data Tools 插件) 的具体操作步骤,全程基于 IntelliJ IDEA(社区版,免费):

一、安装 IntelliJ IDEA(以 Windows 为例)

1. 下载 IDE
2. 安装 IDE
  • 双击安装包,勾选以下选项(推荐):
    • Create Desktop Shortcut(创建桌面快捷方式)
    • Add "Open Folder as Project"(支持右键打开项目)
    • Add to PATH(将 IDE 添加到环境变量,可选)
  • 点击 “Next”,选择安装路径(如D:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2023.3.5),完成安装并启动。

二、安装 Big Data Tools 插件

  1. 首次启动 IDE,选择 “Do not import settings”,点击 “OK”。
  2. 进入欢迎界面,点击左侧 “Plugins”(插件)。
  3. 在搜索框输入Big Data Tools,找到插件后点击 “Install”(安装)。
  4. 安装完成后,点击 “Restart IDE”(重启 IDE)使插件生效。

三、创建 Maven 项目(内置 Maven,无需单独安装)

  1. 重启后,在欢迎界面点击 “New Project”。
  2. 左侧选择 “Maven”,右侧保持默认(Project SDK自动识别已安装的 JDK,若未识别点击 “Add SDK” 选择 JDK 安装目录)。
  3. 填写项目信息:
    • GroupIdcom.example(自定义,通常为域名反转)
    • ArtifactIdhdfs-client3(项目名)
    • Version1.0-SNAPSHOT(默认)
  4. 选择项目保存路径(如D:\projects\hdfs-client3),点击 “Create” 创建项目。

四、配置 Hadoop 依赖(pom.xml)

  1. 在项目左侧目录树中,找到pom.xml文件,双击打开。
  2. <dependencies>标签内添加 Hadoop 客户端依赖(版本与 HDFS 集群一致,如 3.3.4):

    xml

    <dependencies>
        <!-- Hadoop客户端依赖 -->
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-client</artifactId>
            <version>3.3.4</version>
        </dependency>
    </dependencies>
    
  3. 右键pom.xml文件,选择 “Maven> Reload Project”(加载依赖),等待依赖下载完成(底部进度条消失)。

五、配置 HDFS 连接信息(core-site.xml)

  1. 在项目目录树中,展开src/main,右键main → New > Directory,创建resources目录(用于存放配置文件)。
  2. 右键resources → New > File,创建core-site.xml文件,添加内容(替换192.168.1.100为 Node1 的 IP):

    xml

    <configuration>
        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://192.168.1.100:9000</value> <!-- HDFS的NameNode地址 -->
        </property>
    </configuration>
    

六、编写 Java 代码操作 HDFS

  1. 在目录树中,展开src/main/java/com/example,右键example → New > Java Class,类名输入HDFSClient3,点击 “OK”。
  2. 复制以下代码到类中(实现目录创建、文件上传、读取 Client1 的文件):

    java

    运行

    package com.example;
    
    import org.apache.hadoop.conf.Configuration;
    import org.apache.hadoop.fs.*;
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    
    public class HDFSClient3 {
        public static void main(String[] args) throws Exception {
            // 1. 加载HDFS配置(自动读取resources/core-site.xml)
            Configuration conf = new Configuration();
    
            // 2. 获取HDFS文件系统对象
            FileSystem fs = FileSystem.get(conf);
            System.out.println("已连接HDFS:" + conf.get("fs.defaultFS"));
    
            // 3. 创建Client3专属目录(基于Client1的/client1_test_dir)
            Path client3Dir = new Path("/client1_test_dir/client3_dir");
            if (fs.mkdirs(client3Dir)) {
                System.out.println("目录创建成功:" + client3Dir);
            } else {
                System.out.println("目录已存在:" + client3Dir);
            }
    
            // 4. 上传本地文件到HDFS(需先创建本地文件)
            // 本地文件路径:项目根目录下的client3_local.txt
            Path localFile = new Path("client3_local.txt");
            // HDFS目标路径:client3Dir下的client3_upload.txt
            Path hdfsFile = new Path(client3Dir + "/client3_upload.txt");
            fs.copyFromLocalFile(localFile, hdfsFile);
            System.out.println("文件上传成功:" + hdfsFile);
    
            // 5. 读取Client1上传的文件(验证联动)
            Path client1File = new Path("/client1_test_dir/test_client2.txt");
            if (fs.exists(client1File)) {
                System.out.println("\n===== Client1文件内容 =====");
                try (FSDataInputStream in = fs.open(client1File);
                     BufferedReader br = new BufferedReader(new InputStreamReader(in))) {
                    String line;
                    while ((line = br.readLine()) != null) {
                        System.out.println(line); // 预期输出:Client2 验证数据
                    }
                }
            } else {
                System.out.println("Client1文件不存在:" + client1File);
            }
    
            // 6. 关闭连接
            fs.close();
            System.out.println("\n操作完成,已断开连接");
        }
    }
    

七、准备本地测试文件

  1. 在项目根目录(D:\projects\hdfs-client3)下,右键空白处 → New > Text Document,命名为client3_local.txt
  2. 打开文件,输入内容:Client3 测试数据(通过Java代码上传),保存关闭。

八、通过 Big Data Tools 插件连接 HDFS

  1. 在 IDE 右侧找到Big Data Tools面板(若未显示,点击View > Tool Windows > Big Data Tools调出)。
  2. 点击面板左上角+ → 选择Hadoop Distributed File System (HDFS)
  3. 在配置窗口:
    • NameNode URI:输入hdfs://192.168.1.100:9000(与core-site.xml一致)。
    • 其他保持默认,点击Test Connection,提示 “Connection successful” 即连接成功。
  4. 点击OK,在插件面板中展开 HDFS 目录树,可看到/client1_test_dir(Client1 创建的目录)。

九、运行代码并验证结果

1. 运行 Java 程序
  • 右键HDFSClient3.java文件 → Run 'HDFSClient3.main()'
  • 控制台预期输出:

    plaintext

    已连接HDFS:hdfs://192.168.1.100:9000
    目录创建成功:/client1_test_dir/client3_dir
    文件上传成功:/client1_test_dir/client3_dir/client3_upload.txt
    
    ===== Client1文件内容 =====
    Client2 验证数据
    
    操作完成,已断开连接
    
2. 用 Big Data Tools 验证
  • 在插件面板中,展开/client1_test_dir/client3_dir,可看到client3_upload.txt(Java 代码上传的文件)。
  • 右键该文件 → Download,保存到本地后打开,内容与client3_local.txt一致。
  • 展开/client1_test_dir,确认test_client2.txt存在,与代码读取结果一致。

十、常见问题解决

问题解决方法
依赖下载慢打开File > Settings > Build, Execution, Deployment > Build Tools > Maven > Repositories,添加阿里云镜像(https://maven.aliyun.com/repository/public)。
HDFS 连接失败1. 检查core-site.xml的 IP 和端口是否正确;2. 在 Node1 执行sudo systemctl stop firewalld关闭防火墙。
权限不足在 Node1 终端执行:hdfs dfs -chmod -R 777 /client1_test_dir(测试环境开放权限)。
Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐