Hadoop分布式集群中NN和DN、SN,指得是什么?他们分别有什么作用?

2020-06-09 13:47发布

8条回答
Sophia
2楼 · 2020-06-09 13:49

NN:Name Node 管理HDFS的命名空间,配置副本策略,管理数据块(Block)映射信息,处理客户端读写请求

DN:DataNode 存储实际的数据块,执行数据块的读/写操作

SN:SecondaryNameNode 辅助NameNode,分担其工作量,比如定期合并Fsimage和Edits,并推送给NameNode ,在紧急情况下,可辅助恢复NameNode


小新没有蜡笔
3楼 · 2021-09-02 15:31

NN:Name Node 管理HDFS的命名空间,配置副本策略,管理数据块(Block)映射信息,处理客户端读写请求

DN:DataNode 存储实际的数据块,执行数据块的读/写操作

SN:SecondaryNameNode 辅助NameNode,分担其工作量,比如定期合并Fsimage和Edits,并推送给NameNode ,在紧急情况下,可辅助恢复NameNode

Hadoop分布式集群中,如果NN挂掉,会出现什么情况?如果DN挂掉,会出现什么情况?如果SN挂掉,会出现什么情况?数据会丢失吗?

NN挂掉,数据丢失,分布式集群崩溃,DN挂掉,由于其他机器中存有备份,数据不会丢失,正常情况下对分布式集群不会出现大问题,SN挂掉,数据不会丢失,只是失去了对NameNode中映射的备份,为了防止意外(NN挂掉),需要尽快恢复SN。


椰松面包
4楼 · 2021-09-04 09:53

HDFS---NN:

1、NameNode主要功能:接受客户端的读写服务。

2、NameNode保存metadata(元数据,除了文件内容之外的都是元数据)信息包括:

1)文件owership和permissions;文件包含哪些块

2)Block保存在哪个DataNode(由DataNode启动时上报)

3、NameNode的metadate信息在启动后加载到内存:

1)metadata存储到磁盘文件名为“fsimages”(NN主要根据fsimage来进行数据操作,SNN利用其进行合并)

2)Block位置信息不会保存到fsimage

3)edits记录对metadata的操作日志

4、Fsimage是元数据在磁盘中存储的一份数据的文件名,当我们操作一份数据的时候,并不是马上在fsimage中进行修改,而是由edits来记录操作日志,之后在某个时间让edits与fsimage合并。

HDFS--SNN:

1、它不是NN的备份(但可以做备份),它主要工作是帮助NN合并editslog,减少NN启动时间。

2、SNN执行合并时机:根据配置文件设置的时间间隔fs.checkpoint.period默认3600秒;根据配置文件设置edits log大小fs.checkpoint.size规定edit文件的最大值默认64MB。

3、当删除一个文件的时候其实并不是马上删除,而是在edits log中记录,到一定时间与fsimage通过SNN进行合并的时候进行删除。由于涉及大多的IO和消耗CPU,所以在NN中不做数据操作的合并,而是让另一个机器的CPU去计算实现SNN根据时间来不断合并各个NN,这样用户体验感比较好,速度也是比较快。

4、那么通过SNN合并之后的新的FSimage和edits log会被推送到NN中并且替换原来的FSimage和edits log,这样NN 里面隔段时间就是新的数据。

HDFS--DN

1、存储数据(Block)

2、启动DN线程的时候会向NN汇报block信息,之后NN根据汇报的block信息来找到block数据

3、通过向NN发送心跳保持与其联系(3秒一次),如果NN 10分钟没有收到DN的心跳,则认为其已经lost,NN就会向DN发消息,告诉其副本不够,并copy其上的block到其他的DN中。


征戰撩四汸
5楼 · 2021-09-08 15:51

HDFS采用了主从式(Master/Slave)的体系结构,其中NameNode(NN),DataNode(DN)和Client是HDFS中的3个重要角色。HDFS也在社区的努力下不断演进,包括支持文件追加,Federation,HA的引入等。

  在一个HDFS中,有一个NN,一个SNN(Secondary NameNode)和众多的DN,在大型的集群中可能会有数以千计的DN。而Client,一般意义上比数据节点的个数还要多。

