Hadoop之hdfs体系结构

Hadoop之hdfs体系结构4.HDFS的体系结构4.1体系结构解析HDFS采用的是hostname01/slaves这种主从的结构模型来管理数据,这种结构模型主要由四个部分组成,分别是Client(客户端)、Namenode(名称节点)、Datanode(数据节点)和SecondaryNameNode。真正的一个HDFS集群包括一个Namenode和若干数目的Datanode。Namenode是一个中心服务器,…

大家好,又见面了,我是你们的朋友全栈君。

4. HDFS的体系结构

4.1 体系结构解析

HDFS 采用的是hostname01/slaves这种主从的结构模型来管理数据,这种结构模型主要由四个部分组成,分别是Client(客户端)、Namenode(名称节点)、Datanode(数据节点)和SecondaryNameNode。

真正的一个HDFS集群包括一个Namenode和若干数目的Datanode。Namenode是一个中心服务器,负责管理文件系统的命名空间 (Namespace )及客户端对文件的访问。集群中的Datanode一般是一个节点运行一个Datanode进程,负责管理客户端的读写请求,在Namenode的统一调度下进行数据块的创建、删除和复制等 操作。

数据块实际上都是保存在Datanode本地的Linux文件系统中的。每个Datanode会定期的向Namenode发送 数据,报告自己的状态(我们称之为心跳机制)。没有按时发送心跳信息的Datanode会被Namenode标记为“宕 机”,不会再给他分配任何I/O请求。

用户在使用Client进行I/O操作时,仍然可以像使用普通文件系统那样,使用文件名去存储和访问文件,只不 过,在HDFS内部,一个文件会被切分成若干个数据块,然后被分布存储在若干个Datanode上。

比如,用户在Client上需要访问一个文件时,HDFS的实际工作流程如此:客户端先把文件名发送给 Namenode,Namenode根据文件名找到对应的数据块信息及其每个数据块所在的Datanode位置,然后把这些 信息发送给客户端。之后,客户端就直接与这些Datanode进行通信,来获取数据(这个过程,Namenode并 不参与数据块的传输)。这种设计方式,实现了并发访问,大大提高了数据的访问速度。

HDFS集群中只有唯一的一个Namenode,负责所有元数据的管理工作。这种方式保证了Datanode不会脱离 Namenode的控制,同时,用户数据也永远不会经过Namenode,大大减轻了Namenode的工作负担,使之更方便管理工作。通常在部署集群中,我们要选择一台性能较好的机器来作为Namenode。当然,一台机器上也可 以运行多个Datanode,甚至Namenode和Datanode也可以在一台机器上,只不过实际部署中,通常不会这么做的

4.2 HDFS进程之NameNode

  • 充当着集群管理者的角色
  • namenode进程只有一个(HA除外)
  • 管理HDFS的命名空间,并以fsimage和edit进行持久化保存。
  • 在内存中维护数据块的映射信息
  • 实施副本冗余策略
  • 处理客户端的访问请求

4.3 HDFS进程之DataNode

  • 充当着奴隶的角色
  • 存储真正的数据(块进行存储)
  • 执行数据块的读写操作
  • 心跳机制(3秒)

4.4 HDFDS进程之SecondaryNamennode

  • 充当着辅助namenode的角色
  • 帮助NameNode合并fsimage和edits文件
  • 不能实时同步,不能作为热备份节点

4.5 HDFS的Client接口

  • HDFS实际上提供了各种语言操作HDFS的接口。
  • 与NameNode进行交互,获取文件的存储位置(读/写两种操作)
  • 与DataNode进行交互,写入数据,或者读取数据
  • 上传时分块进行存储,读取时分片进行读取

4.6 HDFS的镜像文件fsimage查看

命名空间指的就是文件系统树及整棵树内的所有文件和目录的元数据,每个Namenode只能管理唯一的一命名空间。HDFS暂不支持软链接和硬连接。Namenode会在内存里维护文件系统的元数据,同时还使用fsimage和editlog两个文件来辅助管理元数据,并持久化到本地磁盘上。

  • fsimage

    命名空间镜像文件,它是文件系统元数据的一个完整的永久检查点,内部维护的是最近一次检查点(一小时一触发)的文件系统树和整棵树内部的所有文件和目录的元数据,如修改时间,访问时间,访问权限,副本数据,块大小,文件的块列表信息等等。

  • 使用XML格式查看fsimage文件:

    一般在该目录下
    ]# dfs.namenode.name.dir
    
    [root@hostname01 current]# hdfs oiv -i 【fsimage_xxxxxxx】 -o 【目标文件路径】 -p XML 
    #fsimage_xxxxxxx:要查看的fsimage文件的路径
    #目标 文件路径:转换成的文件路径
    

案例如下:

[root@hostname01 current]# hdfs oiv -i fsimage_00000000052 -o ~/fs52.xml - p XML

FSiamge文件解读:

