前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Hadoop之HDFS概念与体系结构

Hadoop之HDFS概念与体系结构

作者头像
天策
发布2018-06-22 15:18:55
7220
发布2018-06-22 15:18:55
举报
文章被收录于专栏:行者悟空行者悟空
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。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016年10月18日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • HDFS是什么
    • HDFS是一个分布式文件系统,这里科普一下什么是分布式文件系统:
    • HDFS的体系结构
      • NameNode
        • DataNode
          • Secondary NameNode
            • Secondary NameNode的工作流程:
              • 什么时候checkpiont
              • HDFS的工作模式
              相关产品与服务
              云 HDFS
              云 HDFS(Cloud HDFS,CHDFS)为您提供标准 HDFS 访问协议,您无需更改现有代码,即可使用高可用、高可靠、多维度安全、分层命名空间的分布式文件系统。 只需几分钟,您就可以在云端创建和挂载 CHDFS,来实现您大数据存储需求。随着业务需求的变化,您可以实时扩展或缩减存储资源,CHDFS 存储空间无上限,满足您海量大数据存储与分析业务需求。此外,通过 CHDFS,您可以实现计算与存储分离,极大发挥计算资源灵活性,同时实现存储数据永久保存,降低您大数据分析资源成本。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档