1、NN是HDFS主从结构中主节点上运行的主要进程,它负责管理从节点DN。NN维护着整个文件系统的文件目录树,文件目录的元信息和文件的数据块索引。这些信息以两种信息保存在本文文件系统中,一种是文件系统镜像(文件名字fsimage),另一种是fsimage的编辑日志(文件名字edits)。通过NN,Client还可以了解到数据块所在的DN的信息。需要注意的是,NN中关于DN的信息是不会保存到NN的本地文件系统的。NN还能通过DN获取HDFS整体运行状态的一些信息,比如系统的可用空间,已经使用的空间,各个DN的当前状态等。

    2、作用

  维护着文件系统数中所有文件和目录的元数据

  协调客户端对文件的访问


1、DN是HDFS中硬盘IO最忙碌的部分:将HDFS的数据块写到Linux本地文件系统中,或者从这些数据块中读取数据。DN作为从节点,会不断的向NN发送心跳。

   初始化时,每个DN将当前节点的数据块上报给NN。NN也会接收来自NN的指令,比如创建、移动或者删除本地的数据块,并且将本地的更新上报给NN。

  2、作用

    接受客户端或NameNode的调度

    存储和检索数据块

    在NameNode的统一调度下进行数据块的创建、删除和复制

    定期向NameNode发送自身存储的数据块列表


1、 Secondary NameNode是用于定期合并fsimage和edits的。与NN一样,每个集群都有一个SNN,在大规模部署的条件下,一般SNN也独自占用一台服务器。SNN按照集群配置的时间建个,不停的获取HDFS某一个时间点的fsimage和edits,合并它们得到一个新的fsimage。该fsimage上传到NN后会替换NN的老的fsimage。

2、防止edits日志文件过大

  SNN会配合NN,为NN的第一关系提供了一个简单的CheckPoint机制,并避免出现edits过大,导致NN启动时间过长的问题。


freediandianer
6楼 · 2021-10-13 18:12

NameNode(名称节点,简称NN)作用:

文件系统命名空间,维护文件系统目录树
存储文件名称,
文件目录结构,
文件属性(权限,大小,创建时间,副本数及大小…),
文件对应的数据块及这些块所对应的数据节点,我们称为blockmap,这种映射关系存储在NN中,但是并不会持久化这种关系,这个映射关系由DN在启动的时候上报给NN。
以上关系由fsimage+editslog来存储。

DataNode(数据节点,简称DN)作用:

存储数据块及块校验(为了防止块损坏带来的数据读取错误)
每隔3秒与NN通信并发送一个心跳包;每10个心跳包向NN上报blockReport
SecondaryNameNode(辅助名称节点,简称SNN):

存储fsimage,editslog;
定期合并fsimage+editslog,合并时机由检查点(checkpoint)决定,检查点由dfs.namenode.checkpoint.period 参数定义,默认3600秒。
SNN每隔一个小时从NN上备份fsimage下来

fsimage 镜像文件,系统镜像文件,系统全量文件

editslog操作日志,读写记录操作,系统增量文件

客户端向DN写数据,如果副本数是3,客户端只需要写入1分数据,然后拷贝。


希希
7楼 · 2021-10-17 21:03

1、hadoop是一种分布式系统的平台,通过它可以很轻松的搭建一个高效、高质量的分布系统,而且它还有许多其它的相关子项目,也就是对它的功能的极大扩充,包括Zookeeper,Hive,Hbase等。
2、MapReduce是hadoop的核心组件之一,hadoop要分布式包括两部分,一是分布式文件系统hdfs,一部是分布式计算框,就是mapreduce,缺一不可,也就是说,可以通过mapreduce很容易在hadoop平台上进行分布式的计算编程。
再详细的话,你得多看些文档。

我的网名不再改
8楼 · 2021-11-05 15:30

Hadoop浅谈     

   在了解HDFS之前必须介绍一下hadoop以及hadoop和HDFS之前的关系:Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。那么它们之间的关系可以通过下面几点了解:


1、Hadoop是google的集群系统的开源实现:


  Google集群系统:GFS(Google File System)、MapReduce、BigTable。


  Hadoop主要由HDFS(Hadoop Distributed File System Hadoop分布式文件系统)、MapReduce和HBase组成。


