《Hadoop技术详解》一2.1 目标和动机

2.1 目标和动机

Apache Hadoop的重要组成部分是Hadoop分布式文件系统(HDFS,Hadoop Distributed Filesystem)。HDFS的设计初衷是为了支持高吞吐和超大文件的流式读写操作。传统的大型存储区域网络(Storage Area Network, SAN)和网络附加存储(Network Attached Storage, NAS)给TB级的块设备或文件系统提供了一种集中式的低延时数据访问解决方案。因为SAN和NAS支持全功能POSIX语法,具有很好的存储伸缩性和低延时访问等优点,所以可以完美地满足关系数据库、内容交付系统及类似数据的块存储要求。然而,试想一下这样的场景:成千上万台机器同时启动,并从集中式存储系统中同时读取成百TB的数据。传统存储技术不可能达到这样的规模!

为了解决这个问题,我们可以用一些独立的机器搭建一个高性价比系统。这个系统中的每台机器都拥有自己的I/O子系统、磁盘、RAM、网络接口、CPU,且支持部分POSIX功能(或按需求裁剪)。以下就是HDFS的一些特定目标。

  • 可以存储几百万个大型文件,每个文件大小可以超过几十GB;文件系统的容量可达数十PB。
  • 利用横向扩展模式(scale-out),使用基于磁盘簇(JBOD)而不是磁盘阵列(RAID)的普通商用服务器实现大规模数据存取,同时,在应用层完成数据复制以实现存储的可用性和高吞吐率。
  • 优化是针对大型文件的流式读写操作,而不是为了满足小文件的低延时访问。批量处理的性能比互动响应的实时性更加重要。
  • 能容忍机器某些部件故障和磁盘失效。
  • 支持MapReduce处理所需要的功能与规模要求,详细内容请阅读第3章。

尽管HDFS可以不依赖MapReduce而独立应用于大型数据集的存储,但如果将它们结合在一起,系统就会如虎添翼。例如,利用HDFS将输入数据分割成数据块分别存储在不同机器上的特点,MapReduce可以将计算任务分配给数据块所在的机器,从而实现数据读取的本地化,提高系统的效率。

时间: 2024-10-05 18:59:33

《Hadoop技术详解》一2.1 目标和动机的相关文章

《Hadoop技术详解》一第1章 简介

第1章 简介 Hadoop技术详解 在过去的几年里,数据的存储.管理和处理发生了巨大的变化.各个公司存储的数据比以前更多,数据来源更加多样,数据格式也更加丰富.这不是因为我们变成了林鼠(译注:林鼠喜欢收集各种物品),而是因为我们想要创造出可以让我们进一步了解某一领域的产品.功能以及对其智能预测(这个领域可以是指用户.数据搜索.机器日志或者是某机构的任何信息).为了更好地服务其成员,各组织正在寻找新的方式来使用那些曾经被认为没有什么价值或者存储起来过于昂贵的数据.采集和存储数据只是其中的一部分工作

《Hadoop技术详解》一导读

前 言 Hadoop技术详解本书采用的约定本书采用以下排版约定. 斜体 用于表明新的术语.URL.电子邮件地址.文件名和文件扩展名. 等宽字体 用于程序清单,正文段落中有关的程序元素,如变量及函数名.数据库.数据类型.环境变量.语句和关键字等. 等宽加粗字体 用于显示命令或应由用户输入的其他文本. 等宽斜体字体 表明这里的文本需要被替换成用户提供的值或由其他上下文确定的值. 目 录 第1章 简介第2章 HDFS 2.1 目标和动机2.2 设计2.3 守护进程2.4 读写数据2.5 管理文件系统元

《Hadoop技术详解》一2.6 NameNode的高可用性

2.6 NameNode的高可用性 因为管理员的主要职责是确保大规模系统的服务质量和可用性,单点故障(single point of failure)可能会给我们带来麻烦,甚至带来非常糟糕的后果.不幸的是,长期以来,HDFS的NameNode就是困扰我们的单点故障问题.近来,Hadoop社区投入大量的人力来提升NameNode的高可用性,使Hadoop可以在更多重要应用场景下部署. NameNode 高可用性(或称HA)是通过部署一对主/备NameNode的方式来实现的.主/备NameNode都

