Hadoop HDFS概述

HDFS 概述

产生背景

随着数据量越来越大,在一个操作系统存不下所有的数据,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,迫切需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统。HDFS只是分布式文件管理系统中的一种。

HDFS 定义

HDFS(Hadoop Distributed File System),它是一个文件系统,用于存储文件,通过目录树来定位文件;其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。

HDFS 优缺点

优点

  • 高容错性

数据自动保存多个副本。它通过增加副本的形式,提高容错性。

某一个副本丢失以后,它可以自动恢复。

  • 适合处理大数据

数据规模:能够处理数据规模达到GB、TB、甚至PB级别的数据;

文件规模:能够处理百万规模以上的文件数量,数量相当之大。

  • 构建在廉价机器上

缺点

  • 不适合低延时数据访问,比如毫秒级的存储数据,是做不到的。
  • 无法高效的对大量小文件进行存储。

小文件过多,会过多占用 Namenode 的内存,并浪费block。因为HDFS的每个文件、目录、数据块占用150B空间大小。

  • 不支持并发写入、文件随机修改。

HDFS 组成架构

NameNode:就是一个Master。主要负责:

  • 管理HDFS的名称空间
  • 配置副本策略
  • 管理数据块(Block)映射信息
  • 处理客户端读写请求

DataNode:就是Slave。主要负责:

  • 存储实际的数据块
  • 执行数据块的读/写操作

Client:就是客户端,例如(Java代码,hdfs dfs)。主要负责:

  • 文件切分。文件上传HDFS的时候,Client将文件切分成一个一个的Block,然后进行上传
  • 与NameNode交互,获取文件的位置信息
  • 与DataNode交互,读取或者写入数据
  • Client提供一些命令来管理HDFS,比如NameNode格式化
  • Client可以通过一些命令来访问HDFS,比如对HDFS增删查改操作

Secondary NameNode:NameNode 辅助节点,主要负责:

  • 合并 fsimage 和 edit logs

NameNode 为了效率高,所以将目录结构相关数据放在内存中。但是因为内存容易丢失,所以内存中的数据需要持久化。那么谁来做这件事情?

NameNode不能完成这件事情吗,当然可以的。如果这么设计会导致 NameNode 节点任务繁重执行效率低下,因此诞生了- Secondary NameNode

HDFS 文件块大小

在 Hadoop2.x 版本中是 128M,老版本中是 64M。可通过配置文件修改。

<property>
  <name>dfs.blocksize</name>
  <value>134217728</value>
  <description>
      The default block size for new files, in bytes.
      You can use the following suffix (case insensitive):
      k(kilo), m(mega), g(giga), t(tera), p(peta), e(exa) to specify the size (such as 128k, 512m, 1g, etc.),
      Or provide complete size in bytes (such as 134217728 for 128 MB).
  </description>
</property>

参考资料

  • Hadoop海量数据处理:技术详解与项目实战(第2版)
  • 尚硅谷大数据
posted @ 2020-04-06 22:26  有我在  阅读(272)  评论(0编辑  收藏  举报