Hadoop HDFS数据仓库技术

本文深入探讨了Hadoop HDFS的架构、设计原理和数据存储策略,包括块大小设置的原因、不支持并发写入和随机修改的考量、以及副本策略和机架感知的重要性。HDFS适用于大数据批处理,强调高吞吐量而非低延迟,通过流式数据访问优化性能。文章还详细解析了HDFS的写入和读取流程,展示了如何通过副本策略确保高可用性和容错性。
摘要由CSDN通过智能技术生成

作为大数据领域的始祖,开源项目Hadoop已经诞生了近15年了,虽然今天大数据技术已经层出不穷,市场上涌现出了很多优秀的大数据架构和产品,但是Hadoop中的很多技术实现仍然有借鉴意义,本篇我们就来看下HDFS的架构与实现原理。

如果让我们来设计一个分布式文件系统,我们会考虑到哪些点呢?

1、首先,我们的应用场景是什么?是大数据集,处理超大文件。这里的超大文件通常是指百MB、设置数百TB大小的文件。目前在实际应用中,HDFS已经能用来存储管理PB级的数据了。如果是小量的数据,单机磁盘就能很好的处理了,但是当数据量巨大时,如何支持大数据集呢?如果能把大数据集分解成小数据,数据存储在很多个磁盘上,对多个磁盘上的文件进行管理就能解决这个问题。这就要求一个集群具备扩展到成百上千个节点的能力,才能支持容纳千万级数量的文件。

2、其次,要考虑的就是硬件成本,上一篇分析了Oracle RAC的技术实现,我们知道RAC是基于共享存储的,需要专用磁盘阵列,但其成本非常昂贵,因此,能否使用普通廉价的服务器,比如标准的X86服务器,甚至廉价PC来构建分布式存储呢?这样成本就降低了。

3、我们来看下什么是文件系统?文件系统是一种存储和组织计算机数据的方法,它使得对其访问和查找变得容易。我们常见的文件系统Ext4,包括本人之前做过的集群文件系统OCFS2,都是文件系统。既然是管理、存储磁盘上的数据的,数据在磁盘上是如何组织的便是首要考虑的问题,像前面所说的文件系统,首先要做的就是格式化磁盘,磁盘的数据布局就决定了这是什么样的文件系统。哪怕像LevelDB的SSTable文件也是有磁盘数据格式的,这些通常也都是元数据信息。无一例外,这些都是单个磁盘上的文件系统或数据组织方式,那么对于分布式文件系统,由于一个文件在物理上分别存储在不同的服务器上,该如何组织数据格式、如何维护就是首要考虑的点。一般文件系统都是按块Block来操作的,Linux内核默认的块大小4KB,分布式文件系统又支持多大的块合适。

4、超大数据集,因此,高吞吐量也是设计重点要考虑的,这就可能引入高延迟性。如何提高吞吐量?自福特发明流水线制造汽车以来,这种高效的生产模式就备受推崇。在这里也采用流式数据访问,什么流式数据访问?一次写入,多次读取的高效的访问模式。流式访问最小化了磁盘的寻址开销,只需要寻址一次,然后就一直读下去,适合一次写,多次读的数据访问。与流数据访问对应的是随机数据访问,它要求定位、查询或修改数据的延迟较小,传统关系型数据库很符合这一点。

5、既然是廉价的服务器,就不可避免的出现机器故障,硬件故障后,软件是否具备硬件故障检测能力,可自动快速恢复?因此高可靠性、高可用性、数据安全性就是必须要考虑的,需要引入数据冗余机制,常见的数据冗余技术:副本技术、条带技术。

6、在当前主流硬盘仍然是机械盘HDD的情况下,顺序写比随机写性能高效很多,像LevelDB中就是采用的追加写模式Append,大大地提高了写性能。现在分布式文件系统是大规模使用廉价服务器,如果想提高写性能,最好也是采用Append模式。又因为服务器是物理上分散的,数据冗余存储在不同的服务器上,数据的一致性问题就是必须要考虑的,是采用经典的数据一致性算法(如:Raft算法),还是采用什么策略,部分节点上写失败之后该如何处理也是要考虑的。

7、由于服务器是物理上分散的,这就需要用网络将这些服务器连接起来,从成本的角度考虑,自然希望是标准的以太网络,既然是以太网,网络问题就不可避免,网络拥塞该如何处理,怎么避免或者减少网络拥塞,处理策略又是什么。

一、简述HDFS

HDFS是一种分布式文件系统,对部署在多台独立物理机器上的文件进行管理。全称Hadoop Distributed File System,是Google File System(GFS)论文的实现,是Hadoop的核心子项目,承载Hadoop的存储业务,是分布式计算的数据存储的基础。HDFS是为基于流数据模式访问和处理超大文件的需求而开发的,是为运行在廉价的服务器上而设计的大规模数据分布式存储方案,它具有高容错性、高可靠性、高可扩展性、高吞吐量,为海量数据存储提供了便利。

HDFS适用场景:

1)构建在廉价的机器上;2)适合批量数据处理;3)适合大数据处理;4)适合流式数据访问。

HDFS的限制:

1)不适合低延迟访问;2)不适合存储小文件;3)不支持并发写入;4)不支持随机修改。

什么流式数据访问?

这样让人想到福特发明流水线制造汽车,这种高效的生产模式一直备受推崇。在这里是指:一次写入,多次读取的高效的访问模式。流式访问最小化了磁盘的寻址开销,只需要寻址一次,然后就一直读下去,适合一次写,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值