Hadoop三大组件之HDFS(二)

HDFS 常用操作命令

Hadoop 分布式文件系统 (HDFS) 提供了灵活且高效的文件管理方式,类似于 Linux 文件系统。本文将介绍常用的 HDFS 操作命令,帮助您更好地掌握 HDFS 的基本操作。

1. 查看 HDFS 内容

HDFS 的目录结构与 Linux 类似,顶层目录为 /

1.1 通过浏览器查看

可以通过以下 URL 在浏览器中查看 HDFS 内容:

http://<服务器IP>:50070 #低版本
http://<服务器IP>:9870 #高版本

详细端口区别可以查看本专栏hadoop第一篇内容

1.2 通过 HDFS 命令查看(hadoop fs 与 hdfs fs 完全相同)

  • 列出根目录内容:

    hadoop fs -ls /
    
  • 列出特定用户目录及其子目录:

    hadoop fs -ls -R /user/username
    

2. 管理 HDFS 文件系统

假设需要操作的 HDFS 路径为 /user/username

2.1 创建目录

  • 创建新目录:

    hadoop fs -mkdir -p /user/username/myfolder
    

    mkdir会在 /user/username 目录下创建一个名为 myfolder 的新目录。如果中间的路径不存在,-p 选项会确保所有必要的父目录都被创建

  • 创建空文件:

    hadoop fs -touchz /user/username/myfolder/emptyfile.txt
    

2.2 本地(正在操作的机器 如Linux)上传文件到 HDFS put

2.2.1 从本地移动文件到 HDFS
  • 剪切并粘贴文件:
    hadoop fs -moveFromLocal /home/user/localfile.txt /user/username/myfolder
    
2.2.2 从本地复制上传文件到 HDFS
  • 拷贝文件:
    hadoop fs -copyFromLocal sample.txt /user/username/myfolder
    
2.2.3 使用 put 上传文件 (常用)
  • 使用 put 命令上传文件,等同于copyFromLocal
    hadoop fs -put sample.txt /user/username/myfolder
    
2.2.4 追加文件到已存在的文件末尾
  • 可以使用 appendToFile 命令将本地文件的内容追加到已经存在的 HDFS 文件末尾。注意,此操作只支持将本地文件追加到 HDFS 文件,不能直接在 HDFS 文件之间追加内容。
    hadoop fs -appendToFile  new_data.txt /user/username/existing_file.txt
    

2.3 从 HDFS 下载文件到本地 get

2.3.1 从 HDFS 拷贝下载到本地
  • 拷贝文件到本地目录:
    hadoop fs -copyToLocal /user/username/myfolder/sample.txt  ./
    
2.3.2 使用 get 下载文件 (常用)
  • 使用 get命令下载文件,等同于copyToLocal
    hadoop fs -get /user/username/myfolder/anotherfile.txt  ./
    

3. HDFS 直接操作

3.1 显示文件内容

  • 显示文件内容:
    hadoop fs -cat /user/username/myfolder/sample.txt
    

3.2 修改文件权限

  • 修改文件权限(基本用不到):
    hadoop fs -chmod 755 /user/username/myfolder/sample.txt
    

3.3 拷贝文件

  • 拷贝文件到新位置:
    hadoop fs -cp /user/username/myfolder/sample.txt /user/username/myfolder/copy_sample.txt
    

3.4 移动文件

  • 移动或重命名文件:
    hadoop fs -mv /user/username/myfolder/sample.txt /user/username/myfolder/renamed_sample.txt
    

3.5 显示文件末尾内容

  • 显示文件的最后 1KB 数据:
    hadoop fs -tail /user/username/myfolder/anotherfile.txt
    

3.6 删除文件或文件夹

  • 删除文件:

    hadoop fs -rm /user/username/myfolder/oldfile.txt
    
  • 递归删除文件夹及其内容:

    hadoop fs -rm -r /user/username/myfolder/old_folder
    

    使用 -r 选项可以使 Hadoop 递归地检查该文件夹中的所有文件和子文件夹并将其一并删除。如果没有 -r 选项,Hadoop 将不会删除文件夹(即使文件夹为空),因为-rm只处理单个文件的删除,与Linux略有不同。

3.7 统计文件夹大小信息

  • 统计文件夹大小:
    hadoop fs -du -s -h /user/username/myfolder
    
### Hadoop HDFS 组件介绍 #### 名词解释 HDFS全称为Hadoop Distributed File System,即Hadoop分布式文件存储系统[^2]。 #### 架构概述 HDFS设计用于存储规模数据,具备高容错性和高吞吐量特性。该架构由四个主要组件构成:HDFS Client、NameNode、DataNode 和 Secondary NameNode[^1]。 #### 各组件功能描述 ##### HDFS Client 作为客户端程序接口的一部分,负责提供给应用程序访问HDFS的能力。通过此模块可以执行诸如创建目录`hadoop fs -mkdir /input`、上传文件`hadoop fs -put bigdata/hadoop-rm -r /input`等操作来管理集群中的文件资源[^4]。 ##### NameNode 扮演着中心管理者角色,维护整个文件系统的命名空间树结构并记录每个文件被分割成多少个block及其位置信息。此外还处理来自客户端的所有元数据请求,比如打开/关闭文件或重命名等动作。 ##### DataNode 实际的数据节点,在物理上分布于各个机器之上,用来保存具体的数据块副本。当有新的数据写入时会接收这些数据;读取的时候则向用户提供所需部分的内容。为了保证可靠性,通常会在多个不同的datanode之间复制相同的数据片段以防止单点故障影响整体可用性。 ##### Secondary NameNode 并非真正意义上的备用namenode,而是辅助工具,主要用于周期性的合并编辑日志和fsimage镜像文件到一个新的fsimage中,从而减少重启时间内的恢复工作量。需要注意的是secondary namenode并不会自动接管主namenode的功能,两者间不存在心跳检测机制[^3]。 ```bash # 创建输入目录 hadoop fs -mkdir /input # 将本地文件放入HDFS指定位置 hadoop fs -put localfile /user/hadoop/input # 删除指定目录下的全部内容 hadoop fs -rm -r /input ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值