HDFS

HDFS 全称hadoop分布式文件系统,其最主要的作用是作为 Hadoop 生态中各系统的存储服务

特点

优点

• 高容错、高可用、高扩展  -数据冗余多副本,副本丢失后自动恢复   -NameNode HA、安全模式  -10K节点规模

• 海量数据存储   -典型文件大小GB~TB,百万以上文件数量 PB以上数据规模

• 构建成本低、安全可靠   -构建在廉价的商用服务器上   -提供了容错和恢复机制

• 适合大规模离线批处理   -流式数据访问         -数据位置暴露给计算框架

缺点

• 不适合低延迟数据访问

• 不适合大量小文件存储 -元数据占用NameNode大量内存空间 -磁盘寻道时间超过读取时间

• 不支持并发写入 -一个文件同时只能有一个写入者

• 不支持文件随机修改 -仅支持追加写入

架构图

Namenode 主节点

管理HDFS文件系统的命名空间、维护元数据信息

处理客户端读写请求

Datanode 从节点

存储数据(Block)

集群启动时, DataNode向NameNode汇报Block列表信息集群运行期间, 通过心跳机制定期(默认3秒) 与NameNode保持通信

Secondary node 

主要存在于HDFS1.x架构当中, 并不是NameNode的热备,只是在namende发生故障的时候快速切换

辅助NameNode完成元数据文件fsimage、 edits的定期合并

HDFS存储机制:元数据

元数据(Metadata)

信息存放在NameNode内存当中 包含:HDFS中文件及目录的基本属性信息(如拥有者、权限信息创建时间等)、文件有哪些block构成、 以及block的位置存放信息。

元数据信息持久化

fsimage(元数据镜像检查点文件)

edits(编辑日志文件,记录写操作)

注:block的位置信息并不会做持久化,仅仅只是在DataNode启动汇报给NameNode,存放在NameNode内存空间内

HDFS存储机制:block

Block

• Block是HDFS的最小存储单元 • Block的大小 -默认大小:128M(HDFS 1.x中,默认64M)

-若文件大小不足128M,则会单独成为一个block -实质上就是Linux相应目录下的普通文件

-名称格式:blk_xxxxxxx

• Block和元数据分开存储,Block存储于DataNode,元数据存储于NameNode

• Block多副本 -默认副本数:3

-机架感知:将副本存储到不同的机架上,实现数据的高容错

-副本均匀分布:提高访问带宽和读取性能,实现负载均衡,避免出现数据倾斜

HDFS存储机制:读写流程

写流程

• 客户端发送创建文件指令给分布式文件系统

• 文件系统告知namenode • 检查权限,查看文件是否存在

• EditLog增加记录 • 返回输出流对象

• 客户端往输出流中写入数据,分成一个个数据包

• 根据namenode分配,输出流往datanode写数据

• 多个datanode构成一个管道pipeline,输出流写第一个,后面的转发

• 每个datanode写完一个块后,返回确认信息

• 写完数据,关闭输出流

• 发送完成信号给namenode

读流程

• 客户端发送打开文件指令给分布式文件系统

• 文件系统访问namenode,获得这个文件的数据块位置列表,返回输入流对象

• 客户端从输入流中读取数据

• 输入流从各个datanode读取数据

• 关闭输入流

