源 | 小象 文 | 肖冠宇
说起硬盘损坏,让别人去追热点,让小象来讲技术,就酱。
RAID(Redundant Arrays of Independent Disks)磁盘阵列,通过这个名字很容易理解内部的原理,通过一组磁盘组成阵列提供数据的冗余存储,从而保障数据高可用。RAID能够使用一组低廉的磁盘,组成一个容量巨大的磁盘组,通过操作系统软件或者智能驱动能够将磁盘阵列作为一个逻辑磁盘来使用。RAID分为不同的级别,下面详细介绍不同级别的RAID是如何保障数据高可用的。
1、RAID0
RAID0由多个磁盘构成,在数据存储过程中按照连续的位或者字节分割数据,将数据分段存储在各个磁盘中,各个磁盘并行提供读写服务,没有冗余。优点是能够提供高效的数据读写服务,磁盘利用率高。缺点是单个磁盘损坏将导致整个文件损坏。
2、RAID1
RAID1由多个磁盘构成,在数据写入过程中将文件通过磁盘镜像同等的写入多个磁盘达到数据冗余。当一个磁盘故障,自动切换到镜像磁盘上读写,通过读取镜像也能读取数据。优点是文件读取性能高,数据有冗余,能够保证数据安全可靠。缺点是写入速度慢,磁盘利用率低。
3、RAID10
RAID10是RAID1和RAID0的结合体,先做RAID1再做RAID0。数据写入过程中按照连续的位或字节为单位分割数据,并行写入磁盘,在写入磁盘的过程中采用数据镜像同等写去其他磁盘做数据冗余,实现数据的快速写入和数据安全高可用。即使下图中RAID1中的一组磁盘故障,其他三组磁盘还能够继续提供读写服务。RAID10优点是写入速度快,数据安全高可用,缺点是磁盘的利用率比较低。RAID10这种磁盘阵列解决方案既保证数据安全高可用又能够兼顾读写性能,整体性能达到了均衡,所以RAID10在很多数据存储场景中被广泛应用。
1、HDFS产生背景
数据存储和数据处理面临着数据丢失、单机数据处理性能能力差、硬件成本高等诸多问题。随着大数据技术不断的发展成熟,针对大数据场景下的数据高可用方案层出不穷,目前比较成熟通用的解决方案是使用HDFS(Hadoop Distribute File System)分布式文件系统存储数据。HDFS是大数据处理框架Hadoop重要的基础组件之一,HDFS被设计为在低廉的硬件上实现数据的高可用、高容错、高吞吐、低成本、可扩展的分布式文件系统。
2、HDFS架构设计
HDFS采用管理-工作者架构架构设计,核心组件有NameNode、DataNode和Block。
NameNode是文件系统的管理节点,管理文件系统的命名空间,维护文件的元数据、响应客户端请求、节点上下线等。
DtataNode是文件系统的工作节点,存储数据块、数据校验和,并且周期性的向NameNode发送心跳信息,汇报运行和存储状态。
Block数据块, 存储在HDFS中的文件被划分为多个Block块,Block块是HDFS存储的最小单元,当一个块的大小小于设置的大小时,它是不会占据整个块的空间。
使用块存储的好处:
一个文件的大小不受单个磁盘容量限制,可以通过block存储在任何磁盘上。
简化文件系统设计,将文件元数据与数据块分开存储,便于元数据管理。
Block数据块多备份可以确保块、磁盘、机器发生故障后数据不丢失,一旦发现一个块不可用,NameNode会从存储相同块的节点复制一份到一台运行正常的机器上,以确保副本的数量回到正常水平。如果为了有更高的容错能力,分散集群的负载可以设置更多的副本数。
3、HDFS特性
存储超大数据文件,可以存储GB、TB甚至PB级别的数据。
流式数据访问,提供一次写入多次读取的数据访问模式。
高吞吐,经过HDFS的设计优化,能够提供远超单机的高吞吐率。
低成本,能够运行在低廉的机器上,提供高效稳定的服务。
可扩展,随着业务高速的发展、数据量的快速增长,只需要简单的增加机器就能够快速的提高系统的存储和处理能力。
多备份冗余存储,HDFS默认采用3副本冗余存储,并且三个副本可以同时被读取,也可以根据特定需求自定义副本数。
4、 HDFS高可用方案
NameNode高可用
Hadoop2.x增加了对高可用性的支持。通过启动两个NameNode,一个是Active活动状态的NameNode起到管理者的角色,负责对外提供服务。一个是Standby备用状态的NameNode实时同步Active NameNode的元数据信息,当active的NameNode故障失效,standby的NameNode确认之后将接管原Active状态NameNode的工作。由于最新的元数据在内存中,所以standby的NameNode能够快速接管。
联邦HDFS
联邦顾名思义通过多个NameNode共同管理实现高可用。联邦HDFS通过简单的添加NameNode实现灵活的扩展,组成联邦的NameNode分别管理文件系统的一个部分命名空间。其中一个NameNode失效不影响其他NameNode维护的命名空间的可用性。为了解决联邦中单个NameNode的单点问题,同时启动两个NameNode一个作为管理者,一个作为备用节点实时同步NameNode元数据。从而实现了HDFS的联邦管理同时具备高可用能力。
Block数据块高可用
HDFS存储Block采用副本存储,默认三个副本,在Block写入的过程中通过距离判断首先选择一台机器作为第一个Block块的存储节点,第二个副本将被写入到同一机房内的不同机架中的一台机器上,防止机架故障导致机架中所有机器故障,第三个副本与第二个副本存储在相同的机架上能够保障快速的数据复制传输。副本之间的复制传输采用流式管道的方式,传输速度快并且能够实现数据块的高可用。
-END-