2、Hadoop的初衷是为解决Nutch的海量数据爬取和存储的需要。


3、Hadoop于2005年秋天作为Lucene的子项目Nutch的一部分正式引入Apache基金会。


4)名称起源:Doug Cutting儿子的黄色大象玩具的名字。


  在这个Hadoop中还有很多子项目:


1)Core:一套分布式文件系统以及支持Map-Reduce的计算框架

2)Avro:定义了一种用于支持大数据应用的数据格式,并为这种格式提供了不同的编程语言支持。

3)HDFS:Hadoop分布式文件系统

4)Map/Reduce:是一个使用简易的软件框架,基于它写出来的应用程序能够运行在由上千个商用机器组成的大型集群上,并以一种可靠容错的方式并行处理上T级别的数据集。

5)ZooKeeper:是高可用的和高可靠的分布式协同系统。

6)Pig:建立于Hadooop Core之上为并行计算环境提供了一套数据工作流语言和执行框架。

7)Hive:是为提供简单的数据操作而设计的下一代分布式数据仓库。它提供了简单的类似SQL的语法的HiveQL语言进行数据查询

8)HBase:建立于Hadoop Core之上提供一个可扩展的数据库系统

9)Flume:一个分布式,可靠,和高可用的海量日志聚合的系统,支持在系统中定制各类数据发送方,用于收集数据.

10)Mahout:是一套具有可扩充能力的机器学习类库

11)Sqoop:是Apache下用于RDBMS和HDFS互相导致数据的工具。


那么我讲讲这个Hadoop中比较重要的HDFS子项目:


1、HDFS介绍以及整体结构:

 1、 Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统。它和现有的分布式文件系统有很多共同点。但同时,它和其他的分布式文件系统的区别也是很明显的。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。HDFS放宽了一部分POSIX约束,来实现流式读取文件系统数据的目的。HDFS在最开始是作为Apache Nutch搜索引擎项目的基础架构而开发的。HDFS是Apache Hadoop Core项目的一部分。

  2、HDFS的结构是怎么样呢?看下图:


          其中NN中存储的是文件的元数据,指的是文件比Data Node更小,主要存储一些文件的名称,大小...之类的属性。


 3、 可能大家有点迷糊了,这个图它是怎么个工作机制的呢?图标中各个内容表达什么意思呢?其实HDFS中每当用户和数据进行交互的时候,都要通过NN来转发和接受请求,NN里通过两个文件edits log和fsimage(这两个文件的具体作用会在后面提到)找到DN中的Block并进行操作。


  HDFS主要内容如下:



1)一个名字节点(Name Node)和多个数据节点(data Node)


2)数据复制(冗余机制)---存放位置(机器感知策略)  


3)故障检测  --数据节点(心跳包--检测是否容机;块报告--安全模式下检测;数据完整性检测--校验和比较)  --名字节点(日志文件,镜像文件)


4)空间回收机制(data Node是否还有多余的空间)


4、HDFS命令:可以使用Shell命令进行操作。


5、HDFS优点:


1)高容错性:数据自动保存多个副本;数据丢失之后,自动恢复。


2)适合批处理:移动计算而非数据;数据位置暴露给计算框架


3)适合大数据批处理:GB、TB、甚至PB级数据;处理百万规模以上的文件数量;10K+节点


4)可以构建在廉价机器上:通过多个副本提高可靠性;提供了容错和恢复机制。


6、HDFS缺点:


1)低延迟数据访问:比如毫秒级;低延迟和高吞吐率。


2)小文件存取:占用NameNode大量内存;寻道时间超过读取时间。


3)并发写入、文件随机修改:一个文件只能有一个写者;仅支持append。


7、HDFS架构:




 HDFS数据存储单元(block)上图颜色部分的块。


1)文件被切分成固定大小的数据块:默认数据块大小为64MB,可自己配置;若文件大小不到64MB,则单独存成一个block.


2)一个文件存储方式:按大小被切分成若干个block,存储到不同节点上;默认情况下每个block都有三个副本。


3)Block大小和副本数通过Client端上传文件时配置,文件上传成功后副本数可以变更,Block size之后不可变更。


2、HDFS---NN:

