`

Hadoop 权威指南摘抄(HDFS)

 
阅读更多
Hadoop 分布式文件系统

当数据集的大小超过一台独立物理计算机时,就有必要对它进行分区并存储到若干台单独的计算机上。管理
网路中跨多台计算机存储的文件系统就称为分布式文件系统。

HDFS的设计

HDFS以流式数据访问模式来存储超大文件,运行于商用硬件集群上。
1.超大文件。
2.流式数据访问。
3.商用软件。


不适合HDFS上运行的应用:
1.低时间延迟的数据访问。
2.大量的小文件。
3.多用户写入,任意修改文件。

HDFS的概念

数据块

每个磁盘都有默认的数据块大小,这是磁盘进行数据读写的最小单位。
HDFS同样也是有块(block)的概念,但是大的多,默认为64MB。HDFS上的文件被划为块大小的多个分块(chunk),
作为独立的存储单元。与其他文件系统不同,HDFS中小于一个块大小的文件不会占据整个块空间。

HDFS中的块为何如此大?
其目的是为了最小化寻址开销。

对分布式文件系统中的块进行抽象的好处
1.一个文件的大小可以大于网络中任意一个磁盘的容量。文件的所有块并不需要存储在同一个磁盘上。
2.使用块抽象而非整个文件作为存储单元。大大简化了存储子系统的设计。
将存储子系统控制单元设置为块,可简化存储管理,及非常适合用于进行数据备份进而提供数据容错
能力和可用性。将每个块复制到几个独立的机器上,可以确保发生块,磁盘或机器故障后,数据不丢失。

NAMENODE和DATANODE

HDFS集群有两类节点,并以管理者-工作者模式工作,即一个namenode(管理者)和多个datanode(工作者)。

namenode管理文件系统的命名空间,它维护者文件系统树及整棵数内所有的文件和目录,这些信息以两个
文件形式永久保存在本地磁盘上: 命名空间镜像和编辑日志文件。namenode也记录着每个文件中各个块
所在的数据节点信息,但它并不永久保存块的位置信息,因为这些信息会在系统启动时由数据节点重建。

datanode是文件系统的工作节点,它们根据需要存储并检索数据块(受客户端或namenode调度),并且定期向
namenode发送它们所存储的块的列表。
没有namenode,文件系统将无法使用。因此对于namenode实现容错非常重要,Hadoop为此提供了两种机制。

第一种机制是备份那些组成文件系统元数据持久状态的文件。一般的配置是,将持久状态写入本地磁盘的同时,
写入一个远程挂载的网络文件系统(NFS)。这些写操作时实时同步的,是原子操作。

另一种可行的方法是运行一个辅助namenode,但它不能用作namenode。这个辅助namenode的重要作用是定期
通过编辑日志合并命名空间镜像,以防止编辑日志过大。这个辅助namenode一般在另外一台单独的物理计算机
上运行,因为它需要大量cpu时间与namenode相同容量的内存来执行合并操作。它会保存合并后的命名空间
镜像的副本,并在namenode发生故障时启用。但通常保存的状态总是滞后于主节点。

HDFS联邦
HDFS系统可以同时拥有多个namenode,它解决了namenode的单点问题,一来是减少单点namenode崩溃带来的潜在危险,
另外可以减轻单个namenode的性能瓶颈。
1.目的水平扩展名称服务
2.使用多个独立的namenode和namespaces。每个namenode是独立的,不需要和其他namenode协调合作。
3.datanode作为统一的块存储设备被所有namenode节点使用。
4.每一个datanode节点都在所有namenode进行注册。datanode发送心跳信息,块报告到所有namenode,同时执行
所有namenode发送来的命令。

块池(Block Pool)
块池属于单个命名空间的一组块。
每个datanode为所有的block pool存储块。
Datanode是一个物理概念,而block pool是一个重新将block划分的逻辑概念。
同一个datanode可以属于多个block pool的多个块。
Block pool允许在不通知其他命名空间的情况下为一个新的block创建block id。
一个namenode失效不会影响其下的datanode为其他namenode的服务。

很多分布式系统采用Hash在这一分布式系统里常用的手段,因为同一目录的文件可能散步于各个命名空间,性能
很差,及当一个namenode损坏时,会影响多个目录下的文件。
Hadoop采用Client Side Mount Table的算法,将同一目录下的所有文件映射到同一个namenode中。

HDFS 2.x版本的新特性

HDFS 联邦:解决了单点NAMENODE的性能瓶颈
HDFS HA:  解决了1.x版本NAMENODE在遇到故障时无法自动切换的问题。
HDFS 快照
 
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics