阅读 33

HDP学习--Managing HDFS Storage(00)

HDFS architecture, operations, and management

一、 HDFS架构

下图为HDFS架构:

这里写图片描述

namespace: 包括文件系统的层次结构。
journaling: 保护数据写到文件系统的一致性, 文件系统的改变都持久化存到disk的**fsimage_<N> and edits_<N>** 的文件。
Blocak Map: 映射文件名和data block id
DataNode: 存储HDFS文件数据,通常有多个磁盘来提高I/O吞吐量。
SecondaryNameNode:
减轻主NameNode的CheckPoint的操作;
提供冗余,以防主NameNode挂了;

二、数据写到HDFS中&读数据

下图展示一个文件如何写到HDFS中:

这里写图片描述

流程:

  • 第一步:HDFS Client 向NameNode发送一个像HDFS中写一个文件的请求。
  • 第二步: NameNode会验证请求的路径和文件名是否合法,如果合法, NameNode向Client发送一个文件名和路径的lease.
  • 第三步: Clien验证默认的HDFSdata block size, 请求block IDs , 每个block对应的DataNode列表。程序可以请求不同的block size.
  • 第四步: NameNode将对应的信息发送给Client
  • 第五—十一步: 依次将数据和checkSum写到DataNodes中, 并向Client发送响应。
  • 第十二步:当所有的数据块写到磁盘, Client通知NameNode写操作已经完成。

下图展示如何读取HDFS中文件:

这里写图片描述

三、 副本及块的位置

  HDFS是为了当发生硬盘、系统、网络的故障, 能够自动的,清楚的复制数据到不同的DataNode。一个文件被拆分成一个或多个数据块, 默认块大小为128Mhdfs-site.xml中的dfs.blocksize所决定。
任何Client能够重写默认块大小, 如果文件大于默认块大小, 就会拆分成多个块(如1g文件会拆分成8个块);如果文件小于默认块大小, 只会消耗的所需的空间(如一个1字节的文件只会消耗一字节空间, 外加校验和文件)。
通常HDFS要求相同的文件的数据块有相同的大小,自HDP2.3之后, HDFS支持不同的块大小在相同的文件, 这种改进运用在特定案例中: 将几个小文件合成一个大文件
For example, this is done as part of the YARN log aggregation feature.

下图是副本块存储形式:

这里写图片描述

四、 DataNode and NameNode 存储

   DataNode将HDFS数据存储在Disk, HDFS数据块在DataNode本地文件系统中以文件的形式呈现。
hdfs-site.xml:
dfs.datanode.data.dir决定存储HDFS数据块的父目录, 这个属性可以包含一个以逗号分隔的父目录,使一个DataNode使用多个物理磁盘数据块存储。
(如:/hadoop/hdfs/data1, /hadoop/hdfs/data2

数据块可以分散在多个目录。当一个目录中的数据块超过64, 就会创建一个新的统计目录,这保证了HDFS的读取性能。
每个块都有一个唯一的ID,这个ID是NameNode用来定位和读取数据,每个数据块都以文件的形式存在DataNode的本地文件系统,文件名是依据ID号。
为了保证数据的完整性,每个数据块有一个或多个checkSum, 每512-byte的块都有一个校验和, 这个是由hdfs-site.xml中的dfs.bytes-per-checksum所决定,通常是不可修改。每次读取数据块,都会重新计算校验和,用于对比校验。

DataNode存储

这里写图片描述

NameNode存储

这里写图片描述

  NameNodes persist HDFS storage state information to disk. The value recorded in the dfs.namenode.name.dir property in the hdfs-site.xml file determines the parent directory of the persisted information. This property can contain a comma-separated list of multiple directories. For example, one directory could be located on a local disk while a second directory could map to a directory mounted from an NFS server. This would provide redundancy for this critical information. Configuring NameNode High Availability (HA) is a popular method to achieve NameNode redundancy. NameNode HA is described in a another lesson.   The number of past edits files to retain is controlled by the dfs.namenode.num.extra.edits.retained property in hdfs-site.xml.   The number of past fsimage checkpoint files to retain is controlled by the dfs.namenode.num.checkpoints.retained property in hdfs-site.xml.

文章分类
代码人生
文章标签