imgVersion(int):当前image的版本信息
namespaceID(int):unknown
numFiles(long):整个文件系统中包含有多少文件和目录
genStamp(long):image的时间戳
path(String):该目录或文件的路径,
replications(short):副本数
mtime(long):mtime
atime(long):atime
blocksize(long):目录的blocksize都为0
numBlocks(int):实际有多少个文件块,目录的该值都为-1
if(numBlocks > 0){
  blockid(long):属于该文件的block的blockid,
  numBytes(long):该block的大小
  genStamp(long):该block的时间戳
}
nsQuota(long):namespace Quota值,若没加Quota限制则为-1
dsQuota(long):disk Quota值,若没加限制则也为-1
...
..
.其他fields

4.7 HDFS的日志文件edit查看

  • editlog:

    编辑日志文件,当hdfs文件系统发生打开、关闭、创建、删除、重命名等操作产生的信息除了保存在内存中外,还会持久化到编辑日志文件。比如上传一个文件后,日志文件里记录的有这次事务的txid,文件的 inodeid,数据块的副本数,数据块的id,数据块大小,访问时间,修改时间,块大小,客户端信息,权限,块id等

  • 查看editlog文件的方式:

    一般在该目录下
    ]# dfs.namenode.name.dir
    
    [root@hostname01 current]# hdfs oev -i 【edits_inprogress_xxxxxxxx】 -o 【目标 文件路径】-p XML 
    #edits_inprogress_xxxxxxxx:要查看的edit文件的路径
    #目标 文件路径:转换成的文件路径
    

案例如下:

[root@hostname01 current]# hdfs oev -i edits_inprogress_00000000003 -o ~/ed3.xml -p XML (最后的-p XML不加也可以)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/140053.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • springboot详细讲解_Springboot项目

    springboot详细讲解_Springboot项目系列文章目录一、Spring和Springboot的区别及其注意事项什么?二、忽略文件技巧,这样就可以减少很多不必要的文件生成三、SpringBootParent讲解四、stater的介绍五、引导类的介绍六、Springboot内置tomcat(辅助功能必看)可以更改服务提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录系列文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结前..

    2022年9月22日
    0
  • echart旭日图_海报级设计感的旭日图,就在 ECharts 4.0

    echart旭日图_海报级设计感的旭日图,就在 ECharts 4.02018年1月16日ECharts发布了4.0,其中包括一种新的图表系列——旭日图。普通旭日图:文艺旭日图:2B旭日图——这货真的长得像个旭日啊щ(゚Д゚щ):可能大家印象中的旭日图就只能做到上面“普通旭日图”的样子了,很难想象这么有设计感的作品,居然可以是通过配置项写出来的吧?(羡婆卖瓜~)因为这可是ECharts家的旭日图呀!除了颜值之外,我们还提供了丰富的功能使得旭…

    2022年9月26日
    0
  • WLAN基本知识之802.11标准「建议收藏」

    WLAN基本知识之802.11标准「建议收藏」文章目录WLAN技术基础1.4802.11标准介绍1.4.1IEEE802.11协议族成员1.4.2IEEE802.11标准与WiFi的世代1.4.3802.11a/b/g差异1.4.4802.11n1.4.5802.11n关键技术1.4.6IEEE802.11ac标准1.4.7IEEE802.ax标准(又称WiFi6)1.4.8WiFi6理论速率计算WLAN技术基础1.4802.11标准介绍1.4.1IEEE802.11协议族成员IEEE805.11无线工

    2022年7月11日
    22
  • ODS 介绍[通俗易懂]

    ODS 介绍[通俗易懂]ODS概念ODS是一个面向主题的、集成的、可变的、反映当前细节的数据集合。它主要用于支持企业处理业务应用和存储面向主题的、即时性的集成数据,为企业决策者提供当前细节性的数据,通常作为数据仓库的过渡阶段。ODS特点1数据不断更新和易丢失,不存储历史数据,只反映当前实时性的信息2存储细节性数据,很少有汇总数据3支持快速的更新操作,数据刷新频率快4ODS一般存

    2022年9月26日
    0
  • android开发揭秘!全靠这份Android知识点PDF大全,附答案[通俗易懂]

    android开发揭秘!全靠这份Android知识点PDF大全,附答案[通俗易懂]Glide缓存简介Glide的缓存设计可以说是非常先进的,考虑的场景也很周全。在缓存这一功能上,Glide又将它分成了两个模块,一个是内存缓存,一个是硬盘缓存。这两个缓存模块的作用各不相同,内存缓存的主要作用是防止应用重复将图片数据读取到内存当中,而硬盘缓存的主要作用是防止应用重复从网络或其他地方重复下载和读取数据。内存缓存和硬盘缓存的相互结合才构成了Glide极佳的图片缓存效果,那么接下来我们就分别来分析一下这两种缓存的使用方法以及它们的实现原理。我认识很多优秀的Android工程师,他们丝毫

    2022年5月3日
    56
  • 白盒测试的测试用例设计方法

    白盒测试的测试用例设计方法一白盒测试的主要技术对简单的程序流程而言,确定程序的路径有多少条可通过:语句覆盖(覆盖率100%);分支(判定)覆盖(覆盖率85%);条件覆盖;分支-条件覆盖;条件组合覆盖;路径覆盖(覆盖率80%)来确定,这也是白盒测试的主要技术。1.1语句覆盖(覆盖率100%)使程序中每个语句至少执行一次1.2分支(判定)覆盖(覆盖率85%)使每个判定的真假分支都至少执行一次1.3条件…

    2022年10月12日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号