1、NameNode主要功能:接受客户端的读写服务。


2、NameNode保存metadata(元数据,除了文件内容之外的都是元数据)信息包括:


1)文件owership和permissions;文件包含哪些块


2)Block保存在哪个DataNode(由DataNode启动时上报)


3、NameNode的metadate信息在启动后加载到内存:


1)metadata存储到磁盘文件名为“fsimages”(NN主要根据fsimage来进行数据操作,SNN利用其进行合并)


2)Block位置信息不会保存到fsimage


3)edits记录对metadata的操作日志


4、Fsimage是元数据在磁盘中存储的一份数据的文件名,当我们操作一份数据的时候,并不是马上在fsimage中进行修改,而是由edits来记录操作日志,之后在某个时间让edits与fsimage合并。


3、HDFS--SNN:

1、它不是NN的备份(但可以做备份),它主要工作是帮助NN合并editslog,减少NN启动时间。


2、SNN执行合并时机:根据配置文件设置的时间间隔fs.checkpoint.period默认3600秒;根据配置文件设置edits log大小fs.checkpoint.size规定edit文件的最大值默认64MB。


3、当删除一个文件的时候其实并不是马上删除,而是在edits log中记录,到一定时间与fsimage通过SNN进行合并的时候进行删除。由于涉及大多的IO和消耗CPU,所以在NN中不做数据操作的合并,而是让另一个机器的CPU去计算实现SNN根据时间来不断合并各个NN,这样用户体验感比较好,速度也是比较快。


4、那么通过SNN合并之后的新的FSimage和edits log会被推送到NN中并且替换原来的FSimage和edits log,这样NN 里面隔段时间就是新的数据。


5、SNN合并流程:



  首先是NN中的Fsimage和edits文件通过网络拷贝,到达SNN服务器中,拷贝的同时,用户的实时在操作数据,那么NN中就会从新生成一个edits来记录用户的操作,而另一边的SNN将拷贝过来的edits和fsimage进行合并,合并之后就替换NN中的fsimage。之后NN根据fsimage进行操作(当然每隔一段时间就进行替换合并,循环)。当然新的edits与合并之后传输过来的fsimage会在下一次时间内又进行合并。


4、HDFS--DN

1、存储数据(Block)


2、启动DN线程的时候会向NN汇报block信息,之后NN根据汇报的block信息来找到block数据


3、通过向NN发送心跳保持与其联系(3秒一次),如果NN 10分钟没有收到DN的心跳,则认为其已经lost,NN就会向DN发消息,告诉其副本不够,并copy其上的block到其他的DN中。




有不同见解的欢迎指正。


20200921文 - 做更棒的自己!
9楼 · 2021-12-19 16:53

HDFS按照Master和Slave的结构。分为NameNode、SecondaryNameNode、DataNode这几个角色。

NameNode:是Master节点,是大领导。管理数据块映射;处理客户端的读写请求;配置副本策略;管理HDFS的名称空间。

SecondaryNameNode:是一个小弟,分担大哥namenode的工作量;是NameNode的冷备份;合并fsimage(元数据镜像文件,文件系统的目录树)和fsedits(元数据的操作日志,针对文件系统做的修改操作记录),然后再发给namenode。

DataNode:是Slave节点,是奴隶,干活的。负责存储客户端发来的block;执行block的读写操作。NameNode和DataNode之间的通信是通过心跳机制实现的。

