332名称节点和数据节点 名称节点运行期间 EditLog不断变大的问题 在名称节点运行期间,HDFS的所有更新操作都是直接写到 EditLog中,久 而久之, EditLog文件将会变得很大 ·虽然这对名称节点运行时候是没有什么明显影响的,但是,当名称节点重 启的时候,名称节点需要先将 FsImage里面的所有内容映像到内存中,然 后再一条一条地执行EdtL!og中的记录,当 EditLog文件非常大的时候,会 导致名称节点启动操作非常慢,而在这段时间内HDFS系统处于安全模式 直无法对外提供写操作,影响了用户的使用 如何解决?答案是: Secondary NameNode第二名称节点 第二名称节点是HDFS架构中的一个组成部分,它是用来保存名称节点中对HDFS 元数据信息的备份,并减少名称节点重启的时间。 Secondary NameNode一般是 单独运行在一台机器上 大数据技术原理与应用(第3 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn
《大数据技术原理与应用(第3版)》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn 3.3.2名称节点和数据节点 •在名称节点运行期间,HDFS的所有更新操作都是直接写到EditLog中,久 而久之, EditLog文件将会变得很大 •虽然这对名称节点运行时候是没有什么明显影响的,但是,当名称节点重 启的时候,名称节点需要先将FsImage里面的所有内容映像到内存中,然 后再一条一条地执行EditLog中的记录,当EditLog文件非常大的时候,会 导致名称节点启动操作非常慢,而在这段时间内HDFS系统处于安全模式 ,一直无法对外提供写操作,影响了用户的使用 名称节点运行期间EditLog不断变大的问题 如何解决?答案是:SecondaryNameNode第二名称节点 第二名称节点是HDFS架构中的一个组成部分,它是用来保存名称节点中对HDFS 元数据信息的备份,并减少名称节点重启的时间。SecondaryNameNode一般是 单独运行在一台机器上
332名称节点和数据节点 Primary Namenode Secondary Namenode Secondary Name Node的工作情况: (1) Secondary NameNode会定期和 Name Node通信,请求其停止使用 EditLog 文件,暂时将新的写操作写到一个新的文件 1. Roll edits edit new上来,这个操作是瞬间完成,上层 2. Retrieve simage and edits from primary 写日志的函数完全感觉不到差别 edits, new (2)SecondaryNameNode通过HTTP GET方式从 Name Node上获取到 FsImage和 EditLog文件,并下载到本地的相应目录下 ma age (3) SecondaryName Node将下载下 3. Merge 来的 Fslmage载入到内存,然后一条一条地 执行 EditLog文件中的各项更新操作,使得 fsimage ckpt 内存中的 Fslmaget保持最新;这个过程就是 EdtL!og和 Fslmage文件合并 (4) SecondaryName Node执行完(3 4. Transfer checkpoint to primary )操作之后,会通过post方式将新的 fsimage ckpt Fslmage文件发送到 NameNode节点上 5. Roll 5) Name Node将从 fsimage ckpt Secondary Name Node接收到的新的 Fslmage替换旧的 Fslmage文件,同时将 edit new替换 EditLog文件,通过这个过程 EditLog就变小了 大数据技术原理与应用(第3 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn
《大数据技术原理与应用(第3版)》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn 3.3.2名称节点和数据节点 SecondaryNameNode的工作情况: (1)SecondaryNameNode会定期和 NameNode通信,请求其停止使用EditLog 文件,暂时将新的写操作写到一个新的文件 edit.new上来,这个操作是瞬间完成,上层 写日志的函数完全感觉不到差别; (2)SecondaryNameNode通过HTTP GET方式从NameNode上获取到FsImage和 EditLog文件,并下载到本地的相应目录下 ; (3)SecondaryNameNode将下载下 来的FsImage载入到内存,然后一条一条地 执行EditLog文件中的各项更新操作,使得 内存中的FsImage保持最新;这个过程就是 EditLog和FsImage文件合并; (4)SecondaryNameNode执行完(3 )操作之后,会通过post方式将新的 FsImage文件发送到NameNode节点上 (5)NameNode将从 SecondaryNameNode接收到的新的 FsImage替换旧的FsImage文件,同时将 edit.new替换EditLog文件,通过这个过程 EditLog就变小了
332名称节点和数据节点 数据节点( DataNode) ·数据节点是分布式文件系统HDFS的工作节点,负责数据的存储和 读取,会根据客户端或者是名称节点的调度来进行数据的存储和检 索,并且向名称节点定期发送自己所存储的块的列表 每个数据节点中的数据会被保存在各自节点的本地LnuX文件系统中 大数据技术原理与应用(第3 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn
《大数据技术原理与应用(第3版)》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn 3.3.2名称节点和数据节点 •数据节点是分布式文件系统HDFS的工作节点,负责数据的存储和 读取,会根据客户端或者是名称节点的调度来进行数据的存储和检 索,并且向名称节点定期发送自己所存储的块的列表 •每个数据节点中的数据会被保存在各自节点的本地Linux文件系统中 数据节点(DataNode)
34HDFS体系结构 ·34.1 HDFS体系结构概述 ·3.4.2 HDFS命名空间管理 34.3 通信协议 ·344客户端 ·3.4.5 HDFS体系结构的局限性 大数据技术原理与应用(第3 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn
《大数据技术原理与应用(第3版)》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn 3.4 HDFS体系结构 • 3.4.1 HDFS体系结构概述 • 3.4.2 HDFS命名空间管理 • 3.4.3 通信协议 • 3.4.4 客户端 • 3.4.5 HDFS体系结构的局限性
34HDFS体系结构概述 HDFS采用了主从( Master/Slave)结构模型,一个HDFS集群包括 个名称节点( NameNode)和若干个数据节点( Datanode)(如图34所 示)。名称节点作为中心服务器,负责管理文件系统的命名空间及客户端 对文件的访问。集群中的数据节点一般是一个节点运行一个数据节点进程 ,负责处理文件系统客户端的读/写请求,在名称节点的统一调度下进行数 据块的创建、删除和复制等操作。每个数据节点的数据实际上是保存在本 地 Linux文件系统中的 客户端文件名或数据块号名称节点 (Client) (Name Node) 数据块号、数据块位置 写数据读数据 数据节点 数据节点 数据节点 数据节点 (DataNode) (DataNode ( DataNode (DataNode 本地 Linux文件系统 本地 Linux文件系统 本地 Linux文件系统 本地 linux文件系统 备份 机架1 机架n 图3-4HDFS体系结构 大数据技术原理与应用(第3版 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn
《大数据技术原理与应用(第3版)》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn 3.4.1HDFS体系结构概述 HDFS采用了主从(Master/Slave)结构模型,一个HDFS集群包括一 个名称节点(NameNode)和若干个数据节点(DataNode)(如图3-4所 示)。名称节点作为中心服务器,负责管理文件系统的命名空间及客户端 对文件的访问。集群中的数据节点一般是一个节点运行一个数据节点进程 ,负责处理文件系统客户端的读/写请求,在名称节点的统一调度下进行数 据块的创建、删除和复制等操作。每个数据节点的数据实际上是保存在本 地Linux文件系统中的 机架n 本地Linux文件系统 本地Linux文件系统 数据节点 (DataNode) 数据节点 (DataNode) …… 客户端 (Client) 名称节点 (NameNode) 备份 文件名或数据块号 …… 机架1 本地Linux文件系统 本地Linux文件系统 数据节点 (DataNode) 数据节点 (DataNode) …… 数据块号、数据块位置 写数据 读数据 图3-4 HDFS体系结构