您的位置:首页 > 运维架构

《Hadoop学习笔记系列》二.Hadoop分布式文件系统 HDFS

2016-11-06 13:03 260 查看

0.Hadoop分布式文件系统 HDFS

HDFS以流式数据访问模式来存储超大文件,运行与商用硬件集群上。



1.流式数据访问

HDFS的构建思路:一次写入,多次读取是最高效的访问模式。


2. Block数据块

HDFS基本读写单位,类似于磁盘的页,每次都是读写一个块一般大小为64M,配置大的块目的是最小化寻址开销。

因为:

1)减少搜寻时间,一般硬盘传输速率比寻道时间要快,大的块可以减少寻道时间;

2)减少管理块的数据开销,每个块都需要在NameNode上有对应的记录;

3)对数据块进行读写,减少建立网络的连接成本

一个大文件会被拆分成一个个的块,然后存储于不同的机器。如果一个文件少于Block大小,那么实际占用的空间为其文件的大小;每个块都会被复制到多台机器,默认复制3份,确保数据的容错能力和可用性。如果发现一个块不可用,系统会从不其他地方读取另一个复本。

对于分布式文件系统中的块进行抽象的好处:

一个文件的大小可以大于网络中的任意一个磁盘的容量。

使用块抽象而非整个文件作为存储单元,大大简化了存储子系统的设计。

3. namenode

HDFS基础主从架构,HDFS集群由两类节点,namenode节点(管理者)和datanode节点(工作者)。

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

4. datanode

datanode是文件系统的工作节点。他们需要存储并检索数据块(受客户端或namenode调度),并定期向namenode发送他们所存储块的列表。

没有namenode,文件系统将无法使用。因此,对namenode实现容错非常重要,Hadoop为此提供了两种机制:

1.备份那些文件组成文件系统元数据持久状态的文件。Hadoop可以通过配置使namenode在多个文件系统上保存元数据的持久状态。这些写操作是实时同步的,是原子操作。

一般的配置是,将持久状态写入本地磁盘的同时,写入一个远程挂载的网络文件系统(NFS)

2.运行一个辅助的namenode,但它不能被用作namenode。这个辅助namenode的重要作用是,定期通过编辑日志合并命名空间镜像,以防止编辑日志过大。

这个辅助namenode一般在另一台单独的物理计算机上运行,因为他需要占用大量CPU时间与namenode相同容量的内存来执行合并操作。它会保存合并之后的命名空间镜像的副本,并在namenode发生故障时启用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: