一、Shell命令行操作(client1,适合快速批量操作,基于 Linux 环境)

核心思路:

通过Hadoop提供的hadoop fshdfs dfs命令(两者等效)与 HDFS 交互,语法类似Linux文件命令,需注意区分本地路径和HDFS路径。

1. 进程管理

!!前提条件

  • 已正确安装 Hadoop 并配置好环境变量($HADOOP_HOME 已设置,可通过 echo $HADOOP_HOME 验证是否输出正确路径)。
  • 若为分布式集群,需确保各节点间 SSH 免密登录已配置,且配置文件(如 core-site.xmlhdfs-site.xml 等)正确无误。
  • 操作需使用具有 Hadoop 操作权限的用户(通常为 hadoop 或管理员用户)。

(1)一键启停 HDFS 集群

A. 启动 HDFS 集群

当需要启动集群时,执行以下命令:

$HADOOP_HOME/sbin/start-dfs.sh

说明:该命令会依次启动集群中的 NameNode(主节点)、DataNode(从节点,所有数据节点)和 SecondaryNameNode(辅助名称节点)。若为单节点伪分布式,会在本地启动所有进程;若为分布式,会远程启动各节点的对应进程。

执行效果如下:终端输出进程列表

B. 验证 HDFS 进程是否启动成功

jps

执行效果如下

C. 关闭 HDFS 集群

当需要停止集群时,执行以下命令:

$HADOOP_HOME/sbin/stop-dfs.sh

说明:该命令会依次停止 SecondaryNameNodeDataNodeNameNode 进程,确保数据安全关闭。关闭后可再次执行 jps 验证,上述 HDFS 进程应已消失。

执行效果如下

(2)单独控制进程(NameNode/SecondaryNameNode/DataNode)

# 示例:启动 NameNode
$HADOOP_HOME/sbin/hadoop-daemon.sh start namenode
# 示例:查看 DataNode 状态
$HADOOP_HOME/sbin/hadoop-daemon.sh status datanode
# 示例:停止 SecondaryNameNode
$HADOOP_HOME/sbin/hadoop-daemon.sh stop secondarynamenode

# 新版 HDFS 命令(等效用法)
hdfs --daemon start namenode
hdfs --daemon status datanode
hdfs --daemon stop secondarynamenode

执行效果如下:

2. 文件系统核心操作

操作类型 命令示例 说明
目录创建 hadoop fs -mkdir -p /hdfs_demo/input -p 表示递归创建,即使父目录不存在也会自动创建
文件上传 hadoop fs -put local_file.txt /hdfs_demo/input 将本地 local_file.txt 上传到 HDFS 路径 /hdfs_demo/input
内容查看 hadoop fs -cat /hdfs_demo/input/local_file.txt 查看 HDFS 文件的完整内容
数据追加 echo "new content" > append.txt && hadoop fs -appendToFile append.txt /hdfs_demo/input/local_file.txt 先在本地创建 append.txt,再追加到 HDFS 文件中
文件复制 hadoop fs -cp /hdfs_demo/input/local_file.txt /hdfs_demo/input/file_copy.txt 复制文件并可重命名
移动 / 重命名 hadoop fs -mv /hdfs_demo/input/file_copy.txt /hdfs_demo/input/file_rename.txt 移动文件到新目录或直接重命名
本地下载 hadoop fs -get /hdfs_demo/input/local_file.txt ./local_download/ 将 HDFS 文件下载到本地 ./local_download/ 目录
删除文件 hadoop fs -rm /hdfs_demo/input/file_rename.txt 删除单个文件
删除目录 hadoop fs -rm -r /hdfs_demo -r 表示递归删除目录及内部所有内容

(1)创建 HDFS 目录

操作目的:在 HDFS 上创建用于存储文件的目录(类似本地文件夹)。

执行以下命令

# 创建一级目录(若父目录不存在会报错)
hadoop fs -mkdir /test_dir

# 创建多级目录(-p参数自动创建父目录,推荐)
hadoop fs -mkdir -p /hdfs_demo/input

#验证命令
hadoop fs -ls /

执行思路:HDFS 路径以/开头,-p参数确保即使/hdfs_demo不存在,也会先创建它,再创建input子目录。

执行效果如下:

(2)上传本地文件到 HDFS

操作目的:将 Linux 本地文件传输到 HDFS 的目标目录。

执行以下命令

# 先在本地创建测试文件
echo "Hello HDFS" > local_test.txt

# 上传本地文件到HDFS的/hdfs_demo/input目录
hadoop fs -put local_test.txt /hdfs_demo/input/

