浅谈HDFS--基本操作
1.什么是HDFS
HDFS 是 Hadoop 系统中的核心组件之一,全称是 Hadoop Distributed File System(Hadoop 分布式文件系统)。
一句话总结:
HDFS 就是一种可以把大文件切成一块一块,分布在很多台机器上存储,并统一管理的“超级硬盘系统”。
📦 举个例子:搬家打包
想象你现在要搬家,有一个超大的箱子(文件)要运,但你的小车(电脑硬盘)装不下。
于是你:
-
把这个大箱子切成小箱子(Block)
-
分别放在你朋友家的车上(分布在不同的服务器)
-
然后自己做个清单,记下哪一块放在哪辆车上(元数据)
这个“切分 + 分发 + 统一管理”的方法,就是 HDFS 的核心思路!
🏗️ HDFS 的结构
HDFS 分成两种角色:
角色 | 功能 |
---|---|
NameNode | 就像“总调度”,专门负责记录每个文件的目录、文件名、放在哪台机器上(元数据 Metadata) |
DataNode | 真正的“搬运工”,负责存储文件的内容(数据块 Block) |
🔁 文件的存储过程是怎样的?
-
你上传了一个大文件(比如 1GB 视频)
-
HDFS 自动把它分成很多小块(默认每块 128MB)
-
每块会被复制 3 份(默认副本数 = 3),存放在不同的机器(为了防止机器坏了)
-
NameNode 记录下:哪个文件被切成几块、每块在哪台机器
2.基本操作
a.启动 HDFS
打开终端后,输入:
$ start-dfs.sh
这会启动 Hadoop 的文件系统服务。
检查是否启动成功
输入:
$ jps
你应该能看到这三个 Java 进程(它们是 HDFS 的组成):
-
NameNode:总管,管理元数据(比如哪台机器有哪个文件块)
-
DataNode:真正存文件的地方
-
SecondaryNameNode:备份 NameNode 的信息
b.操作 HDFS 文件系统
🔍 查看默认目录
你的默认目录是 /user/user
(因为用户名是 user
),尝试列出里面的内容:
$ hdfs dfs -ls
一开始会出错,因为这个目录还没创建。
📂 创建目录
你可以这样一步步创建:
$ hdfs dfs -mkdir /user$ hdfs dfs -mkdir /user/user
或者一步完成(推荐):
$ hdfs dfs -mkdir -p /user/user
再试一次列出目录内容:
$ hdfs dfs -ls
这次不会报错了,只是结果是空的。
c.添加文件到 HDFS
在服务器的本地文件系统(就像你电脑的桌面)中,有一个叫 text.txt
的文件。
👀 查看本地文件:
$ ls
你会看到 text.txt
。
📤 把本地文件上传到 HDFS:
$ hdfs dfs -put text.txt
然后再次列出 HDFS 中的文件
$ hdfs dfs -ls
你现在应该看到 text.txt
已经出现在 /user/user
目录里了!
d.在 HDFS 中创建子目录
比如你想建个叫 files
的子目录:
$ hdfs dfs -mkdir files
$ hdfs dfs -ls
你应该能看到:text.txt
和 files
。
🔀 移动文件
把 text.txt
移动到 files
目录:
$ hdfs dfs -mv text.txt files
现在列出根目录:
$ hdfs dfs -ls
你会发现只剩下 files
,再列出子目录内容:
$ hdfs dfs -ls files
现在 text.txt
在 files
目录中了!
📋 复制文件
复制 text.txt
并重命名为 text2.txt
:
$ hdfs dfs -cp files/text.txt files/text2.txt$ hdfs dfs -ls files
你会看到两个文件:text.txt
和 text2.txt
。
✏️ 重命名文件
其实重命名就是移动到同一目录,但改个名字:
$ hdfs dfs -mv files/text2.txt files/moretext.txt$ hdfs dfs -ls files
现在文件名变成 moretext.txt
了。
🗑 删除文件
删除 moretext.txt
:
$ hdfs dfs -rm files/moretext.txt$ hdfs dfs -ls files
它就从 HDFS 中被删除了。
📖 查看文件内容
想看看 text.txt
里面写了什么:
$ hdfs dfs -cat files/text.txt
e.从 HDFS 下载文件到本地(服务器本地)
$ hdfs dfs -get files/text.txt text2.txt
$ ls
你应该看到本地又多了一个 text2.txt。
总结
操作 命令示例 启动 HDFS start-dfs.sh
查看进程 jps
创建目录 hdfs dfs -mkdir -p /user/user
上传文件 hdfs dfs -put text.txt
列出文件 hdfs dfs -ls
移动文件 hdfs dfs -mv text.txt files
复制文件 hdfs dfs -cp files/text.txt files/text2.txt
重命名文件 hdfs dfs -mv files/text2.txt files/moretext.txt
删除文件 hdfs dfs -rm files/moretext.txt
查看文件内容 hdfs dfs -cat files/text.txt
下载到本地 hdfs dfs -get files/text.txt text2.txt