《Hadoop技术详解》一2.7 NameNode联盟

2.7 NameNode联盟 很多Hadoop用户心里一直不爽:对存储在NameNode内存中的元数据大小有限制.为了冲破单个NameNode服务器中物理内存的限制,需要一种大规模系统来取代之前的按比例增长模式.正如HDFS的块存储一样,可以将文件系统元数据分布存储在多台主机上,这一技术被称之为命名空间联盟(Namespace Federation),即通过一组自治系统来组织一个逻辑名字空间.Linux文件系统是一个例子:多个设备被动态地配置在一个名字空间下,客户端可以方便地通过寻址访问就该名字

《Hadoop技术详解》一2.8 访问与集成

2.8 访问与集成 本地访问HDFS的唯一方式是通过其提供的Java应用程序接口,其他的访问方式都是经过定义并建立在这些应用程序接口之上的,而且只能提供这些接口所允许的功能.为了使应用更容易使用和开发,HDFS借用了大量像Java I/O流这样的概念,因而HDFS 应用程序接口对开发者来讲非但不陌生,而且还非常简单.当然HDFS也对这些应用程序接口做了一些改动,以确保提供其所宣称的那些功能,但大部分的改动很容易理解,而且有很详细的文档. 为了访问HDFS,客户端--也就是用应用程序接口编写的应用

《Hadoop技术详解》一2.2 设计

2.2 设计 HDFS在很多方面都遵循了传统文件系统的设计思想.譬如文件以不透明的数据块形式存储,通过元数据管理文件名和数据块的映射关系.目录树结构.访问权限等信息.这些和普通的Linux文件系统(如ext3)是非常相似的.那么,HDFS又有什么与众不同的地方呢? 传统文件系统是内核模块(至少在Linux中是这样的)和用户空间工具,然后通过挂载的形式提供给终端用户使用.但是HDFS却是一种用户空间文件系统.具体来说,文件系统代码以OS进程和扩展的形式运行在内核之外,而无须注册在Linux VFS

《Hadoop技术详解》一2.4 读写数据

2.4 读写数据 客户端可以通过多种不同的工具和应用程序接口(参见2.8节"访问与集成")对HDFS进行读写操作,这些操作都遵循着同样的流程.在某些层面,客户端可能要使用到Hadoop库函数,因为只有Hadoop库函数才清楚知道HDFS的具体细节和相关语法.函数库封装了大部分与NameNode 和DataNode通信相关的细节,同时也考虑了分布式文件系统在诸多场景中的错误处理机制. 2.4.1 数据读取流程 首先,我们来看一下HDFS数据读取操作的处理逻辑.假设,HDFS中已经存储了一

《Hadoop技术详解》一2.5 管理文件系统元数据

2.5 管理文件系统元数据 NameNode将文件系统的元数据以不同的文件保存在本地磁盘中,其中最重要的两个文件是fsimage和edits.和数据库一样,fsimage包含文件系统元数据的完整快照,而edits仅包含元数据的增量修改.对高吞吐率的数据存储而言,一个常用方法是使用预写日志(WAL),如edits文件,实现顺序增加操作来减少I/O操作(在NameNode中,所有操作都在RAM中完成),从而避免高消耗的查找操作,获取更好的整体性能.NameNode启动后,直接加载fsimage到RA

《Hadoop技术详解》一2.3 守护进程

2.3 守护进程 一个标准HDFS集群由3个守护进程组成,如表2-1所示. 数据块可以理解为二进制数据文件的主要组成单元.在HDFS中,负责数据存储和获取的守护进程就是DataNode,简称(DN).数据节点可以直接访问本地挂载的一个或多个磁盘,通常又称数据磁盘.这些挂载在服务器上的磁盘可以用来存储块数据.在产品系统中,这些磁盘通常为Hadoop独有.通过在集群中增加数据节点或者给现有数据节点添加磁盘,就可以轻松实现系统存储空间的扩容. HDFS的另一个最显著优点是它存储数据块时并不需要RAID