#验证
hadoop fs -ls /hdfs_demo/input

    执行思路put命令格式为hadoop fs -put 本地路径 HDFS路径,若 HDFS 路径以/结尾,表示上传到该目录下(文件名不变)。

    执行效果如下:

    (3)查看 HDFS 文件内容

    操作目的:验证文件是否成功上传,或查看文件内容。

    执行以下命令

    # 查看HDFS文件内容
    hadoop fs -cat /hdfs_demo/input/local_test.txt
    
      执行效果如下

      (4)追加内容到 HDFS 文件

      操作目的:向已存在的 HDFS 文件添加新内容(需确保 HDFS 配置允许追加,默认开启)。

      执行以下命令

      # 本地创建待追加的内容文件
      echo "Append this line" > append_content.txt
      
      # 追加到HDFS文件
      hadoop fs -appendToFile append_content.txt /hdfs_demo/input/local_test.txt
      
      # 再次查看验证
      hadoop fs -cat /hdfs_demo/input/local_test.txt
      
        执行效果如下

        (5)复制 HDFS 中的文件(HDFS 内部复制)

        操作目的:在 HDFS 内部复制文件到其他目录(类似本地 cp 命令)。

        执行以下命令:

        # 复制 HDFS 中的 local_test.txt 到 /test_dir 目录(文件名不变)
        hadoop fs -cp /hdfs_demo/input/local_test.txt /test_dir/
        
        # 复制并改名(复制到 /test_dir 并命名为 copied_file.txt)
        hadoop fs -cp /hdfs_demo/input/local_test.txt /test_dir/copied_file.txt
        
        # 验证:查看 /test_dir 目录
        hadoop fs -ls /test_dir
        

        执行思路:-cp 命令格式为 hadoop fs -cp HDFS源路径 HDFS目标路径,若目标路径是目录,文件会以原名复制到该目录;若指定新文件名,则会重命名。

        注意:直接复制到新文件名会报错,要先另创建新文件夹并命名。

        执行效果如下

        (6)移动 HDFS 中的文件(HDFS 内部移动 / 重命名)

        操作目的:在 HDFS 内部移动文件(类似本地 mv 命令,可用于重命名)。

        执行以下命令:

        # 移动 /test_dir/copied_file.txt 到 /hdfs_demo 目录(文件名不变)
        hadoop fs -mv /test_dir/copied_file.txt /hdfs_demo/
        
        # 重命名 HDFS 中的文件(将 local_test.txt 改名为 renamed_test.txt)
        hadoop fs -mv /hdfs_demo/input/local_test.txt /hdfs_demo/input/renamed_test.txt
        
        # 验证:查看移动和重命名后的结果
        hadoop fs -ls /hdfs_demo
        hadoop fs -ls /hdfs_demo/input
        

        执行思路:-mv 命令既可移动文件到其他目录,也可直接重命名(目标路径为同一目录下的新文件名),原文件会被删除。

        执行效果如下

        (7)从 HDFS 下载文件到本地

        操作目的:将 HDFS 中的文件下载到 Linux 本地目录(类似 get 命令)。

        执行以下命令:

        # 下载 HDFS 中的 renamed_test.txt 到本地当前目录(文件名不变)
        hadoop fs -get /hdfs_demo/input/renamed_test.txt ./
        
        # 下载并改名(下载到本地并命名为 downloaded_file.txt)
        hadoop fs -get /hdfs_demo/input/renamed_test.txt ./downloaded_file.txt
        
        # 验证:查看本地文件
        ls -l ./renamed_test.txt ./downloaded_file.txt
        cat ./downloaded_file.txt
        

        执行思路:-get 命令格式为 hadoop fs -get HDFS路径 本地路径,若本地路径是目录,文件会以原名下载到该目录;若指定新文件名,则会重命名。

        执行效果如下:

        (8)删除 HDFS 中的文件或目录

        操作目的:清理 HDFS 中不需要的文件或目录(谨慎操作!)。

        执行以下命令:

        # 删除 HDFS 中的单个文件
        hadoop fs -rm /hdfs_demo/copied_file.txt
        
        # 删除空目录(若目录非空会报错)
        hadoop fs -rmdir /test_dir  # 需确保 /test_dir 中已无文件
        
        # 强制删除非空目录及所有内容(-r 递归删除,-f 强制不提示)
        hadoop fs -rm -r -f /hdfs_demo/input
        
        # 验证:查看根目录,确认文件/目录已删除
        hadoop fs -ls /
        

        执行思路:

        • 删除文件用 -rm,删除空目录用 -rmdir
        • 非空目录必须用 -rm -r(递归删除),加 -f 可跳过确认提示。
        执行效果如下:

        二、Web界面操作(client2,9870端口)

        1. 访问 Web UI

        Hadoop 3.x 及以上版本:在浏览器输入 http://<namenode-ip>:9870(如 http://192.168.142.131:9870)。

        验证路径方法:

        (1)查看配置文件

        # 打开 HDFS 配置文件 hdfs-site.xml
        vi $HADOOP_HOME/etc/hadoop/hdfs-site.xml
        

        在文件中查找 <property> 标签下的 dfs.namenode.http-address 配置,示例如下:

        <property>
            <name>dfs.namenode.http-address</name>
            <value>localhost:9870</value>  <!-- 这里的 localhost 和 9870 就是 Web 界面的主机和端口 -->
        </property>
        

        执行效果如下:

        因为Hadoop 版本是 3.x 系列,HDFS Web 界面的默认端口是 9870,无需在配置文件中显式配置也能直接访问。

        按以下步骤验证:

        【步骤 1】确认 NameNode 进程正常运行

        jps
        

        需包含 NameNode 进程(若未运行,执行 start-dfs.sh 启动)。

        【步骤 2】验证 9870 端口是否监听

        netstat -tuln | grep 9870
        

        若输出 LISTEN,说明端口正常开放。

        执行效果如下:

        (2)命令行查询

        直接通过 Hadoop 命令获取配置项:

        hadoop fs -getconf -confKey dfs.namenode.http-address
        

        执行后会输出类似 localhost:9870 的结果,其中 localhost 是主机名,9870 是 HDFS Web 界面的端口。

        执行效果如下:

        不同 Hadoop 版本的命令参数可能略有差异,本版本中hadoop fs -getconf不支持直接查询配置项,换一种方式获取 HDFS Web 界面地址:

        【方法 1】直接查看hdfs-site.xml配置文件

        # 搜索HDFS Web界面的配置项( namenode http地址 )
        grep "dfs.namenode.http-address" $HADOOP_HOME/etc/hadoop/hdfs-site.xml
        

        输出类似:

        <name>dfs.namenode.http-address</name>
        <value>localhost:9870</value>  <!-- 这里的localhost:9870就是Web地址 -->
        

        【方法 2】查看 Hadoop 默认配置(若未手动修改过)

        Hadoop 3.x 版本默认的 HDFS Web 界面端口为9870,主机为当前节点的主机名或 IP,因此默认地址为:

        http://localhost:9870
        

        或使用本机 IP(例如你的 IP 是 192.168.195.133):

        http://192.168.195.133:9870

        执行效果如下:

        2. 网页端文件操作

        (1) 进入 Web UI 后,点击顶部菜单 Utilities → Browse the file system

        (2)在文件浏览页面,可执行以下操作:

        创建文件夹:点击 “新建文件夹” 图标,输入目录名即可。

        上传文件:点击 “上传文件” 图标,选择本地文件上传。

        删除文件 / 目录:勾选目标文件 / 目录,点击 “删除” 按钮。

        返回上级目录:点击 “返回” 图标即可。

        三、Java API 操作(client3,IDEA + Big Data Tools 插件)

        1. 本地环境准备(Windows)

        (1)解压 Hadoop 安装包

        下载 Hadoop 安装包(如 hadoop-3.3.6.tar.gz),解压到本地路径(如 G:\Edge\hadoop-3.3.6)。若解压时提示需要管理员权限,按住 Shift 键右键选择 “以管理员身份解压”。

        (2)配置系统环境变量

        A. 右键 “此电脑”→“属性”→“高级系统设置”→“环境变量”。

        B. 新建系统变量 HADOOP_HOME,值为G:\Edge\hadoop-3.3.6(以实际解压路径为准)。

        C. 编辑系统变量 Path,添加 %HADOOP_HOME%\bin

        (3)下载并放置依赖文件

        下载 hadoop.dll 和 winutils.exe

        (地址:https://github.com/steveloughran/winutils/blob/master/hadoop-3.0.0/bin/hadoop.dll
        https://github.com/steveloughran/winutils/blob/master/hadoop-3.0.0/bin/winutils.exe
        ),并将其放入 G:\Edge\hadoop-3.3.6\bin 目录。

        2. IDEA 插件安装与配置

        (1) 安装 Big Data Tools 插件打开 IDEA → 点击 “File”→“Settings”→“Plugins”→ 搜索 “Big Data Tools”→ 安装后重启 IDEA。

        (2) 步骤 2:配置 HDFS 连接

        A. 重启 IDEA 后,点击右侧 “Big Data Tools” 面板 → 点击 “+”→ 选择 “HDFS”。

        B. 配置连接信息

        可以通过配置文件目录Configuration files directory或者显式 URIExplicit uri来连接:

        • Explicit uri:意为 “显式 URI”,即直接通过手动输入 HDFS 集群的完整连接地址(如 hdfs://localhost:9000)来建立连接,需要手动配置 NameNode 的主机、端口等信息。
        • Configuration files directory:意为 “配置文件目录”,即通过指定 Hadoop 安装目录下的 etc/hadoop 文件夹(包含 core-site.xmlhdfs-site.xml 等核心配置文件),让插件自动读取配置信息来连接 HDFS。

        简单来说,你可以根据自己的需求选择:如果清楚 HDFS 的 URI 地址,选 Explicit uri 手动输入;如果有现成的 Hadoop 配置文件,选 Configuration files directory 更便捷。

        若连接失败,可尝试指定本地 Hadoop 配置目录:在 “Configuration Directory” 中选择 E:\hadoop-3.3.6\etc\hadoop,插件会自动读取配置文件连接 HDFS。

        四、三种操作方式的选择与整合

        场景需求 推荐操作方式 优势
        批量脚本执行 Shell 命令行 效率高、适合自动化运维任务
        可视化监控 / 简单操作 Web 界面 无需命令行基础,直观易操作
        开发集成 / 自定义逻辑 Java API(IDEA) 可深度集成业务逻辑,支持复杂自动化任务

        在实际项目中,可结合使用:例如用 Java 代码构建核心业务逻辑,用 Shell 命令行做调试和批量任务,用 Web 界面监控集群状态

        Logo

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

        更多推荐