HDFS架构与原理的更多相关文章

  1. HDFS架构及原理

    原文链接:HDFS架构及原理 引言 进入大数据时代,数据集的大小已经超过一台独立物理计算机的存储能力,我们需要对数据进行分区(partition)并存储到若干台单独的计算机上,也就出现了管理网络中跨多 ...

  2. 2本Hadoop技术内幕电子书百度网盘下载:深入理解MapReduce架构设计与实现原理、深入解析Hadoop Common和HDFS架构设计与实现原理

    这是我收集的两本关于Hadoop的书,高清PDF版,在此和大家分享: 1.<Hadoop技术内幕:深入理解MapReduce架构设计与实现原理>董西成 著  机械工业出版社2013年5月出 ...

  3. 2、Hdfs架构设计与原理分析

    文章目录 1.Hadoop架构 2.HDFS体系架构 2.1NameNode 2.1.1元数据信息 2.1.2NameNode文件操作 2.1.3NameNode副本 2.1.4NameNode心跳机 ...

  4. HBase的基本架构及其原理介绍

    1.概述:最近,有一些工程师问我有关HBase的基本架构的问题,其实这个问题仅仅说架构是非常简单,但是需要理解.在这里,我觉得可以用HDFS的架构作为借鉴.(其实像Hadoop生态系统中的大部分组建的 ...

  5. 大数据技术hadoop入门理论系列之二—HDFS架构简介

    HDFS简单介绍 HDFS全称是Hadoop Distribute File System,是一个能运行在普通商用硬件上的分布式文件系统. 与其他分布式文件系统显著不同的特点是: HDFS是一个高容错 ...

  6. HDFS 架构简述

    HDFS 架构简述 Hadoop分布式文件系统(HDFS)是一个分布式的文件系统,运行在廉价的硬件上.它与现有的分布式文件系统有很多相似之处.然而与其他的分布式文件系统的差异也是显着的.HDFS是高容 ...

  7. Hbase架构与原理

    Hbase架构与原理 HBase是一个分布式的.面向列的开源数据库,该技术来源于 Fay Chang所撰写的Google论文"Bigtable:一个结构化数据的分布式存储系统".就 ...

  8. Spark基本架构及原理

    Hadoop 和 Spark 的关系 Spark 运算比 Hadoop 的 MapReduce 框架快的原因是因为 Hadoop 在一次 MapReduce 运算之后,会将数据的运算结果从内存写入到磁 ...

  9. storm架构及原理

    storm 架构与原理 1 storm简介 1.1 storm是什么 如果只用一句话来描述 storm 是什么的话:分布式 && 实时 计算系统.按照作者 Nathan Marz 的说 ...

随机推荐

  1. mongodb主从搭建

    #tigergao 官网进行下包,可以下载源码包或者二进制包,本次下载的为二进制包,进行试验. 主服务器搭建: mkdir mongomaster cp mongodb-linux-x86_64-rh ...

  2. Django框架 part 2

    web 框架本质 我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端. 这样我们就可以自己实现Web框架了. 半成品自定义web框架 impo ...

  3. create raid5

    # umout 所有数据disk for i in {1..11};do umount /disk$i;done # 修改/etc/fstab,注释掉 /dev/sd[b-l] vim /etc/fs ...

  4. laravel contains 的用法

    最近在学laravel,做一下学习笔记. 1.contains()方法判断集合是否包含给定的项目: ]);var_dump($collection->contains('Desk'));// t ...

  5. 51nod 1576 Tree and permutation(树的重心+dfn序)

    乍一看我不会. 先不考虑加点. 先考虑没有那个除\(2\). 考虑每一条边的贡献,假设某一条边把这棵树分成大小为x,y的两个部分. 那么这条边最多可以被使用\(min(x,y)*2\)次(因为有进有出 ...

  6. 斯特林公式--取N阶乘近似值

    斯特林公式(Stirling's approximation)是一条用来取n的阶乘的近似值的数学公式.一般来说,当n很大的时候,n阶乘的计算量十分大,所以斯特林公式十分好用,而且,即使在n很小的时候, ...

  7. Linux磁盘分区--MBR分区

    今天心情不高兴,做IT不容易被公司重视,一定要速度学会运营,成为一个高逼格的技术男. 今天我要熟练掌握linux系统分区的能力.大家都知道,linux系统分区有两种分区格式:GTP和MBR. MBR作 ...

  8. debian 9 安装后的配置,debian 9 开发环境。

    注意:以下命令用sudo或者以root用户进行 一.Xterm(在安装KDE桌面情况下)的配置(可以黏贴,复制): 首先在根目录下编辑文件.Xresources(没有可以创建) root@debian ...

  9. Windows 10快速在指定目录打开命令行

    一.我们在想要到达的目录上按住shift键并点击鼠标右键.看到了吗,这时候在弹出菜单里多了一个选项,就是"在此处打开命令窗口",我们点开看一下. 二.不过有时候我们需要以管理员的权 ...

  10. Numpy的使用规则

    之前安装的python版本是3.7 各种库都是自己一个一个下载安装的 很操心 各种缺功能 后来发现了anaconda 啊 真是一个好东西 简单来说 它就是一个涵盖大部分常用库的python包 一次安装 ...