精华内容
下载资源
问答
  • 本节将对 HDFS 的整体架构和基本实现机制进行简单介绍。 HDFS 整体架构 HDFS 是一个主从 Master/Slave 架构。一个 HDFS 集群包含一个 NameNode,这是一个 Master Server,用来管理文件系统的命名空间,以及调节...
  • 《Hadoop技术内幕(深入解析MapReduce架构设计与实现原理)》共12章,分4个部分(不包括附录):第一部分(第1~2章),介绍了Hadoop源代码的组织结构、获取、编译、调试、阅读环境搭建,以及MapReduce的设计理念和...
  • Hadoop技术内幕 深入解析HADOOP COMMON和HDFS架构设计与实现原理
  • HDFS架构

    2018-09-19 21:12:17
    HDFS架构图之基础架构 HDFS是使用Java语言构建的; 任何支持Java的机器都可以运行NameNode或DataNode软件。使用高度可移植的Java语言意味着可以在各种计算机上部署HDFS。 集群中存在单个NameNode,极大地简化了...

    1、 HDFS的架构图之基础架构

    在这里插入图片描述

    HDFS是使用Java语言构建的; 任何支持Java的机器都可以运行NameNode或DataNode软件。使用高度可移植的Java语言意味着可以在各种计算机上部署HDFS。
    集群中存在单个NameNode,极大地简化了系统的体系结构。NameNode是所有HDFS元数据的仲裁者和存储库。系统设计使用户数据永远不会流经NameNode。

    在这里插入图片描述

    1、 NameNode是一个中心服务器,单一节点(简化系统的设计和实现),负责管理文件系统的名字空间(namespace)以及客户端对文件的访问。NameNode记录对文件系统命名空间或其属性的任何更改。应用程序可以指定应由HDFS维护的文件的副本数。文件的副本数称为该文件的复制因子。该信息由NameNode存储。
    2、 文件操作,namenode是负责文件元数据的操作,datanode负责处理文件内容的读写请求,跟文件内容相关的数据流不经过Namenode,只询问它跟哪个dataNode联系,否则NameNode会成为系统的瓶颈。
    3、 副本存放在哪些Datanode上由NameNode来控制,根据全局情况作出块放置决定,读取文件时NameNode尽量让用户先读取最近的副本,降低读取网络开销和读取延时。
    4、 NameNode全权管理数据库的复制,它周期性的从集群中的每个DataNode接收心跳信合和状态报告,接收到心跳信号意味着DataNode节点工作正常,块状态报告包含了一个该DataNode上所有的数据列表。

    2、文件副本机制以及block块存储

    在这里插入图片描述

    所有的文件都是以block块的方式存放在HDFS文件系统当中,在hadoop1当中,文件的block块默认大小是64M,hadoop2当中,文件的block块大小默认是128M,block块的大小可以通过hdfs-site.xml当中的配置文件进行指定。

     <property>
            <name>dfs.block.size</name>
            <value>131072</value>//只写数值就可以,单位为kB
        </property>
    

    抽象成数据块的好处

    1. 使用数据块而不是文件可以简化存储子系统
    2. 块非常适合用于数据备份,进而提供数据容错能力和可用性
      3.一个文件有可能大于集群中任意一个磁盘
      10T*3/128 = xxx块 2T,2T,2T 文件方式存—–>多个block块,这些block块属于一个文件

    块缓存

    通常DataNode从磁盘中读取块,但对于访问频繁的文件,其对应的块可能被显示的缓存在DataNode的内存中,以堆外块缓存的形式存在。默认情况下,一个块仅缓存在一个DataNode的内存中,当然可以针对每个文件配置DataNode的数量。作业调度器通过在缓存块的DataNode上运行任务,可以利用块缓存的优势提高读操作的性能。
    例如一个文件 130M,会被切分成2个block块,保存在两个block块里面,实际占用磁盘130M空间,而不是占用256M的磁盘空间

    hdfs的文件权限验证

    hdfs的文件权限机制与linux系统的文件权限机制类似
    r:read w:write x:execute 权限x对于文件表示忽略,对于文件夹表示是否有权限访问其内容
    如果linux系统用户zhangsan使用hadoop命令创建一个文件,那么这个文件在HDFS当中的owner就是zhangsan

    副本选择

    为了最小化全局带宽消耗和读取延迟,HDFS尝试满足最接近读取器的副本的读取请求。如果在与读取器节点相同的机架上存在副本,则该副本首选满足读取请求。如果HDFS集群跨越多个数据中心,则驻留在本地数据中心的副本优先于任何远程副本。

    3、通信协议

    所有HDFS通信协议都分层在TCP / IP协议之上。
    客户端与NameNode计算机上的可配置TCP端口建立连接。它将ClientProtocol与NameNode进行了对话。DataNode使用DataNode协议与NameNode通信。远程过程调用(RPC)抽象包装了客户端协议和DataNode协议。
    按照设计,NameNode永远不会启动任何RPC。相反,它只响应DataNodes或客户端发出的RPC请求。

    4、稳健性

    HDFS的主要目标是即使在出现故障时也能可靠地存储数据。三种常见的故障类型是NameNode故障,DataNode故障和网络分区。

    网络分区故障,心跳检测和重新复制

    每个DataNode定期向NameNode发送Heartbeat消息。网络分区可能导致DataNode的子集失去与NameNode的连接。
    NameNode通过缺少Heartbeat消息来检测此情况。NameNode将DataBodes标记为没有最近的Heartbeats,并且不会将任何新的IO请求转发给它们。死掉的DataNode的任何数据对于集群来说都不再可用。
    DataNode死亡可能导致某些块的复制因子低于其指定值。NameNode不断跟踪需要复制的block块,并在必要时启动重新复制。
    由于以下原因可能会出现重新复制的必要性:DataNode可能变得不可用,副本可能会损坏,DataNode上的硬盘可能会失效。

    集群重新平衡

    HDFS架构与数据重新平衡方案兼容。如果DataNode上的可用空间低于某个阈值,则平衡方案可能会自动将数据从一个DataNode移动到另一个DataNode。如果对特定文件的需求突然增高,则方案可以动态创建其他副本并重新平衡群集中的其他数据。这些类型的数据重新平衡方案(2.x)尚未实施。

    数据的完整性

    从DataNode获取的数据块可能已损坏。由于存储设备中的故障,网络故障或有缺陷的软件,可能会发生此损坏。HDFS客户端软件对HDFS文件的内容进行校验和检查。当客户端创建HDFS文件时,它会计算文件每个块的校验和,并将这些校验和存储在同一HDFS命名空间中的单独隐藏文件中。当客户端检索文件内容时,它会验证从每个DataNode接收的数据是否与存储在关联校验和文件中的校验和相匹配。如果不是,则客户端可以选择从具有该块的副本的另一个DataNode中检索该块。

    元数据磁盘故障

    FsImage和EditLog是HDFS的中心数据结构。这些文件损坏可能导致HDFS实例无法正常运行。因此,可以将NameNode配置为支持维护FsImage和EditLog的多个副本。对FsImage或EditLog的任何更新都会导致每个FsImages和EditLogs同步更新。这种FsImage和EditLog的多个副本的同步更新可能会降低NameNode可以支持的每秒命名空间事务的速率。但是,这种降级是可以接受的,因为即使HDFS应用程序本质上是数据密集型的,它们也不是元数据密集型的。
    当NameNode重新启动时,它会选择要使用的最新一致FsImage和EditLog。


    NameNode计算机是HDFS集群的单点故障。如果NameNode计算机出现故障,则需要手动干预。目前,不支持将NameNode软件自动重启和故障转移到另一台机器。


    参考文档:`http://archive.cloudera.com/cdh5/cdh/5/hadoop-2.6.0-cdh5.14.0/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html`
    展开全文
  • HDFS架构和组成

    2021-02-24 22:52:27
    HDFS架构和组成 Hdfs 采用Master/Slave的架构来存储数据,这种架构主要由四个部分组成NameNode, DataNode,client,和SencondayNameNode组成 NameNode(Master): 管理 HDFS 的命名空间,维护元数据。 接收客户端的...

    HDFS架构和组成

    Hdfs 采用Master/Slave的架构来存储数据,这种架构主要由四个部分组成NameNode, DataNode,client,和SencondayNameNode组成
    在这里插入图片描述

    NameNode(Master):
    管理 HDFS 的命名空间,维护元数据。
    接收客户端的请求。
    管理数据块(Block)映射信息.
    配置副本策略
    DataNode(Slave):
    存储实际的数据块 。
    执行数据块的读/写操作。
    向namenode上传心跳信息。
    Client(客户端):
    1、文件上传 HDFS 的时候,Client 将文件切分成Block,然后进行存储。
    2、与 NameNode 交互,获取文件的位置信息。
    3、与 DataNode 交互,读取或者写入数据。
    4、Client 提供一些命令来管理 HDFS,比如启动或者关闭HDFS。
    SencondayNameNode(辅助工作者):
    1、辅助 NameNode,分担其工作量。
    2、定期合并 fsimage和fsedits,并推送给NameNode。
    3、在紧急情况下,可辅助恢复 NameNode。
    在这里插入图片描述
    公众号:大数据面试宝典 修改简历,面试辅导,回复888领取面试宝典资料
    在这里插入图片描述

    展开全文
  • 自己根据官网翻译而来,加上个人的整理的思维导图,非常值得一看
  • 从Common和HDFS的源代码进行了分析,旨在为Hadoop的优化、定制和扩展提供原理性的指导
  • HDFS架构  主从架构(master/slave)  两个重要进程:namenode和datanode HDFS数据存储  冗余备份(备份因子可配置,默认为3)  每个文件按字节切为128m的block(hadoop1为64m)  冗余数据保存 加快...

    HDFS设计前提与目标
     硬件容错
     流式数据访问
     超大规模数据集
     简单一致性模型

    • 一次写入多次读取
       移动计算比移动数据便宜

    HDFS架构
     主从架构(master/slave)
     两个重要进程:namenode和datanode
    在这里插入图片描述

    HDFS数据存储
     冗余备份(备份因子可配置,默认为3)
     每个文件按字节切为128m的block(hadoop1为64m)
    在这里插入图片描述

     冗余数据保存

    • 加快数据传输速度
    • 容易检查数据错误
    • 保证数据可靠性
      在这里插入图片描述

    Namenode (就像宿舍管理员)
     在hdfs中,namenode负责管理分布式文件系统的命名空间
     执行文件系统命名空间操作,如打开,关闭和重命名文件和目录
     控制客户端对文件的访问
     它还决定blocks到datanode的映射,记录了每隔文件中各个块所在的数据节点的位置信息
    在这里插入图片描述

     Namenode保存元数据(metadata)

    • 元数据是描述数据的数据,主要是描述数据属性的信息
    • 包括:文件信息,文件块的信息和位置,文件的访问权限,集群中文件的数量,集群中datanode的数量

    Namenode还保存了两个核心的数据结构,即fsimage(镜像文件)和editlog(操作文件
     Fsimage用于维护文件系统树以及文件树种所有文件和文件夹的元数据
     操作日志文件editlog中记录了所有针对文件的创建,删除,重命名等操作
    在这里插入图片描述

    Datanode
     文件系统中真正存储数据的地方

    • 一个block在datanode以文件形式存储在磁盘上,包括两个文件:一个数据本身,一个是元数据(包括数据块的长度,块数据的校验和时间戳)
    • 客户端或者namenode可向datanode请求写入或读出block(数据块),存储路径由dfs.datanode.data.dir指定
    • 在这里插入图片描述

     按照客户端请求,执行在文件系统上的读写操作
     根据namenode的指令执行block的创建,删除和备份
     向namenode定期发送自己所存储的块的列表

    Namenode启动过程和安全模式
    Namenode启动过程

    1. 启动hdfs,首先进入安全模式
    • 此时,NN运行处于safemode,即hdfs对于client来说时只读的
    1. 执行check-point检查点
    • 首先将fsimage载入到内存
    • 然后逐一执行edits文件中各项操作
    • 一旦在内存中成功建立hdfs最新的元数据映像,就会将最新的元数据flush到本地磁盘,生成一个新的fsimage文件
    1. 获得block块信息,建立block和DN的映射
    • Check-point完成后,NN开始监听RPC和HTTP请求
    • Namenode从所有datanode接手心跳信号和块状态报告,块状态报告包括了某个namenode上所有的数据块列表
    1. 退出安全模式
    • NN只有获取到整个文件系统中有99.9%(可以配置的)的块满足最小副本(加上一个额外的30s等待时间),才会自动退出安全模式
    • NN对外提供写服务

    Namenode本身只存储镜像文件和操作日志,不存储datanode和block的映射关系,它只会通过datanode心跳传递过来的这些映射关系,将这些关系建立起来,保存在内存当中。

    Secondary namenode
    Namenode运行期间editlog不断变大的问题
     SecondaryNamenode(SNN)是HDFS架构中一个组成部分,它用来保存namenode中对hdfs元数据信息的备份,并减少namenode重启的时间
     Secondary namenode节点处理镜像文件和事务日志
    在这里插入图片描述

    单点故障问题
     HA(高可用)

    • Hadoop集群中,namenode节点存储hdfs上所有文件和目录的元数据信息
    • 如果namenode挂了,也意味着整个hadoop集群无法使用
      高可靠:block块在hadoop存储的冗余备份

    Hdsf写文件剖析
    在这里插入图片描述

     Block块副本选址策略

    • 第一个副本:放置在上传文件的数据节点;如果是集群外提交,则随机挑选一台磁盘不太满,cpu不太忙的节点
    • 第二个副本:放置在与第一个副本不同的机架节点上
    • 第三个副本:与第二个副本同一机架的另一个节点上
    • 更多副本:随机节点
      在这里插入图片描述

     写过程的故障检测与恢复

    • HDFS的恢复过程有助于实现容错;它不仅涉及到块,还涉及到管道;在HDFS中,有三种recovery
    1. Lease recovery(租约)
    2. Block recovery(块)
    3. Pipeline recovery(流水线)
      租约恢复:租约是hdfs用来保证对文件的独占写访问的一种方法,它保证在一段时间内只对一个客户有效,若客户仍需处理该文件,则必须定期更新租约
      块恢复:确保租用文件的最后一个块的所有副本有相同的长度;block恢复只有在租约恢复时被触发,且租约恢复只会触发一个文件的最后一个block进行block恢复。

    Hdfs读剖析
    在这里插入图片描述
    在这里插入图片描述

     文件完整性

    • 网络传输和磁盘错误等因素,会造成数据错误
    • 在文件被创建时,客户端对每个文件块进行信息摘录,并把这些信息写入到同一个路径的隐藏文件中(crc32校验)
    • 当客户端读取文件时,会利用该信息文件对每个读取的数据块进行校验(出错:请求另一个DN,报告给NN)
      备份每个分块文件;分块冗余,本地校验

    文件删除剖析
    在这里插入图片描述

    HDFS特点
     廉价的商用机器
     高容错性保障机制

    • 冗余副本策略
    • 机架策略
    • 心跳机制
    • 安全模式
    • 校验
    • 回收站
    • 元数据保护

    HDFS适用场景
     高容错性

    • 数据自动保存多个副本
    • 副本丢失后,自动恢复
       适合批处理
    • 移动计算而非数据
    • 数据位置暴露给计算框架
       适合大数据处理
    • GB,TB,甚至PB级数据
    • 百万规模以上的文件数量
    • 10k+节点规模
       流式文件访问
    • 一次性写入,多次读取
    • 保证数据一致性
       可构建在廉价机器上
    • 通过多副本提高可靠性
    • 提供了容错和恢复机制

    HDFS不适用场景
     低延迟数据访问

    • 比如毫秒级
    • 低延迟与高吞吐量
       小文件存取
    • 占用namenode大量内存
    • 寻道时间超过读取时间
       并发写入,文件随机修改
    • 一个文件只能由一个写者
    • 一次写入,多次读取
    • 仅支持append

    HDFS操作
     访问hdfs有多种方式

    1. Shell命令行
    2. JavaAPI编程

    Hdfs是模拟linux文件系统,因此很多hdfs命令和linux命令很像
    Hdfs常用命令
    Ex:
    Hdfs dfs –help
    Hdfs dfs –ls
    Hdfs dfs –mkdir /aaa
    Hdfs dfs –put word.txt /aaa/ 将word.txt文件上传到/aaa/文件夹后
    Hdfs dfs –get /aaa/word.txt abc.txt 将文件下载道abc.txt
    Hdfs dfs –cat /aaa/word.txt 浏览word.txt文件内容

    Jps: 查看hdfs集群是否启动

    展开全文
  • HDFS架构简述

    千次阅读 2019-04-26 17:54:24
    HDFS架构简述 一、HDFS简介 HDFS(Hadoop distributed File System):Hadoop分布式文件系统。是基于流数据模式访问和处理超大文件的需要而开发的,可以运行于廉价的服务器上。它所具有的高容错,高可靠性,高可扩展...

    HDFS架构简述

    一、HDFS简介

    HDFS(Hadoop distributed File System):Hadoop分布式文件系统。是基于流数据模式访问和处理超大文件的需要而开发的,可以运行于廉价的服务器上。它所具有的高容错,高可靠性,高可扩展性,高获得性,高吞吐率等特征为海量数据提供了不怕故障的存储,为超大数据集的应用带来了很多便利。简单来说就是把一个超大号文件按一定大小分割并放置在多台服务器上,这样多台服务器同时工作,效率超高,而且安全性也会提高。

    二、HDFS组成结构以及各部分作用

    HDFS主要由四个部分组成,分别为Client,nameNode、DataNode、以及Secondary NameNode组成。
    2.1Client(客户端)

    • 文件切分:文件上传HDFS的时候,client根据需求将文件切分成一个一个的小数据块(block),然后进行存储。
    • 每个小数据块(block)在其他服务器上都有副本,client会与namenode进行通信,获取文件及其副本位置,为以后做打算。
    • 与DataNode进行通信,读取或写入数据。
    • client可以管理HDFS,比如启动或关闭。

    2.2nameNode(管理者)
    nameNode在HDFS是管理者的作用,类似于现实世界中的国王地位,客户端和secondary nameNode都是与他进行通信,然后由他发号施令来操作DataNode。主要作用有:

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

    2.3DataNode(执行者)
    DataNode在文档中的角色是slave,翻译过来就是奴隶的意思(所以大家知道他的地位了吧),主要就是存储数据块和读写数据块用的:

    • 存储实际的数据块(block)
    • 执行数据块的读写操作

    2.4secondary nameNode
    他是nameNode的死忠,帮助nameNode完成一些工作,并且在nameNode要挂的时候给他续命,主要作用如下:

    • 定期合并nameNode中的fsimage(映像文件)和fsedits(日志),并推送给nameNode,避免nameNode中的fsedits过大。
    • 在紧急情况下,可辅助恢复nameNode。

    三、副本放置策略

    第一个副本:放置在上传文件的DN;如果是集群外提交,则随机挑选一台磁盘不太满,CPU不太忙的节点。
    第二个副本:放置在于第一个副本不同的 机架的节点上。

    sanm.pzi.cn

    展开全文
  • Hadoop技术内幕:深入解析Hadoop Common 和HDFS 架构设计与实现原理 (大数据技术丛书) 原版书籍,非扫描版,使用kindle可以打开,也可以转换为epub使用ibooks打开
  • 包含完整目录结构,高清版本 Hadoop技术内幕 深入解析HADOOP COMMON和HDFS架构设计与实现原理
  • 路标HDFS架构简介架构NameNode & DataNodesSecondaryNameNode & NameNode HDFS架构 简介 Hadoop分布式文件系统(HDFS)是指被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统(Distributed ...
  • 浅析HDFS架构和设计

    2021-02-24 13:32:25
    下面主要讲下HDFS设计中的比较重要的点,使读者能通过简短的文章一窥HDFS的全貌,适合对HDFS有一点了解,但是对HDFS又感到困惑的初学者。本文主要参考的是。当数据集的大小超过了一台物理机所能存储的能力时,就需要...
  • Hadoop技术内幕 深入解析HADOOP COMMON和HDFS架构设计与实现原理.pdf
  • Hadoop之详解HDFS架构

    2021-02-24 02:09:46
    Hadoop包含三大基本组件:HDFS——分布式文件系统,用于数据存储YARN——统一资源管理和调度系统,用于管理集群的计算资源并根据计算框架的需求进行调度,支持包含MapReduce、Spark、Flink等多种计算框架。...
  • hadoop:hdfs架构及原理

    万次阅读 2018-10-08 09:41:14
    HDFS简介 HDFS:Hadoop Distributed File System(hadoop分布式文件系统) 分布式,感觉好厉害的样子啊,有网络文件系统,有本地文件系统,现在又多了一个分布式的文件系统。之所以是要分布式,是数据要放到多个主机...
  • 《Hadoop技术内幕 深入解析HADOOP_COMMON和HDFS架构设计与实现原理》书签版
  • Hadoop技术内幕 深入解析HADOOP COMMON和HDFS架构设计与实现原理(带书签目录) Hadoop技术内幕 HDFS 书签 目录
  • HDFS架构原理;学完本课程后您将能够: 了解HDFS使用的场景 了解HDFS功能与架构 了解HDFS常用命令和参数 ;HDFS概述 HDFS功能与架构 HDFS常见命令和参数;HDFS概述;HDFS概述 HDFS功能与架构 HDFS常见命令和参数;HDFS概述...
  • hdfs架构组成部分

    千次阅读 2018-10-16 14:48:11
    HDFS,Hadoop分布式文件系统,它是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,适合那些有着超大数据集的应用程序。 HDFS的设计特点是: 大数据文件,非常适合上T级别的大文件...
  • HDFS架构( HDFS Architecture)

    千次阅读 2015-11-27 16:33:40
    HDFS架构 介绍 Hadoop分布式文件系统(HDFS)是一个运行在普通商用服务器上的分布式文件系统。他和很多的分布式文件系统类似,但是也有很显著的不同。HDFS是一个高容错并且可以部署在廉价机器上运行的系统。...
  • Hadoop核心之HDFS 架构设计

    万次阅读 2015-09-18 16:55:53
    概述:HDFS即Hadoop Distributed File System分布式文件系统,它的设计目标是把超大数据集存储到分布在网络中的多台普通商用计算机上,并且能够提供高可靠性和高吞吐量的服务。分布式文件系统要比普通磁盘文件系统...
  • HDFS架构和读写流程详解

    千次阅读 2017-10-06 18:09:40
    1.HDFS(Hadoop Distributed File System): 分布式文件系统,将一个文件分成多个块,分别存储(拷贝)到不同的节点上,它是Hadoop体系中数据存储管理的基础。它是一个高度容错的系统,能检测和应对硬件故障,用于在...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 71,955
精华内容 28,782
关键字:

hdfs架构