《Hadoop技术详解》一2.2 设计

简介:

本节书摘来异步社区《Hadoop技术详解》一书中的第2章,第2.2节,作者: 【美】Eric Sammer 译者: 刘敏 , 麦耀锋 , 李冀蕾 , 等,更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.2 设计

HDFS在很多方面都遵循了传统文件系统的设计思想。譬如文件以不透明的数据块形式存储,通过元数据管理文件名和数据块的映射关系、目录树结构、访问权限等信息。这些和普通的Linux文件系统(如ext3)是非常相似的。那么,HDFS又有什么与众不同的地方呢?

传统文件系统是内核模块(至少在Linux中是这样的)和用户空间工具,然后通过挂载的形式提供给终端用户使用。但是HDFS却是一种用户空间文件系统。具体来说,文件系统代码以OS进程和扩展的形式运行在内核之外,而无须注册在Linux VFS层,所以,HDFS是一种更加简单、更加灵活和更加安全的实现方式。HDFS不像ext3文件系统那样需要挂载,只要应用程序显式地编译它即可。

HDFS除了是用户空间文件系统外,它还是一种分布式文件系统。分布式文件系统突破了单机或单个磁盘物理存储空间的限制,其主要思想是集群中的各个主机只存储文件系统的一个数据子集,当需要存储更多数据块时,只需要添加更多挂载了多个物理磁盘的主机便可以实现。文件系统的元数据存储在中央服务器中,提供数据块的目录结构,并维护着整个文件系统的全局状态。

HDFS与其他文件系统的另一个主要区别是基本数据块的大小。传统文件系统的数据块大小一般是4KB或8KB,而Hadoop的数据块就大得多,默认为64MB,系统管理员可以根据需要选择配置成128MB、256MB、甚至1GB。增大数据块大小意味着数据可以被写入到磁盘中更大的连续块中,这也意味着数据的读写操作可以采用更大、更连续的方式进行,这样就可以减少磁盘的查找操作,而查找是机械式硬盘运行中最慢的一种操作,因此也就提升了处理大型数据流I/O操作的效率。

传统文件系统依赖特殊的存储子系统实现对数据的保护。HDFS则不同,它可以将数据的多个副本分别存储到集群的多台不同主机上,从而实现对数据的保护。默认情况下,每一个数据块会被复制三份,因为HDFS的文件具有“只写一次”的特点,每个副本一旦写入完成,就不可能再被更改,所以根本无须考虑各数据副本的一致性问题。应用程序读取数据块的任何一个可用的副本都可以实现对文件的访问。因为数据块拥有多个副本,所以因主机故障而导致的数据丢失也可以很容易恢复,同时网络中的应用程序也更有可能从离其最近的主机中读取数据。HDFS会主动跟踪并管理可用数据块副本的数量。当副本的数目低于配置的复制因子时,文件系统会自动从剩下的副本中创建一个新的副本。在本书中,我们会频繁地使用副本(replica)来表示HDFS数据块的复制。

当然,应用程序并不希望太过关注数据块、元数据、磁盘、扇区以及其他底层系统的具体实现细节。相反,开发人员更希望通过诸如文件和流等高层抽象接口来实现I/O操作。HDFS提供给开发人员的文件系统是一套高级的、类似POSIX那样的程序员比较熟识的API。

相关文章
|
14天前
|
分布式计算 Hadoop 大数据
大数据技术与Python:结合Spark和Hadoop进行分布式计算
【4月更文挑战第12天】本文介绍了大数据技术及其4V特性,阐述了Hadoop和Spark在大数据处理中的作用。Hadoop提供分布式文件系统和MapReduce,Spark则为内存计算提供快速处理能力。通过Python结合Spark和Hadoop,可在分布式环境中进行数据处理和分析。文章详细讲解了如何配置Python环境、安装Spark和Hadoop,以及使用Python编写和提交代码到集群进行计算。掌握这些技能有助于应对大数据挑战。
|
5月前
|
存储 分布式计算 Hadoop
【大数据】Hadoop技术解析:大数据处理的核心引擎
【大数据】Hadoop技术解析:大数据处理的核心引擎
172 0
|
4月前
|
消息中间件 分布式计算 大数据
【大数据技术Hadoop+Spark】Flume、Kafka的简介及安装(图文解释 超详细)
【大数据技术Hadoop+Spark】Flume、Kafka的简介及安装(图文解释 超详细)
72 0
|
4月前
|
SQL 存储 大数据
【大数据技术Hadoop+Spark】Hive基础SQL语法DDL、DML、DQL讲解及演示(附SQL语句)
【大数据技术Hadoop+Spark】Hive基础SQL语法DDL、DML、DQL讲解及演示(附SQL语句)
78 0
|
6月前
|
分布式计算 大数据 Hadoop
【大数据开发技术】实验03-Hadoop读取文件
【大数据开发技术】实验03-Hadoop读取文件
115 0
|
4月前
|
SQL 分布式计算 大数据
【大数据技术Hadoop+Spark】Spark SQL、DataFrame、Dataset的讲解及操作演示(图文解释)
【大数据技术Hadoop+Spark】Spark SQL、DataFrame、Dataset的讲解及操作演示(图文解释)
55 0
|
6月前
|
分布式计算 Hadoop Java
【大数据开发技术】实验01-Hadoop安装部署
【大数据开发技术】实验01-Hadoop安装部署
137 0
|
4月前
|
分布式计算 大数据 Scala
【大数据技术Hadoop+Spark】Spark RDD创建、操作及词频统计、倒排索引实战(超详细 附源码)
【大数据技术Hadoop+Spark】Spark RDD创建、操作及词频统计、倒排索引实战(超详细 附源码)
92 1
|
4月前
|
分布式计算 资源调度 大数据
【大数据技术Hadoop+Spark】Spark架构、原理、优势、生态系统等讲解(图文解释)
【大数据技术Hadoop+Spark】Spark架构、原理、优势、生态系统等讲解(图文解释)
202 0
|
4月前
|
存储 分布式计算 大数据
【云计算与大数据技术】大数据系统总体架构概述(Hadoop+MapReduce )
【云计算与大数据技术】大数据系统总体架构概述(Hadoop+MapReduce )
117 0