HDFS入门
1.为什么需要分布式存储
单台服务器的存储能力是有上限的,面对海量数据存储并不行
2.什么是分布式存储
可以把文件拆分成多个部分,分片存储
分布式不仅仅解决了能存的问题,多态服务器协同工作,带来的也是性能的横向扩展,针对于上图来说带来了以下好处
- 三倍的网络传输效率
- 三倍的磁盘写入效率
3.分布式存储的基础架构
介绍
数量非常多的服务器,在现实生活中带来的不是提升,而是:混乱
如何管理众多的服务器,让众多服务器一起工作,是一个问题
大数据体系中,分布式的调度主要有2类架构模式:
- 去中心化模式
- 中心化模式
Hadoop是一个主从模式(中心化模式)架构的技术框架
去中心化模式
中心化模式
4.常见的分布式文件系统
目前行业内除HDFS这个分布式文件系统外,还有GFS、TFS、S3等分布式文件系统
这些分布式文件系统具备不同的特点,适用于不同的应用场景
- GFS:全称是Google File System,是Google公司为了存储海量搜索数据而设计的专用文件GFS,全称是Google File System,是Google公司为了存储海量搜索数据而设计的专用分布式文件系统
- HDFS:全称是Hadoop Distributed File System,属于Hadoop的组件,Apache的顶级开源项目。HDFS的设计参考了GFS,可以认为它是GFS的简化开源版本。它适合存储海量大文件,不支持多客户端并发写入同一个文件
- TFS:全称是Taobao File Systerm,是淘宝团队开源的分布式文件系统。它作为淘宝内部使用的分布式文件系统,对于海量小文件的随机读写访问性能做了特殊优化,适合存储海量小文件
- S3:全称是Simple Storage Service(简单存储服务),是亚马逊提供的云存储解决方案。它是收费的,可以实现海量数据存储
5.大文件与小文件
- 小文件:5KB、10MB之类的文件可以被认为是小文件
- 大文件:128MB之上的文件称之为大文件
6.什么是HDFS
注意:HDFS只是一种适合大文件存储的分布式文件系统,它不适合存储小文件
7.HDFS典型使用场景
HDFS的典型使用场景是“一次写入,多次读取”。一个文件被创建、写入及关闭之后,其中的内容就不会改变了
8.HDFS节点角色
- NameNode:文件系统的管理节点,它主要维护整个文件系统的元数据,包括文件目录树、文 件/目录的信息,以及每个文件对应的Block列表等
- DataNode:文件系统的数据节点,提供真实文件数据(Block)的存储服务
- SecondaryNameNode:辅助NameNode工作,定期合并NameNode的元数据信息(Fsimage和Edits),然后推送给NameNode
9.HDFS架构
10.HDFS优缺点
优点
- 通透性:通过网络访问文件的动作,在程序与用户看来就像是在访问本地磁盘
- 高容错性:即使系统中某些节点宕机,整体来说系统仍然可以持续运作而不会丢失数据。因为HDFS中的数据会保存多个副本(默认3份),且提供了容错机制,副本丢失也可以自动恢复
- 性价比高:可以运行在大量的廉价机器上,节约成本
缺点
- 不适合低延时数据访问:数据延时比较高,无法支持“毫秒”级别的数据存储
- 不适合小文件存储:HDFS的主节点(NameNode)的内存是有限的,每个Block对应的元数据信息都会在NameNode中占用150 byte的内存空间。1个1MB的文件对应1个Block,会占用150 byte。1个128MB的文件也对应1个Block,也只会占用150 byte。所以,存储大量小文件就没有意义了,这违背了HDFS的设计理念
- 不支持文件并发写入和随机修改:1个文件同时只能有1个线程执行写操作,不允许多个线程同时执行写操作。只支持对文件执行追加操作,不支持对文件执行随机修改操作