Hadoop源码分析
  4N8wwc5chVdo 2023年11月30日 16 0

一:Namenode内存设计

Namenode及其与元数据管理相关的内容,Namenode主要作用和启动流程,元数据组成部分:Fsimage和EditLog,Namenode内存中维护各个部分及其组成部分。

1.1 Namenodey

HDFS的主要功能是对文件进行存储,一方数据被保存在某些位置,另一方面需要的时候能够对被灵活地访问。

HDFS中一个完整的文件由两部分组成,一部分是meta,它由一些被称为namenode的服务节点管理,另一部分是block数据块,它由一些被称为Datanode的服务节点管理。

meta是文件索引(index),block数据块可以理解为真实的保存的数据.

管理元(meta)数据。一个集群保存的所有的文件都会在Namenode保存一份meta视图,以便对文件进行整体管理。

处理客户端请求:client在访问数据时,必须经过namenode。client的大多数访问都和数据相关,而元数据都由namenode管理,因此client第一步就要和namenode交互。

1.2 NameNode启动

要想启动namenode服务,首先要获取一个已编译完成的包。

在${hadoop_home}目录中的启动命令如下:

cd ${hadoop_home}
./sbin/hadoop-daemon.sh start namenode

这条命令本质上是启动namenode服务,将集群已存在meta数据载入namenode内存。入口为org.apache.hadoop.hdfs.server.namenode.NameNode#main().

 public static void main(String argv[]) throws Exception {
    if (DFSUtil.parseHelpArgument(argv, NameNode.USAGE, System.out, true)) {
      System.exit(0);
    }

    try {
      StringUtils.startupShutdownMessage(NameNode.class, argv, LOG);
      NameNode namenode = createNameNode(argv, null);
      if (namenode != null) {
        namenode.join();
      }
    } catch (Throwable e) {
      LOG.fatal("Exception in namenode join", e);
      terminate(1, e);
    }
  }
1.2.1 NameNode启动主流程

NameNode启动过程主要完成3件事件:

(1)加载预先生成的持久化文件fsimage.

Fsimage是一种持久化到磁盘上的文件,里面包含了集群大部分meta数据,持久化

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月30日 0

暂无评论

推荐阅读
4N8wwc5chVdo
最新推荐 更多

2024-05-03