精华内容
下载资源
问答
  • HDFS(名称节点数据节点)简介

    万次阅读 多人点赞 2017-05-29 10:29:05
    这些节点分为主从节点,主节点可叫作名称节点(NameNode),从节点可叫作数据节点(DataNode) HDFS通过块的模式存储数据,默认情况下一个块是64M,把大文件拆分成多个块,可以最小化寻址开销 这样的好处是: 1....

    HDFS:分布式文件系统把文件分布存储到多个计算机节点上,成千上万的计算机节点构成计算机集群

    这些节点分为主从节点,主节点可叫作名称节点(NameNode),从节点可叫作数据节点(DataNode)

     

    HDFS的存储模式:

    HDFS通过块的模式存储数据,默认情况下一个块是64M,把大文件拆分成多个块,可以最小化寻址开销
    这样的好处是:
    1.支持大规模文件存储 : 文件以块为单位进行存储,一个大规模文件可以被分拆成若干个文件块,不同的文件块可以被分发到不同的节点上,因此,一个文件的大小不会受到单个节点的存储容量的限制,可以远远大于网络中任意节点的存储容量
    2.简化系统设置 : 因为文件块大小是固定的,这样就可以很容易计算出一个节点可以存储多少文件块;其次,方便了元数据的管理,元数据不需要和文件块一起存储,可以由其他系统负责管理元数据
    3.适合数据备份 : 每个文件块都可以冗余存储到多个节点上,大大提高了系统的容错性和可用性

     

    名称节点最主要功能:名称节点记录了每个文件中各个块所在的数据节点的位置信息

    名称节点(NameNode)与DataNode的功能:


    在HDFS中,名称节点(NameNode)负责管理分布式文件系统的命名空间(Namespace),保存了两个核心的数据结构,即FsImage和EditLog
    FsImage用于维护文件系统树以及文件树中所有的文件和文件夹的元数据
    操作日志文件EditLog中记录了所有针对文件的创建、删除、重命名等操作

    名称节点的启动:
    1.在启动时,系统会将FsImage中的内容加载到内存中去,之后再执行EditLog中的操作,使得内存中的数据和实际同步,存在内存中的支持客户端的读。
    2.一旦在内存中成功建立文件系统元数据的映射,则创建一个新的FsImage文件和一个空的EditLog文件
    3.名称节点起来之后,HDFS中的更新操作会重新写到EditLog文件中,因为FsImage文件一般都很大(GB级别的很常见),
    如果所有的更新操作都往FsImage文件中添加,这样会导致系统运行的十分缓慢,但是,如果往EditLog文件里面写就不会这样,
    因为EditLog 要小很多。每次执行写操作之后,且在向客户端发送成功代码之前,edits文件都需要同步更新

    但为了防止EditLog过大的问题:引入了第二名称节点(SecondaryNameNode)
    第二名称节点:是HDFS架构中的一个组成部分,它是用来保存名称节点中对HDFS 元数据信息的备份,并减少名称节点重启的时间。
    SecondaryNameNode一般是单独运行在一台机器上

    SecondaryNameNode让EditLog变小的工作流程:
    (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就变小了

     

    工作流程图:


    DataNode:数据节点是分布式文件系统HDFS的工作节点,负责数据的存储和读取,会根据客户端或者是名称节点的调度来进行数据的存储和检索,并且向名称节点定期发送自己所存储的块的列表

    即HDFS需要实现的方面:
    1.兼容廉价的硬件设备
    2.流数据读写
    3.大数据集
    4.简单的文件模型
    5.强大的跨平台兼容性
    但这样面临的局限性:
    1.不适合低延迟数据访问
    2.无法高效存储大量小文件
    3.不支持多用户写入及任意修改文件

     

    展开全文
  • HDFS,节点分为两类:名称节点数据节点; 名称节点名称节点负责管理分布式文件系统的命名空间,它保存了两个核心的数据结构——FsImage、EditLog; HDFS命名空间:目录、文件、块。 HDFS命名空间的管理,...

    在HDFS中,节点分为两类:名称节点、数据节点;

    名称节点:名称节点负责管理分布式文件系统的命名空间,它保存了两个核心的数据结构——FsImage、EditLog;

    HDFS命名空间:目录、文件、块。

    HDFS命名空间的管理,是指对HDFS中目录、文件、块做类似文件系统的创建、修改、删除等基本操作。

    1. FsImage:维护文件系统树 以及 文件树中的文件和文件夹的元数据
    2. EditLog:记录针对文件的创建、删除、重命名等这样的更新操作;
    • FsImage、EditLog工作原理:

        名称节点运行期间,HDFS内的更新操作被写入到EditLog文件中,随着更新操作的不断发生,EditLog也将不断变大。

        名称节点在每次重启时,将FsImage加载到内存中,再逐条执行EditLog中的记录,使FsImage保持最新状态。

    • 存在问题:EditLog过大时

        名称节点在启动过程中处于“安全模式”,只能对外提供读操作,无法提供写操作。当启动过程结束之后,系统将退出安全模式,对外提供正常的读写操作。但是,若EditLog很大会使得启动过程运行很慢,名称节点长期处于安全模式下,无法对外提供写操作。

    • 解决问题:第二名称节点SecondaryNameNode

      SecondaryNameNode有两个主要功能,针对此问题,它的功能主要是——完成EditLog与FsImage的合并操作,减小EditLog的文件大小,以缩短名称节点启动时间。

      每隔一段时间,SecondaryNameNode会与NameNode进行通信,请求NameNode停止使用EditLog文件,让NameNode将这之后新到达的写操作写入到一个新的文件EditLog.new中;然后SecondaryNameNode将EditLog、FsImage拉回至本地,加载到内存中——即将FsImage加载到内存中,再逐条执行EditLog中的记录,使FsImage保持最新。

      以上,便是EditLog与FsImage的合并过程,合并完成之后,SecondaryNameNode将已经更新的FsImage文件发送到NameNode,NameNode收到后,就用这个最新的FsImage文件替换掉旧的FsImage,同时用EditLog.new文件去替换EditLog文件,这样一替换,同时也减小的EditLog文件的大小。

     

    • SecondaryNameNode的第二个功能:作为名称节点的检查点

        从以上“合并过程”能看出,SecondaryNameNode会定期与NameNode通信,获取旧文件合并后得到一个FsImage的新文件。SecondaryNameNode周期性的备份NameNode中的元数据信息,当NameNode发生故障时,可用SecondaryNameNode中记录的元数据信息进行恢复。

        但是,在合并、文件替换期间的更新操作并没有被写到新的FsImage文件中去,所以如果在这回期间发生故障,系统会丢失部分元数据信息。

    小提示:综上可以看出,SecondaryNameNode和NameNode内存需求相同,两者是运行在不同的机器上的。

    数据节点:是HDFS的工作节点,负责数据的存储和读取。

    客户端从HDFS读取数据过程:在HDFS内部,一个文件是被分片成了若干个数据块了的,这些数据块被分布的存储到若干个数据节点上。

    客户端从HDFS获取数据

     

        客户端要获取HDFS内的数据时,首先将文件名发送给名称节点;名称节点根据文件名找到对应数据块信息,再根据数据块信息,找到存储了这些块的数据节点位置信息。

        找到数据节点位置信息后将这些信息发送给客户端,客户端据此直接访问数据节点,并获取数据。

        在以上所述的访问过程中,名称节点并不参与数据的传输,它只是实现了类似索引的功能。

    展开全文
  • HDFS名称节点工作过程

    2021-02-15 15:14:20
    HDFS名称节点负责管理分布式文件系统的命名空间(Namespace),保存了两个核心的数据结构-FsImage和EditLog。 FsImage:用于维护文件系统树以及文件树所有的文件和文件夹的元数据。 EditLog:记录所有...

    一、名称节点(NameNode)

    1.什么是名称节点

    在HDFS中,名称节点负责管理分布式文件系统的命名空间(Namespace),保存了两个核心的数据结构-FsImage和EditLog。

    • FsImage:用于维护文件系统树以及文件树中所有的文件和文件夹的元数据。
    • EditLog:中记录所有针对文件创建、删除、重命名等操作的日志文件。

    名称节点记录了每个文件中各个块所在的数据节点的位置信息,但并不持久化存储这些信息,而是在系统每次启动时扫描所有数据节点重构得到这些信息。

    2.名称节点工作过程

    名称节点启动时,会将FsImage的内容加载到内存当中,然后执行EditLog文件中的各项操作,使得内存中的元数据保存最新。这个操作完成后,就会创建一个新的FsImage文件和一个空的EditLog文件。名称节点启动成功并进入正常运行状态以后,HDFS中的更新操作都会被写入到EditLog,而不是直接写入FsImage(文件大,直接写入系统会变慢)。

    名称节点在启动的过程中处于“安全模式”,只能对外提供读操作。启动结束后,则进入正常运行状态,对外提供读写操作。

    二、第二名称节点(Secondary NameNode)
    1.功能

    在名称节点运行期间,EditLog文件由于操作不断发生会逐渐变大,为解决逐渐变大带来的问题,故采用了第二名称节点。

    • 可以完成EditLog与FsImage的合并操作,减少EditLog文件大小,缩短名称节点重启时间
    • 作为名称节点的“检查点”,保存名称节点中的元数据信息。

    2.工作过程

    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就变小了。

    HDFS设计中,并不支持把系统直接切换到第二名称节点,从这角度,第二名称节点只是起到名称节点“检查点”的作用,并不能起到“热备份”作用。即使有了第二名称节点的存在,当名称节点发生故障时,系统还是有可能会丢失部分元数据信息。

    Reference:
    dblab.xmu.edu.cn


    学习交流,有任何问题还请随时评论指出交流。

    展开全文
  • 如果我们需要用一个组件控制所有场景的加载,或场景之间传递参数数据,就需要将该组件所在节点标记为「常驻节点」,使它场景切换时不被自动销毁,常驻内存。我们使用以下接口: cc.game.addPersistRootNode...

    首先要知道官方给出的通过常驻节点进行场景资源管理和参数传递,下面直接给出:

    引擎同时只会运行一个场景,当切换场景时,默认会将场景内所有节点和其他实例销毁。如果我们需要用一个组件控制所有场景的加载,或在场景之间传递参数数据,就需要将该组件所在节点标记为「常驻节点」,使它在场景切换时不被自动销毁,常驻内存。我们使用以下接口:

    cc.game.addPersistRootNode(myNode);

    上面的接口会将 myNode 变为常驻节点,这样挂在上面的组件都可以在场景之间持续作用,我们可以用这样的方法来储存玩家信息,或下一个场景初始化时需要的各种数据。

    如果要取消一个节点的常驻属性:

    cc.game.removePersistRootNode(myNode);

    需要注意的是上面的 API 并不会立即销毁指定节点,只是将节点还原为可在场景切换时销毁的节点。

    接下来要在场景A中创建一个空节点dataNode,如下:

    在这里插入图片描述

    要注意这个常驻节点要和一个scene中的唯一的Canvas同级,类型为普通空节点就可以了。

    然后在场景A的脚本组件中挂载这个常驻节点,这样可以方便在脚本中调用节点;或者你也可以使用一些api获取这个节点。

    以下脚本都是挂在Canvas上的。
    在脚本中给这个常驻节点附上数据或方法都是可以的。场景A脚本参考如下:

    cc.Class({
    	extends: cc.Component,
    	properties:{
    		dataNode: cc.Node,
    		toBButton: cc.Button,
    	},
    	onLoad(){
    	//通过toBButton按钮来进行场景切换
    		this.toBButton.node.on('click', this.changeScene, this);
    		cc.game.addPersistRootNode(this.dataNode);
    		this.dataNode.data = {
                name: 'Aok',
                password: '1231231',
            }
            this.dataNode.getData = function (){
                return this.data;
            }
    	},
    	changeScene(){
    		cc.director.loadScene('sceneB');
    	},
    })
    

    在场景B即sceneB中的脚本里面可以获取到该节点,那么就能使用挂在该常驻节点上的数据或方法了。场景B脚本如下:

    cc.Class({
        extends: cc.Component,
    
        properties: {
        },
    
        // LIFE-CYCLE CALLBACKS:
    
        onLoad () {
        	//通过常驻节点的名称获取到它
            var node = cc.director.getScene().getChildByName('dataNode');
            cc.log(node);
            var data = node.getData();
            cc.log(data);
            //或cc.log(node.data)
        },
    
        start () {
    
        },
    
    });
    
    

    以上代码片段为手写,未经过完整调试。如有错误各位可以提出来。

    展开全文
  • Java面试题大全(2020版)

    万次阅读 多人点赞 2019-11-26 11:59:06
    需要注意Jdk 1.8对HashMap的实现做了优化,当链表节点数据超过八个之后,该链表会转为红黑树来提高查询效率,从原来的O(n)到O(logn) 24. 说一下 HashSet 的实现原理? HashSet底层由HashMap实现 HashSet的值存放...
  • MySQL 面试题

    万次阅读 多人点赞 2019-09-02 16:03:33
    因为 InnoDB 表只把自增主键的最大 ID 记录到内存中,所以重启数据库或者对表 OPTIMIZE 操作,都会使最大 ID 丢失。 但是,如果我们使用表的类型是 MyISAM ,那么这条记录的 ID 就是 18 。因为 MyISAM 表会把自增...
  • js面试题

    千次阅读 多人点赞 2019-04-09 19:42:32
    JavaScript 的组成 JavaScript 由以下三部分组成: ECMAScript(核心):JavaScript 语言基础 ...JS 的基本数据类型和引用数据类型 基本数据类型:undefined、null、boolean、number、string、s...
  • 入门学习Linux常用必会60个命令实例详解doc/txt

    千次下载 热门讨论 2011-06-09 00:08:45
    因为Linux与Windows不同,其后台运行着许多进程,所以强制关机可能会导致进程的数据丢失,使系统处于不稳定的状态,甚至有的系统会损坏硬件设备(硬盘)。系统关机前使用 shutdown命令,系统管理员会通知所有...
  • TensorFlow入门

    千次阅读 多人点赞 2019-04-23 10:09:29
    节点(Nodes)表示数学操作,图的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。它灵活的架构让你可以多种平台上展开计算,例如台式计算机的一个或多个CPU(或GPU),服务器,...
  • Kafka

    千次阅读 2019-01-22 00:10:04
    Kafka是一种分布式的、基于发布订阅的消息系统,能够高效并实时的吞吐数据,以及通过分布式集群和复本冗余机制实现数据的安全。 二、Kafka的安装配置: 1.从官网下载安装包 http://kafka.apache.org/downloads 2....
  • 数据与服务器之间的交互方式 · cookie的数据会自动的传递到服务器,服务器端也可以写cookie到客户端 · sessionStorage和localStorage不会自动把数据发给服务器,仅本地保存。 10.计算一个数组arr所有元素的和...
  • 【数据库学习】数据库总结

    万次阅读 多人点赞 2018-07-26 13:26:41
    数据库是长期存储计算机内、有组织的、可共享的大量数据的集合。 常见数据库管理系统有:Access、mysql、sql server 2)特点 ①数据库数据特点 永久存储、有组织、可共享。 (数据的最小存取...
  • K8s基础

    万次阅读 多人点赞 2018-07-16 22:50:52
    Kubernetes(简称 k8s)是一个开源的,用于管理云平台多个主机上的容器化的应用,k8s的目标是让部署容器化的应用简单并且高效(powerful),k8s提供了应用部署,规划,更新,维护的一种机制。 k8s一个核心的特点...
  • HDFS的从元数据节点

    千次阅读 2013-04-07 19:05:24
    HDFS,NameNode用来管理文件系统的命名空间,其将所有的文件和文件夹的元数据保存在一个文件系统树,这些信息会硬盘上保存为fsimage(命名空间镜像)和edits(修改日志)文件;其还保存了文件包含哪些数据块...
  • 区块链节点

    千次阅读 2019-11-26 19:36:56
    加密货币区块链的结构是对等店(P2P)之间的网络架构,P2P是指参与网络的计算机彼此对等,P2P网络,参与网路的每一台计算机都可以接收节点名称网络,所有的节点都有责任提供网络服务,这是因为网络节点...
  • 试述HDFS一个名称节点的优缺点

    千次阅读 2020-01-04 11:09:56
    优点:1、一个名称节点,负责所有元数据的管理,简化分布式文件系统结构;可以保证数据不会脱离名称节点的控制; 2、用户数据不会经过名称节点,减轻名称节点负担,方便数据管理,数据节点扩展不会带来性能下降 ...
  • hadoop中节点

    千次阅读 2017-11-22 14:13:38
    namenode主要功能 namenode提供名称查询服务 ...Block保存在哪个Datanode(由DataNode启动时候上报) NameNode的metadate信息启动后会加载到内存。 datanode主要功能Hadoop 集群包含一个NameNode和大量的DataNode 保存bl
  • 文章目录1、类加载和实例化2、Java是值传递还是引用传递3、类加载的主要过程4、什么是GC5、简述垃圾回收过程6、内存泄漏7、导致内存泄漏的场景8、Java堆和栈的区别9、ArrayList、LinkedList、Vector的区别10、...
  • Flume

    千次阅读 多人点赞 2019-10-07 10:59:02
    Flume 总结参数配置详解概述Flume数据的传输过程SourcesNetCat SourceAvro SourceExec SourceSpooling Directory SourceTaildir SourceChannelsFile ChannelSinksLogger SinkHDFS SinkAvro SinkKafka Sink案例汇聚者...
  • Hadoop节点的含义

    千次阅读 2018-08-04 13:46:25
     目录的管理者,每一个集群都有一个,记录实时的数据变化,如果没有namenode,HDFS就无法工作,系统的文件将会全部丢失,就无法将位于不同datanode上的文件快(blocks)重建文件。因此它的容错机制很有必要。 它...
  • Python - 节点

    千次阅读 2019-07-10 15:24:49
    有些情况下,存储数据内存分配不能位于连续的内存。所以我们接受指针的帮助,其中数据数据元素的下一个位置的地址也被存储。所以我们从当前数据元素的值知道下一个数据元素的地址。通常这样的结构被称为...
  • 数据结构-单链表节点的删除

    千次阅读 2017-10-10 15:58:44
    数据结构-单链表节点的删除 时间限制(普通/Java):1000MS/3000MS 运行内存限制:65536KByte 总提交:210 测试通过:106 描述 单链表节点的删除操作是线性表数据结构对象操作的重要内容,请您写一个程序...
  • 常见JVM面试题及答案整理

    万次阅读 多人点赞 2019-08-26 11:35:04
    前言 总结了JVM一些经典面试题,分享出我自己的解题思路,希望对大家有帮助,有哪里你觉得不正确的话...栈是线程私有的,他的生命周期与线程相同,每个方法执行的时候都会创建一个栈帧,用来存储局部变量表,操作...
  • 虽然这对名称节点运行时候没有什么明显影响,但当名称节点重启的时候,名称节点需要先将FsImage里面的所有内容映像到内存中,然后再一条一条地执行EditLog中的记录,当EditLog文件非常大的时候,会导致名称节点启动...
  • MATLAB 2018b 安装与简介

    万次阅读 多人点赞 2019-02-18 13:07:00
    另外matlab代码可以与其他语言集成,使您能够Web、企业和生产系统部署算法和应用程序。与matlab2018a相比,matlab2018b拥有更多数据分析、机器学习和深度学习选项,并且速度比以往更快。其亮点...
  • 一、RabbitMQ默认集群原理 RabbitMQ本身是基于Erlang编写,Erlang语言天生具备分布式特性(通过同步Erlang集群各节点的erlang.cookie来实现)。...上面图采用三个节点组成了一个RabbitMQ的集群,Excha...
  • LabVIEW高效使用内存

    千次阅读 2016-12-22 10:54:42
    想细致研究的朋友,可以LabVIEW的帮助文件的索引输入关键字“内存使用”进行搜索,并找到本文的全部内容。 VI内存使用 LabVIEW可处理大量文本编程语言必须由用户处理的细节。文本编程语言的一大挑战是...
  • hdfs之namenode储存的数据

    千次阅读 2018-03-28 18:53:37
    转至元数据结尾创建: 杨晨,最新修改于: 三月 22, 2018转至元数据起始主服务器管理文件的 命名空间 凡是对文件系统命名或其他属性的修改信息都会保存到这里。 比如,有个名为Eva的文件放在目录/usr下,现在要...
  • DOM树节点解析

    千次阅读 2017-06-16 21:50:59
    目录(?)[+] ...DOM是解析XML文件的官方标准,它与平台和语言无关。DOM解析将整个XML文件载入并组装成一棵DOM节点树,然后通过...由于DOM解析中把所有节点都载入到内存中,因而它比较耗资源,而且它需要把整棵节点

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 106,688
精华内容 42,675
关键字:

名称节点的数据保存在内存中