332名称节点和数据节点 名称节点的启动 在名称节点启动的时候,它会将 Fslmage文件中的内容加载到内存中,之后再 执行 EditLog文件中的各项操作,使得内存中的元数据和实际的同步,存在内存 中的元数据支持客户端的读操作。 旦在内存中成功建立文件系统元数据的映射,则创建一个新的 Fslmage文件 和一个空的 EditLog文件 名称节点起来之后,HDFS中的更新操作会重新写到EdLg文件中,因为 Fslmage文件一般都很大(GB级别的很常见),如果所有的更新操作都往 Fslmage文件中添加,这样会导致系统运行的十分缓慢,但是,如果往 EditLog 文件里面写就不会这样,因为EdtL!og要小很多。每次执行写操作之后,且在 向客户端发送成功代码之前,eds文件都需要同步更新 大数据技术原理与应用(第2版 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn
《大数据技术原理与应用(第2版)》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn 3.3.2名称节点和数据节点 •在名称节点启动的时候,它会将FsImage文件中的内容加载到内存中,之后再 执行EditLog文件中的各项操作,使得内存中的元数据和实际的同步,存在内存 中的元数据支持客户端的读操作。 •一旦在内存中成功建立文件系统元数据的映射,则创建一个新的FsImage文件 和一个空的EditLog文件 •名称节点起来之后,HDFS中的更新操作会重新写到EditLog文件中,因为 FsImage文件一般都很大(GB级别的很常见),如果所有的更新操作都往 FsImage文件中添加,这样会导致系统运行的十分缓慢,但是,如果往EditLog 文件里面写就不会这样,因为EditLog 要小很多。每次执行写操作之后,且在 向客户端发送成功代码之前,edits文件都需要同步更新 名称节点的启动
332名称节点和数据节点 名称节点运行期间 EditLog不断变大的问题 在名称节点运行期间,HDFS的所有更新操作都是直接写到 EditLog中,久 而久之, EditLog文件将会变得很大 ·虽然这对名称节点运行时候是没有什么明显影响的,但是,当名称节点重 启的时候,名称节点需要先将 FsImage里面的所有内容映像到内存中,然 后再一条一条地执行EdtL!og中的记录,当 EditLog文件非常大的时候,会 导致名称节点启动操作非常慢,而在这段时间内HDFS系统处于安全模式 直无法对外提供写操作,影响了用户的使用 如何解决?答案是: Secondary NameNode第二名称节点 第二名称节点是HDFS架构中的一个组成部分,它是用来保存名称节点中对HDFS 元数据信息的备份,并减少名称节点重启的时间。 Secondary NameNode一般是 单独运行在一台机器上 大数据技术原理与应用(第2 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn
《大数据技术原理与应用(第2版)》 厦门大学计算机科学系 林子雨 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就变小了 大数据技术原理与应用(第2 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn
《大数据技术原理与应用(第2版)》 厦门大学计算机科学系 林子雨 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文件系统中 大数据技术原理与应用(第2 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn
《大数据技术原理与应用(第2版)》 厦门大学计算机科学系 林子雨 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体系结构的局限性 大数据技术原理与应用(第2 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn
《大数据技术原理与应用(第2版)》 厦门大学计算机科学系 林子雨 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体系结构的局限性