我眼中的云计算5 - 分布式文件系统

说到分布式文件系统,不能不提它在硬件侧的类似方案-独立磁盘冗余阵列RAID,RAID经过多年的发展,存在着多种选择(仅列举常用的):

RAID0:提供了最高的写性能(随硬盘数量增加而增大),最差的数据安全级别,利用率最高N;可添加任意多块硬盘,可靠性是1/n;从其别名stripe/striping,可看出是通过把多块硬盘的物理block横向分组,再文件足够大时,能够把写入平均分配到不同的硬盘;
RAID1:提供了最高的读性能(2块硬盘时),最低的写性能,最高的数据安全级别,利用率最低1/2;由两块硬盘组成,提供的容量由较小的硬盘决定;从其别名mirror/mirroring,可看出两块磁盘存储的是相同的数据;
RAID5:同RAID0一样使用条带策略,通过增加校验块来保证数据安全,随机读性能高,写性能一般,利用率为(N-1)/N;校验数据拖累了写入性能,特别在更新数据时的额外操作尤为突出;最好使用4块以上的硬盘来组成,保证随机读的并发IO;
RAID10:实际上是RAID1和RAID0的组合使用,提供了高写入性能(随硬盘数量增加而增大),高读取性能,利用率最低1/2;

让我们从使用方便对比各种阵列,做个小结(阵列的构成依赖于硬盘数量,因此四种阵列分成2组做了对比,前一组4块硬盘,后一组2块硬盘)
以可靠性(数据安全)排列:RAID10>RAID5,RAID1>RAID0
以可用容量排列:RAID5>RAID10,RAID0>RAID1
以写入(随机,小文件)性能排列:RAID10>RAID5,RAID0>RAID
以写入(连续,大文件)性能排列:RAID5>RAID10,RAID0>RAID
以读取性能(随机)排列:RAID10>=RAID5,RAID1>RAID0
以读取性能(连续)排列:RAID10>=RAID5,RAID1>RAID0

传统硬件厂商都提供集中式的磁盘阵列方案,提升单点存储容量的同时,带宽不足的困扰也随之而来,高带宽的存储接口(FC/iSCSI/SAS)成本昂贵,性价比较低,存储资源的垂直升级遭遇瓶颈。而分布式文件系统的软件解决方案,把存储资源分散到计算节点,从而实现水平线性扩容,可靠性/可用容量/写入能力/读取能力也转而由软件实现,我们看一下HADOOP的基石 - HDFS是如何设计的。

先说一下HDFS的设计目标:1.流式数据访问,用于批量数据的处理,更关注数据的吞吐能力,而不是响应时间;2.大文件存储,一般为GB级别,甚至TB级别的文件;3.数据一次写入(append方式),多次读取,降低数据一致的消耗;

HDFS使用通常的主从体系结构:名称节点(主服务器)和数据节点(从服务器),前者管理着文件系统的命名空间,以及调度客户端的访问;后者则提供文件的存储,并定时向名称节点提交所存储文件列表的信息;

实际存储时,数据节点采用自己的块管理(基于机械硬盘),如果允许硬盘的寻道时间在整个传输过程中占比1%,在目前常用的7200转机械硬盘连续读写能力约为120MB/s,寻道时间9.5ms的情况下,多数的HDFS采用128MB的块设置;HDFS的块管理带来了几个好处:1.统一大小的块,相比文件更方便管理,多块硬盘间存储冗余的块数据变得更简单(通常保存3份拷贝,此时的磁盘利用率是1/3);2.大文件被分割,这样分布式文件系统能更好的使用多硬盘的并发读写;

使用HDFS存储小文件时,物理存储空间由文件大小决定,但是文件信息,索引目录和块信息会因为小文件的数据多而导致名称节点的内存占用过大,一个文件在名称节点约占用150字节的内存,假设HDFS存储了100万个文件,每个文件使用一个块,则需占用300MB内存(名称节点和二级名称节点两份数据),而随着文件和块的缩小,内存的占用增加,寻道时间占比增大,系统的数据吞吐量则在降低;淘宝的TFS在HDFS基础上演进,小文件合并存储来解决名称节点占用内存过大的问题,优化了文件的索引,但单硬盘容量增加,可存储文件数的增多,随机读性能不足的问题不可避免;

再看一下HDFS的数据读写流程:

客户端读取数据时,从名称节点得到存储文件的数据节点信息,选择从最近的数据节点读取文件(通常为本机或同一机架),大文件则是顺序进行块读取,避免了集中存储策略的带宽争抢;

客户端写入数据时,先在名称节点中创建文件,权衡可靠性和读写带宽后,选择合适的数据节点进行数据存储(多拷贝开启的情况下,数据节点采用级联方式保存文件,并且只要完成一份完整数据的写入,集群可完成后续的复制);

应用的类型,才是决策的基础,如何取舍则是见仁见智。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值