设为首页 收藏本站
查看: 1575|回复: 0

[经验分享] 2018-07-18期 Hadoop HDFS NameNode体系结构

[复制链接]

尚未签到

发表于 2018-10-28 11:15:52 | 显示全部楼层 |阅读模式
  在HDFS中有两种节点,分别是NameNode和DataNode。NameNode负责集群中与存储相关的调度,DataNode负责具体的存储任务。
  一、NameNode(元数据节点功能)
  NameNode维护了整个文件系统的元数据信息,这些信息以两种形式的文件存储,一种是镜像文件(image文件),另一种是编辑日志(edit log)。NameNode会在文件系统启动时,动态地加载这些文件到内存中以响应客户端的读写请求。Namenode是中心服务器,单一节点(简化系统的设计和实现),负责管理文件系统的名称空间(namespace)以及客户端对文件的访问。文件操作,Namenode负责文件元数据的操作,DataNode负责处理文件内容的读写请求,跟文件内容相关的数据流不会经过Namenode,只会询问它跟那个DataNode联系,否则Namenode会成为系统的瓶颈。
  副本存放在哪些DataNode上由Namenode来控制,根据全局情况作出块放置决定,读取文件时Namenode尽量让用户先读取最近的副本,降低带块消耗和读取延时。Namenode全权管理数据块的复制,它周期性地从集群中的每个Datanode接收心跳信号和块状态报告。接收到心跳信号意味着该Datanode节点工作正常。块状态报告包含了一个该Datanode上所有数据块的列表。Namenode是主节点,存储文件的元数据如文件名,文件目录结构,文件属性(生成时间,副本数,文件权限)以及每个文件的块列表,以及块所在的DataNode等等。
  NameNode具体功能主要包括如下几个方面:
  1、NameNode是HDFS中最重要的节点,负责维护HDFS,是HDFS中的主节点
  2、NameNode负责接收客户端端发起的操作请求,包括HDFS 文件上传、下载、目录创建、浏览等
  3、维护HDFS 元数据信息(fsimage),定期将HDFS内存中不常用的信息刷到磁盘上(fsimage文件中)
  4、实时维护操作日志edits,保存HDFS的最新状态
  5、负责管理文件系统的名称空间(namespace)
  二、元数据文件(fsimage)
  1、fsimage功能:
  (1)FSImage文件是HDFS中名字节点NameNode上文件/目录元数据在特定某一时刻的持久化存储文件。它的作用不言而喻,在HA出现之前,NameNode因为各种原因宕机后,若要恢复或在其他机器上重启NameNode,重新组织元数据,就需要加载对应的FSImage文件、FSEditLog文件,并在内存中重做FSEditLog文件中的事务条目。
  (2)hfsimage记录了HDFS文件系统元数据检查点,记录了HDFS最后一次检查点之前系统中所有目录和文件的序列化信息。
  2、fsimage的保存目录:
  $HADOOP_HOME/tmp/dfs/name/current
  [root@hadoop-server01 current]# ll fsimage_*
  -rw-r--r--. 1 root root 58891 Jul 15 06:48 fsimage_0000000000000019746
  -rw-r--r--. 1 root root    62 Jul 15 06:48 fsimage_0000000000000019746.md5
  -rw-r--r--. 1 root root 58891 Jul 15 21:55 fsimage_0000000000000019747
  -rw-r--r--. 1 root root    62 Jul 15 21:55 fsimage_0000000000000019747.md5
  fsiamge由于是二进制文件,不可用直接查看,因此可以使用hdfs特定工具查看,下面在HDFS上上传一个文件来查看fsimage信息。
  步骤1:创建目录并上传一个文件
  [root@hadoop-server01 current]# hadoop fs -mkdir -p /fsimage/test
  [root@hadoop-server01 current]# hadoop fs -put /root/hadoop-2.4.1.tar.gz /fsimage/test
  步骤2:生成的fsimage可读文件
  [root@hadoop-server01 current]# ll fsimage_*
  -rw-r--r--. 1 root root 58891 Jul 15 21:55 fsimage_0000000000000019747
  -rw-r--r--. 1 root root    62 Jul 15 21:55 fsimage_0000000000000019747.md5
  -rw-r--r--. 1 root root 58891 Jul 15 22:05 fsimage_0000000000000019749
  -rw-r--r--. 1 root root    62 Jul 15 22:05 fsimage_0000000000000019749.md5
  #hdfs oiv -i fsimage_0000000000000019749 -o ~/fsimage/fsimage_0000000000000019749.txt
  或者生产xml文件
  [root@hadoop-server01 current]# hdfs oiv -i fsimage_0000000000000019749 -o ~/fsimage/fsimage_0000000000000019749.xml -p XML
  步骤3:查看fsimage信息
  
  
  100035090107374431719747
  2058116385DIRECTORY1531142641775root:supergroup:rwxr-xr-x9223372036854775807-1
  16386FILEhadoop-2.4.1.tar.gz115293727674711529372766100134217728root:supergroup:rw-r--r--10737418251001134217728
  107374182610024439028
  
  .....
  这个一个可读的xml文件,里面记录了每个文件的相信信息。
  三、Edits文件(操作日志文件)
  edits文件保存了HDFS最新状态,即保留了最后一次检查点之后的所有操作。
  保存目录:$HADOOP_HOME/tmp/dfs/name/current
  [root@hadoop-server01 current]# ll edits_*
  -rw-r--r--. 1 root root 1048576 Jul 10 01:47 edits_0000000000000019744-0000000000000019746
  -rw-r--r--. 1 root root 1048576 Jul 15 06:48 edits_0000000000000019747-0000000000000019747
  -rw-r--r--. 1 root root      42 Jul 15 22:05 edits_0000000000000019748-0000000000000019749
  -rw-r--r--. 1 root root 1048576 Jul 15 22:06 edits_0000000000000019750-0000000000000019761
  -rw-r--r--. 1 root root      42 Jul 15 22:25 edits_0000000000000019762-0000000000000019763
  -rw-r--r--. 1 root root 1048576 Jul 15 22:25 edits_inprogress_0000000000000019764
  edits文件同样为二进制文件,如果要查看文件内容需要利用hdfs工具对其进行转换
  [root@hadoop-server01 current]#  hdfs oev -i edits_inprogress_0000000000000019764 -o /root/edits/edits_inprogress_0000000000000019764.xml
  [root@hadoop-server01 current]# more /root/edits/edits_inprogress_0000000000000019764.xml
  
  
  -56
  
  OP_START_LOG_SEGMENT
  
  19764
  
  
  
  OP_MKDIR
  
  19765
  0
  20585
  /20180716
  1531718723942
  
  root
  supergroup
  493
  
  
  
  
  比如该文件中记录的操作为创建了/20180716目录


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-627442-1-1.html 上篇帖子: centos下安装分布式Hadoop 3.1.1 下篇帖子: hadoop最新稳定版本dkhadoop版本选择介绍
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表