分布式存储技术是如何产生的?
分布式存储是大数据平台中的根基, 其是在数据存储技术不断优化的过程中诞生的,分布式存储技术提高了磁盘读写的性能以及提供了横向拓展和容灾的特性。
数据存储优化的基本思路
对磁盘I/O的调优 - 横向拓展
1TB的硬盘,在数据传输速度约为100MB/s的情况下,读完整个磁盘中的数据至少要2.5h。试想,如果将1TB数据分散存储在100个硬盘,并行读取数据,那么不到2min就可以读完所有数据。通过共享硬盘对数据并行读取,可以大大缩短数据读取的时间。
横向拓展带来的问题
要对多个硬盘中的数据并行进行读写,首要解决的是硬件故障问题。一旦开始使用多个硬件,其中个别硬件就很有可能发生故障。
解决方法 - 容灾,保障可靠性
复制(replication): 系统保存数据的副本(replica),一旦有系统发生故障,就可以使用另外保存的副本。
冗余硬盘阵列(RAID)
RAID,即独立硬盘冗余阵列,将多块硬盘通过硬件 RAID 卡或者软件 RAID 的方案管理起来,使其共同对外提供服务。RAID 的核心思路其实是利用文件系统将数据写入硬盘中不同数据块的特性,将多块硬盘上的空闲空间看做一个整体,进行数据写入,也就是说,一个文件的多个数据块可能写入多个硬盘。
Hadoop分布式文件系统(Hadoop Distributed File System, HDFS)
如果将数据块的地址改成分布式服务器的地址,也就是查询得到的数据块地址不只是本机的硬盘地址,还可以是其他服务器的地址,那么文件的存储容量就将是整个分布式服务器集群的硬盘容量,这样还可以在不同的服务器上同时并行读取文件的数据块,文件访问速度也将极大的加快。
分布式文件系统解决的问题
• 名字空间与名字解析
• 资源可访问(协议、接口、性能)
• 透明性(访问、位置、迁移、重定位、复制、并发、故障)
• 开放性(标准、接口、互操作性、可移植性)
• 可扩展性(异步、分布、复制、缓存)
• 可用性(复制、RAID、纠删码)
• 一致性(复制、缓存、CAP理论*)
• 安全性(实体认证、访问控制、安全传输、加密)
HDFS的基本组成与原理
HDFS架构
HDFS关键组件
NameNode:
负责整个分布式文件系统的元数据(MetaData)管理,也就是文件路径名、访问权限、数据块的 ID 以及存储位置等信息,相当于 Linux 系统中 inode 的角色。
特点
1.维护整个文件系统的文件目录树,文件目录的元信息和文件数据块索引
2.以FsImage和EditLog形式存储在本地
3.整个系统的单点,存在SPOF(Simple Point of Failure)
SecondaryNameNode:
作为DataNode的冷备与辅助。
特点
1.又名CheckPoint Node,定期合并FsImage和EditLog
2.不接收客户端的请求,作为NameNode的冷备
DataNode:
负责文件数据的存储和读写操作,HDFS 将文件数据分割成若干数据块(Block),每个DataNode 存储一部分数据块,这样文件就分布存储在整个 HDFS 服务器集群中。
特点
1.实际存储数据的单元
2.以Block为单位
3.数据以普通文件形式保存在本地文件系统
Client:
用户可以通过应用侧的Client与HDFS进行操作, 实际上Clien是一个库函数。
特点
1.与HDFS交互,进行读写、创建目录、创建文件、复制、删除等操作
2.HDFS提供了多种客户端:命令行Shell、Java API、Thrift接口、C library、WebHDFS等