相关问题推荐

  • 什么是大数据时代?2021-01-13 21:23
    回答 100

    大数据(big data)一词越来越多地被提及,人们用它来描述和定义信息爆炸时代产生的海量数据,而这个海量数据的时代则被称为大数据时代。随着云时代的来临,大数据(Big data)也吸引了越来越多的关注。大数据(Big data)通常用来形容一个公司创造的大量非结...

  • 回答 84

    Java和大数据的关系:Java是计算机的一门编程语言;可以用来做很多工作,大数据开发属于其中一种;大数据属于互联网方向,就像现在建立在大数据基础上的AI方向一样,他两不是一个同类,但是属于包含和被包含的关系;Java可以用来做大数据工作,大数据开发或者...

  • 回答 52
    已采纳

    学完大数据可以从事很多工作,比如说:hadoop 研发工程师、大数据研发工程师、大数据分析工程师、数据库工程师、hadoop运维工程师、大数据运维工程师、java大数据工程师、spark工程师等等都是我们可以从事的工作岗位!不同的岗位,所具备的技术知识也是不一样...

  • 回答 29

    简言之,大数据是指大数据集,这些数据集经过计算分析可以用于揭示某个方面相关的模式和趋势。大数据技术的战略意义不在于掌握庞大的数据信息,而在于对这些含有意义的数据进行专业化处理。大数据的特点:数据量大、数据种类多、 要求实时性强、数据所蕴藏的...

  • 回答 14

    tail -f的时候,发现一个奇怪的现象,首先 我在一个窗口中 tail -f test.txt 然后在另一个窗口中用vim编辑这个文件,增加了几行字符,并保存,这个时候发现第一个窗口中并没有变化,没有将最新的内容显示出来。tail -F,重复上面的实验过程, 发现这次有变化了...

  • 回答 18

    您好针对您的问题,做出以下回答,希望有所帮助!1、大数据行业还是有非常大的人才需求的,对于就业也有不同的岗位可选,比如大数据工程师,大数据运维,大数据架构师,大数据分析师等等,就业难就难在能否找到适合的工作,能否与你的能力和就业预期匹配。2、...

  • 回答 17

    最小的基本单位是Byte应该没多少人不知道吧,下面先按顺序给出所有单位:Byte、KB、MB、GB、TB、PB、EB、ZB、YB、DB、NB,按照进率1024(2的十次方)计算:1Byte = 8 Bit1 KB = 1,024 Bytes 1 MB = 1,024 KB = 1,048,576 Bytes 1 GB = 1,024 MB = 1,048,576...

  • 回答 33

    大数据的定义。大数据,又称巨量资料,指的是所涉及的数据资料量规模巨大到无法通过人脑甚至主流软件工具,在合理时间内达到撷取、管理、处理、并整理成为帮助企业经营决策更积极目的的资讯。大数据是对大量、动态、能持续的数据,通过运用新系统、新工具、新...

  • 回答 5

    MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL的版本:针对不同的用户,MySQL分为两种不同的版本:MySQL Community Server社区版本,免费,但是Mysql不提供...

  • mysql安装步骤mysql 2022-05-07 18:01
    回答 2

    mysql安装需要先使用yum安装mysql数据库的软件包 ;然后启动数据库服务并运行mysql_secure_installation去除安全隐患,最后登录数据库,便可完成安装

  • 回答 5

    1.查看所有数据库showdatabases;2.查看当前使用的数据库selectdatabase();3.查看数据库使用端口showvariableslike'port';4.查看数据库编码showvariableslike‘%char%’;character_set_client 为客户端编码方式; character_set_connection 为建立连接...

  • 回答 5

    CREATE TABLE IF NOT EXISTS `runoob_tbl`(    `runoob_id` INT UNSIGNED AUTO_INCREMENT,    `runoob_title` VARCHAR(100) NOT NULL,    `runoob_author` VARCHAR(40) NOT NULL,    `submission_date` DATE,    PRI...

  • 回答 9

    学习多久,我觉得看你基础情况。1、如果原来什么语言也没有学过,也没有基础,那我觉得最基础的要先选择一种语言来学习,是VB,C..,pascal,看个人的喜好,一般情况下,选择C语言来学习。2、如果是有过语言的学习,我看应该一个星期差不多,因为语言的理念互通...

  • 回答 7

    添加语句 INSERT插入语句:INSERT INTO 表名 VALUES (‘xx’,‘xx’)不指定插入的列INSERT INTO table_name VALUES (值1, 值2,…)指定插入的列INSERT INTO table_name (列1, 列2,…) VALUES (值1, 值2,…)查询插入语句: INSERT INTO 插入表 SELECT * FROM 查...

  • 回答 5

    看你什么岗位吧。如果是后端,只会CRUD。应该是可以找到实习的,不过公司应该不会太好。如果是数据库开发岗位,那这应该是不会找到的。

  • 回答 7

    查找数据列 SELECT column1, column2, … FROM table_name; SELECT column_name(s) FROM table_name 

没有解决我的问题,去提问