开源组件系列(6):分布式文件系统(HDFS)

目录

(一)概述

(二)文件系统的应用

(三)HDFS基本架构

(四)HDFS关键技术

(五)HDFS访问方式

(六)HDFS Java API


(一)概述

 

在海量数据的业务场景中,我们每天采集的数据通常是GB级别的,系统所存储的数据通常是TB级别的,甚至是PB级别。为了应为数据存储的管理和扩展问题,大数据集群通常采用横向扩展的方式来满足数据增长的需求,即以网络互连的节点为单位扩大存储容量。为了构建横向扩展的分布式文件系统,通常需要解决如下几个问题:

1.数据能备份:由于横向扩展的集群节点通常采用廉价的服务器,因而出现故障的几率较大,需要分布式文件系统能够很好的应对各种问题,也就是有良好的容错性;

2.存储大文件:在分布式文件系统中,存储GB级别的文件很常见,也可能存储大量的KB级小文件,这与传统文件系统的场景很不同,要求大数据集群在IO方面有良好的性能;

3.一次写入多次读取:大多数场景下,文件是追加写入的,且写入完成后不会随机修改,只会读取。因此,文件的追加操作需要重点保障读写性能和原子操作。

在2003年,Google发布了分布式文件系统GFS的相关论文,在此基础上,Apache开源了顶级项目:Hadoop,而HDFS正是Hadoop中的分布式文件系统,也是GFS的开源实现。

 

(二)文件系统的应用

 

构建分布式文件系统,通常有两种方式:文件级别和块级别。

这里首先介绍文件级别,通常采用的方案是基于现有文件系统的主从架构:Master/Slave,也就是给定N个网络节点,每个节点都装有Linux操作系统,选出一个节点作为Master,记录文件的元信息,其他节点作为Slave,存储实际文件。

该方案是初级的分布式文件系统实现,但存在如下两个难以解决的问题:

1.难以负载均衡:文件级别的分布式文件系统,以文件为单位进行存储,由于用户的文件大小不统一,因此难以保证每个节点的数据都是均衡的;

2.难以并行处理:如果以文件为单位进行存储,当多个分布在不同节点上的并行任务读取同一文件时,存储该文件的节点网络带宽便会成为瓶颈,从而制约上层框架的并行处理效率。

文件级别的分布式文件系统结构图如下:

 

为了解决文件级别的分布式文件系统存在的问题,我们提出了块级别的分布式文件系统,其核心思想是将文件分成等大的数据块,例如HDFS默认是128MB,并以数据块为单位存储到不同的节点上,进而解决负载均衡和并行处理的问题。如下图所示:

 

(三)HDFS基本架构

 

HDFS是典型的块级

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值