Hadoop之HDFS概念与体系结构

HDFS是什么

Hadoop Distributed File System(简称HDFS)是Hadoop分布式文件系统。

HDFS有着高容错性(fault-tolerant)的特点,并且设计用来部署在低廉的(low-cost)硬件上。而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求(requirements)这样可以实现流的形式访问(streaming access)文件系统中的数据。

HDFS是一个分布式文件系统,这里科普一下什么是分布式文件系统:

当数据量越来越多,在一个操作系统管辖的范围存不下了,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,因此迫切需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统 (Distributed File System)。

  • 分布式文件系统的定义:

是一种允许文件通过网络在多台主机上分享的文件系统,可让多机器上的多用户分享文件和存储空间。

  • 分布式文件系统特点:
  • 通透性。

让实际上是通过网络来访问文件的动作,由程序与用户看来,就像是访问本地的磁盘一般。

  • 容错。

即使系统中有某些节点脱机,整体来说系统仍然可以持续运作而不会有数据损失。

注意:分布式文件管理系统很多,HDFS只是其中一种。适用于一次写入多次查询的情况,不支持并发写情况,小文件不合适。

HDFS的体系结构

NameNode
  • NameNode是整个文件系统的管理节点。它维护着整个文件系统的文件目录树,文件/目录的元信息和每个文件对应的数据块列表。接收用户的操作请求。
  • 文件包括:hdfs-site.xml的name.dir属性

fsimage:元数据镜像文件。存储某一时段NameNode内存元数据信息。

edits:操作日志文件。

fstime:保存最近一次checkpoint的时间

  • 以上这些文件是保存在linux的文件系统中。
DataNode

DataNode是文件系统的工作节点,他们根据客户端或者是namenode的调度存储和检索数据,并且定期向namenode发送他们所存储的块(block)的列表。

  • 文件块(block):最基本的存储单位。对于文件内容而言,一个文件的长度大小是size,那么从文件的0偏移开始,按照固定的大小,顺序对文件进行划分并编号,划分好的每一个块称一个Block。HDFS默认Block大小是128MB,以一个256MB文件,共有256/128=2个。可以在配置里指定dfs.block.size属性的大小.
  • 不同于普通文件系统的是,HDFS中,如果一个文件小于一个数据块的大小,并不占用整个数据块存储空间
  • Replication指定多副本。默认是三个。hdfs-site.xml的dfs.replication属性。
Secondary NameNode

是HA的一种解决方案,主要起到两种作用:镜像备份以及日志和镜像定期合并,这两个过程称之为checkpoint。

镜像备份:备份fsimage(fsimage是元数据发送检查点时写入文件);

日志与镜像的定期合并的作用:将Namenode中edits日志和fsimage合并,防止(如果Namenode节点故障,namenode下次启动的时候,会把fsimage加载到内存中,应用edit log,edit log往往很大,导致操作往往很耗时。)

Secondary NameNode的工作流程:
  1. secondary通知namenode切换edits文件
  2. secondary从namenode获得fsimage和edits(通过http)
  3. secondary将fsimage载入内存,然后开始合并edits
  4. secondary将新的fsimage发回给namenode
  5. namenode用新的fsimage替换旧的fsimage
什么时候checkpiont
  1. checkpoint.period 指定两次checkpoint的最大时间间隔,默认3600秒。
  2. checkpoint.size规定edits文件的最大值,一旦超过这个值则强制checkpoint,不管是否到达最大时间间隔。默认大小是64M。

HDFS的工作模式

HDFS是一个的主从结构,一个HDFS集群是由一个NameNode,它是一个管理文件命名空间和调节客户端访问文件的主服务器,当然还有一些DataNode,通常是一个节点一个机器,它来管理对应节点的存储。HDFS对外开放文件命名空间并允许用户数据以文件形式存储。

内部机制是将一个文件分割成一个或多个块,这些块被存储在一组DataNode中。NameNode用来操作文件命名空间的文件或目录操作,如打开,关闭,重命名等等。它同时确定块与DataNode的映射。DataNode来负责来自文件系统客户的读写请求。DataNode同时还要执行块的创建,删除,和来自NameNode的块复制指令。

NameNode和DataNode都是运行在普通的机器之上的软件,机器典型的都是GNU/Linux,HDFS是用java编写的,任何支持java的机器都可以运行NameNode或DataNode,利用java语言的超轻便型,很容易将HDFS部署到大范围的机器上。典型的部署是由一个专门的机器来运行NameNode软件,集群中的其他每台机器运行一个DataNode实例。体系结构不排斥在一个机器上运行多个DataNode的实例,但是实际的部署不会有这种情况。

集群中只有一个NameNode极大地简单化了系统的体系结构。NameNode是仲裁者和所有HDFS元数据的仓库,用户的实际数据不经过NameNode。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Hadoop数据仓库

HAWQ技术解析(十六) —— 运维监控

        与任何IT系统一样,为了保证HAWQ集群的高可用和高性能,需要进行一系列监控与维护活动。本篇讨论HAWQ推荐的运维与监控活动。 一、推荐的监控与...

2118
来自专栏杨建荣的学习笔记

Orabbix定制监控Oracle的简单配置(r6笔记第26天)

Orabbix是在zabbix的基础上提供的一套插件,能够提供对Oracle的监控功能真是术业有专攻,在Oracle层面zabbix希望也能够走得更远,所以对于...

2834
来自专栏别先生

Hadoop的namenode的管理机制,工作机制和datanode的工作原理

HDFS前言:   1) 设计思想     分而治之:将大文件、大批量文件,分布式存放在大量服务器上,以便于采取分而治之的方式对海量数据进行运算分析; ...

3029
来自专栏数据派THU

独家 | 一文读懂Hadoop(二)HDFS(上)

随着全球经济的不断发展,大数据时代早已悄悄到来,而Hadoop又是大数据环境的基础,想入门大数据行业首先需要了解Hadoop的知识。2017年年初apache发...

3318
来自专栏算法channel

HDFS|基本概念和读写原理

01 — HDFS设计目的 A distributed file system that provides high-throughput access to ...

3117
来自专栏Albert陈凯

Hadoop系统架构与简单介绍

Hadoop系统架构 一、Hadoop系统架构图 ? Hadoop1.0与hadoop2.0架构对比图 ? YARN架构: ResourceM...

3727
来自专栏Hadoop实操

如何在CDH中使用HBase快照

前面Fayson讲过HDFS的快照,参考如何在CDH集群使用HDFS快照,那么HBase的快照呢?HBase快照功能丰富,有很多特征,并且创建时不需要关闭集群。...

3846
来自专栏Spark学习技巧

hadoop系列之深入优化

五、MapReduce的优化 1、 操作系统调优 增大打开文件数据和网络连接上限,调整内核参数net.core.somaxconn,提高读写速度和网络带宽使用率...

1867
来自专栏Hadoop数据仓库

HAWQ技术解析(十四) —— 高可用性

一、HAWQ高可用简介         HAWQ作为一个传统数仓在Hadoop上的替代品,其高可用性至关重要。通常硬件容错、HAWQ HA、HDFS HA是保持...

23910
来自专栏Hadoop实操

CDH内存调拨过度警告分析

Hadoop应用程序或者Yarn的作业随机的出现OutOfMemory(OOM),在Cloudera Manager界面显示如下警告:

72810

扫码关注云+社区