NameNode & DataNode

NameNode类位于org.apache.hadoop.hdfs.server.namenode包下。

NameNode serves as both directory namespace manager and "inode table" for the Hadoop DFS. There is a single NameNode running in any DFS deployment. (Well, except when there is a second backup/failover NameNode.)

The NameNode controls two critical tables:
1) filename->blocksequence (namespace)
2) block->machinelist ("inodes")

The first table is stored on disk and is very precious. The second table is rebuilt every time the NameNode comes up.

‘NameNode‘ refers to both this class as well as the ‘NameNode server‘. The ‘FSNamesystem‘ class actually performs most of the filesystem management. The majority of the ‘NameNode‘ class itself is concerned with exposing the IPC interface and the http server to the outside world, plus some configuration management.

NameNode implements the ClientProtocol interface, which allows clients to ask for DFS services. ClientProtocol is not designed for direct use by authors of DFS client code. End-users should instead use the org.apache.nutch.hadoop.fs.FileSystem class.

NameNode also implements the DatanodeProtocol interface, used by DataNode programs that actually store DFS data blocks. These methods are invoked repeatedly and automatically by all the DataNodes in a DFS deployment.

NameNode also implements the NamenodeProtocol interface, used by secondary namenodes or rebalancing processes to get partial namenode‘s state, for example partial blocksMap etc.

DataNode 类位于org.apache.hadoop.hdfs.server.datanode包下。
DataNode is a class (and program) that stores a set of blocks for a DFS deployment. A single deployment can have one or many DataNodes. Each DataNode communicates regularly with a single NameNode. It also communicates with client code and other DataNodes from time to time.

DataNodes store a series of named blocks. The DataNode allows client code to read these blocks, or to write new block data. The DataNode may also, in response to instructions from its NameNode, delete blocks or copy blocks to/from other DataNodes.

The DataNode maintains just one critical table:
block-> stream of bytes (of BLOCK_SIZE or less)

This info is stored on a local disk. The DataNode reports the table‘s contents to the NameNode upon startup and every so often afterwards.

DataNodes spend their lives in an endless loop of asking the NameNode for something to do. A NameNode cannot connect to a DataNode directly; a NameNode simply returns values from functions invoked by a DataNode.

DataNodes maintain an open server socket so that client code or other DataNodes can read/write data. The host/port for this server is reported to the NameNode, which then sends that information to clients or other DataNodes that might be interested.

查找工程里的类或者是资源文件:Ctrl + Shift + R。
查找jar包里的类:Ctrl + Shift + T。

时间: 2024-10-26 19:54:15

NameNode & DataNode的相关文章

HDFS Namenode&Datanode

HDFS Namenode&Datanode HDFS 机制粗略示意图 客户端写入文件流程: NN && DN Namenode(NN)工作机制 NN是整个文件系统的管理节点.维护着整个文件系统的文件目录树,文件/目录的元信息和每个文件对应的数据块列表(管理元数据).接收用户的操作请求. fsimage:元数据镜像文件.存储某一时段NN内存元数据信息 edits:操作日志文件 fstime:保存最近一次checkpoint的时间 (以上文件保存在linux文件系统中) 主流程 客户

Hadoop学习笔记,MapReduce任务Namenode DataNode Jobtracker Tasktracker之间的关系

一.基本概念 在MapReduce中,一个准备提交执行的应用程序称为“作业(job)”,而从一个作业划分出的运行于各个计算节点的工作单元称为“任务(task)”.此外,Hadoop提供的分布式文件系统(HDFS)主要负责各个节点的数据存储,并实现了高吞吐率的数据读写. 在分布式存储和分布式计算方面,Hadoop都是用主/从(Master/Slave)架构.在一个配置完整的集群上,想让Hadoop这头大象奔跑起来,需要在集群中运行一系列后台程序.不同的后台程序扮演不用的角色,这些角色由NameNo

hadoop namenode datanode hdfs工作机制

大家都知道namenode是hadoop中的一个很重要的节点,因为他存在着跟datanode的交互跟客户端的交互,存储着dotanode中的元数据,所以就很想学习他们是如何沟通并能保证数据在任何情况下都不会丢失那? namenode的作用: 1.维护元数据信息. 2.维护hdfs的目录树. 3.相应客户端的请求. 我们先来看一下namenode大致的工作流程 可以看到namenode这边里面有三个存储单位,edits文件,edits.new 文件 ,fsimage文件,还有内存. edits文件

HDFS体系结构(NameNode、DataNode详解)

hadoop项目地址:http://hadoop.apache.org/ 分布式文件系统概述: 数据量越来越多,在一个操作系统管辖的范围存不下了,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,因此迫切需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统 . 是一种允许文件通过网络在多台主机上分享的文件系统,可让多机器上的多用户分享文件和存储空间. 通透性.让实际上是通过网络来访问文件的动作,由程序与用户看来,就像是访问本地的磁盘一般. 容错.即使系统中有某些节点脱机,整体

Hadoop源码学习笔记(5) ——回顾DataNode和NameNode的类结构

Hadoop源码学习笔记(5) ——回顾DataNode和NameNode的类结构 之前我们简要的看过了DataNode的main函数以及整个类的大至,现在结合前面我们研究的线程和RPC,则可以进一步看看几个对象的大至结构以及调用关系. 我们知道,三个结构(客户端,NameNode,DataNode)是能过网络调用的,走的是RPC.那在底层通讯时谁做服务器谁做客户端呢?我们先回顾一下这三者关系: 这样看,看不出,我们进入源码,看一下夹在中间的NameNode: 在这个initialize函数中,

datanode与namenode的通信

在分析DataNode时, 因为DataNode上保存的是数据块, 因此DataNode主要是对数据块进行操作. A. DataNode的主要工作流程1. 客户端和DataNode的通信: 客户端向DataNode的`数据块读写`, 采用TCP/IP流接口(DataXceiver)进行数据传输 2. 客户端在检测到DataNode异常, 主动发起的`数据块恢复`, 客户端会通过ClientDatanodeProtocol接口采用RPC调用的方式和DataNode通信. 3. `数据块替换和拷贝`

Hadoop2 NameNode HA配置

Hadoop2 NameNode HA配置 Hadoop2 官方提供了两种NameNode HA的实现方式,分别基于QJM和NFS,这里以基于QJM的HDFS HA为例. 实验环境 系统版本:CentOS release 6.4 (Final) Hadoop版本:Apache Hadoop2.5.1 Hive版本:Hive 0.13.1 IP列表 IP Hostname NameNode DataNode RM NodeManager JournalNode 192.168.20.54 had1

Hadoop NameNode is not formatted.

2014-08-26 20:27:22,712 WARN org.apache.hadoop.hdfs.server.namenode.FSNamesystem: Encountered exception loading fsimagejava.io.IOException: NameNode is not formatted. 1.启动Hadoop [email protected]_160_34_centos:/usr/local/hadoop-2.4.0> sbin/start-all.

Hadoop 2.0安装以及不停集群加datanode

Hadoop2.0是对Hadoop1.0全面升级,诞生了通用的计算框架YARN,很多计算框架或者应用程序不再基于传统的操作系统开发,而是基于YARN这个云操作系统.典型的代表是DAG计算框架Tez,当然还有一些其他知名的自运行的计算集群系统也在YARN上有开源版本,比如Storm-on-yarn,Spark-on-yarn.我们先安装一个Hadoop2.0环境,作为一切的开始. 单机环境中,Hadoop有伪分布式模式,即"单点集群",在该模式下,所有的守护集成均会运行在单个节点上. 伪