第 4 章 分布式存储系统——HDFS
HDFS 作为分布式文件管理系统, Hadoop 的基础。
以下是本章学习要点:
分布式文件系统与 HDFS
HDFS 体系结构与基本概念★★★
HDFS 的 shell 操作★★★
搭建 eclipse 开发环境★★
java 接口及常用 api★★★
hadoop 的 RPC 机制★
hadoop 读写数据的过程分析★★
4.1. 分布式文件系统与 HDFS
数据量越来越大, 在一个操作系统管辖的范围存不下了, 那么就分配到更多的操作系统
管理的磁盘中, 但是不方便管理和维护, 迫切需要一种系统来管理多台机器上的文件, 这就
是分布式文件管理系统 。
学术一点的定义就是: 分布式文件系统是一种允许文件通过网络在多台主机上分享的文
件系统,可让多机器上的多用户分享文件和存储空间。
分布式文件管理系统很多, hdfsHDFS 只是其中一种。适用于一次写入、 多次查询的情
况,不支持并发写情况,小文件不合适。
小提示: 如何在刚开始学习的时候, 形象化的地理解什么是 HDFS 哪呢?我们可以把 HDFS
看做是 wWindows 的文件系统。在 wWindows 的文件系统维护着有一套很多层次的文件夹目录,
这么复杂的目录层次是为了在文件夹中分门别类的地存放文件。 我们经常做的操作是创建文
件夹、 创建文件、 移动文件、 复制文件、 删除文件、 编辑文件、 查找文件等。 HDFS 与 wWindows
中的文件系统类似, 看到的和操作的也类似。 读者可以把 HDFS 理解为分 wWindows 文件系统。
4.2. HDFS 的 shell 操作
既然 HDFS 是存取数据的分布式文件系统,那么对 HDFS 的操作,就是文件系统的基本
操作,比如文件的创建、修改、删除、修改权限等,文件夹的创建、删除、重命名等。 对
HDFS 的操作命令类似于 lLinux 的 shell 对文件的操作,如 ls、 mkdir、 rm 等。
我们执行以下操作的时候,一定要确定 hadoop 是正常运行的,使用 jps 命令确保看到
各个 hadoop 进程。
我们执行命令 hadoop fs,如图 4-1 所示。
图 4-1
图中显示了很多命令选项信息。 以上截图不全, 我在表格 4-1 中完整的地列出了支持的
命令选项。
选项名称 使用格式 含义
-ls -ls <路径> 查看指定路径的当前目录结构
-lsr -lsr <路径> 递归查看指定路径的目录结构
-du -du <路径> 统计目录下个文件大小
-dus -dus <路径> 汇总统计目录下文件(夹)大小
-count -count [-q] <路径> 统计文件(夹)数量
-mv -mv <源路径> <目的路径> 移动
-cp -cp <源路径> <目的路径> 复制
-rm -rm [-skipTrash] <路径> 删除文件/空白文件夹
-rmr -rmr [-skipTrash] <路径> 递归删除
-put -put <多个 linux 上的文件> <hdfs 路径> 上传文件
-copyFromLocal -copyFromLocal <多个 linux 上的文件>
<hdfs 路径>
从本地复制
-moveFromLocal -moveFromLocal <多个 linux 上的文件>
<hdfs 路径>
从本地移动
-getmerge -getmerge <源路径> <linux 路径> 合并到本地
-cat -cat <hdfs 路径> 查看文件内容
-text -text <hdfs 路径> 查看文件内容
-copyToLocal -copyToLocal [-ignoreCrc] [-crc] [hdfs 源路
径] [linux 目的路径]
从本地复制
-moveToLocal -moveToLocal [-crc] <hdfs 源路径> <linux
目的路径>
从本地移动
-mkdir -mkdir <hdfs 路径> 创建空白文件夹
-setrep -setrep [-R] [-w] <副本数> <路径> 修改副本数量
-touchz -touchz <文件路径> 创建空白文件
-stat -stat [format] <路径> 显示文件统计信息
-tail -tail [-f] <文件> 查看文件尾部信息
-chmod -chmod [-R] <权限模式> [路径] 修改权限
-chown -chown [-R] [属主][:[