- 文件系统
- 常用的存储形式
- 内存
- 内存的速度快,但是价格更贵
- 内存用来存储程序运行时的数据
- 内存的速度快,但是价格更贵
- 硬盘
- 硬盘价格便宜,速度要慢很多
- 硬盘来进行长期存储
- 硬盘价格便宜,速度要慢很多
- 内存
- 文件
- 一个文件就是一个单元,占用一个独立的地址空间,程序可以读取文件或者创建新的文件
- 文件系统
- 对文件进行管理,解决这些文件的结构、访问、保护、寻址等功能的系统,我们就称为文件系统
- 常用的存储形式
- HDFS 基础
- 最大的特色就是它在分布式架构上的处理,同时 HDFS 的设计适合一次写入,多次读出的场景,且不支持文件的修改,所以不适合反复修改数据的场景
- HDFS 的架构
- 客户端
- 用来和 HDFS 服务进行交互的部分,客户端中内置了一套文件操作命令来帮助我们访问 HDFS 服务,比如说我们上传文件、下载文件;
- 负责把我们上传的文件按前面说的数据块进行切分,以方便后续的存储;
- 负责与 NameNode 和 DataNode 进行交互以获取文件位置或者读写文件操作等。
- 数据块
- 默认最基本的存储单位是 64MB 的数据块(在 2.x 版本中是 128MB)
- 元数据节点(NameNode)
- 用于管理文件系统的命令空间,将所有文件和文件夹的元数据保存在文件系统树中,通过在硬盘保存避免丢失,采用文件命名空间镜像(fs image)及修改日志(edit log)方式保存
- 数据节点(DataNode)
- 真正数据存储的地方
- 从元数据节点(Secondary NameNode)
- 负责将命名空间镜像与修改日志文件周期性合并,避免文件过大,合并过后文件会同步至元数据节点,同时本地保存一份,以便在出现故障时恢复
- HDFS 的优点
- 高容错性
- 适合大数据处理
- 数据规模:能够处理数据规模达到 GB、TB、甚至 PB 级别的数据;
- 文件规模:能够处理百万规模以上的文件数量,相当之大。
- 提供数据一致性保障
- 任意一个节点所占用的资源较少,可以在廉价的机器上运行,支持线性扩张
- HDFS 的缺点
- 不适合低延时数据访问
- 无法高效地对大量小文件进行存储
- 存储大量小文件的话,它会占用 NameNode 大量的内存来存储文件、目录和块信息
- 不支持并发写入、文件随机修改
- 对于一个文件,只能有一个线程写入,不可以多个线程同时写入
- 基本不能进行文件的修改,只支持数据的追加,如果想修改需要使用新文件覆盖整个旧的文件