1、数据块(block)
HDFS(Hadoop Distributed File System)默认的最基本的存储单位是64M的数据块。
和普通文件系统相同的是,HDFS中的文件是被分成64M一块的数据块存储的。
不同于普通文件系统的是,HDFS中,如果一个文件小于一个数据块的大小,并不占用整个数据块存储空间。
2、元数据节点(Namenode)和数据节点(datanode)
namenode用来管理文件系统的命名空间
其将所有的文件和文件夹的元数据保存在一个文件系统树中。
这些信息也会在硬盘上保存成以下文件:命名空间镜像(namespace image)及修改日志(edit log)
其还保存了一个文件包括哪些数据块,分布在哪些数据节点上。然而这些信息并不存储在硬盘上,而是在系统启动的时候从数据节点收集而成的。
datanode是文件系统中真正存储数据的地方。
客户端(client)或者元数据信息(namenode)可以向数据节点请求写入或者读出数据块。
其周期性的向元数据节点回报其存储的数据块信息。
从元数据节点(secondary namenode)
secondary namenode并不是元数据节点出现问题时候的备用节点,它和元数据节点负责不同的事情。
其主要功能就是周期性将namenode的namespace image和edit log合并,以防日志文件过大。
合并过后的namespace image也在从元数据节点保存了一份,以防namenode失败的时候,可以恢复。
2.1、namenode文件夹结构
${dfs.name.dir}/current/VERSION
/edits
/fsimage
/fstime
VERSION文件是java properties文件,保存了HDFS的版本号。
#Fri Dec 21 16:45:25 CST 2012
namespaceID=1555019963
cTime=0
storageType=NAME_NODE
layoutVersion=-32
layoutVersion是一个负整数,保存了HDFS的持久化在硬盘上的数据结构的格式版本号。
namespaceID是文件系统的唯一标识符,是在文件系统初次格式化时生成的。
cTime此处为0
storageType表示此文件夹中保存的是元数据节点的数据结构。
fsimage和edits:
当文件系统客户端(client)进行写操作时,首先把它记录在修改日志中(edit log)
元数据节点在内存中保存了文件系统的元数据信息。在记录了修改日志后,元数据节点则修改内存中的数据结构。
每次的写操作成功之前,修改日志都会同步(sync)到文件系统。
fsimage文件,也即命名空间映像文件,是内存中的元数据在硬盘上的checkpoint,它是一种序列化的格式,并不能够在硬盘上直接修改。
同数据的机制相似,当元数据节点失败时,则最新checkpoint的元数据信息从fsimage加载到内存中,然后逐一重新执行edit log中的操作。
2.2、secondary namenode的目录结构
${dfs.name.dir}/current/VERSION
/edits
/fsimage
/fstime
/previous.checkpoint/VERSION
/edits
/fsimage
/fstime
secondary namenode就是用来帮助namenode将内存中的元数据信息checkpoint到硬盘上的。
checkpoint的过程如下:
secondary namenode通知namenode生成新的日志文件edits.new,以后的日志都写到新的日志文件中。
secondary namenode用http get从元数据节点获得fsimage文件及旧的日志文件。
secondary namenode将fsimage文件加载到内存中,并执行日志文件中的操作,然后生成新的fsimage文件。
secondary namenode将新的fsimage文件用http post传回namenode
namenode可以将旧的fsimage文件及旧的日志文件,换为新的fsimage文件和新的日志文件(第一步生成的),然后更新fstime文件,写入此次checkpoint的时间。
这样namenode中的fsimage文件保存了最新的checkpoint的元数据信息,日志文件也重新开始,不会变的很大了。
2.3、datanode的目录结构
${dfs.name.dir}/current/VERSION
/blk_<id_1>
/blk_<id_1>.meta
/blk_<id_2>
/blk_<id_2>.meta
/...
/blk_<id_64>
/blk_<id_64>.meta
/subdir0/
/subdir1/
/...
/subdir63/
blk_<id>保存的是HDFS的数据块,其中保存了具体的二进制数据。
blk_<id>.meta保存的是数据块的属性信息:版本信息,类型信息,和checksum
subdirxx:当一个目录中的数据块到达一定数量的时候,则创建子文件夹来保存数据块及数据块属性信息。
数据节点的VERSION文件格式如下:
namespaceID=1232737062
storageID=DS-1640411682-127.0.1.1-50010-1254997319480
cTime=0
storageType=DATA_NODE
layoutVersion=-18
HDFS(Hadoop Distributed File System)默认的最基本的存储单位是64M的数据块。
和普通文件系统相同的是,HDFS中的文件是被分成64M一块的数据块存储的。
不同于普通文件系统的是,HDFS中,如果一个文件小于一个数据块的大小,并不占用整个数据块存储空间。
2、元数据节点(Namenode)和数据节点(datanode)
namenode用来管理文件系统的命名空间
其将所有的文件和文件夹的元数据保存在一个文件系统树中。
这些信息也会在硬盘上保存成以下文件:命名空间镜像(namespace image)及修改日志(edit log)
其还保存了一个文件包括哪些数据块,分布在哪些数据节点上。然而这些信息并不存储在硬盘上,而是在系统启动的时候从数据节点收集而成的。
datanode是文件系统中真正存储数据的地方。
客户端(client)或者元数据信息(namenode)可以向数据节点请求写入或者读出数据块。
其周期性的向元数据节点回报其存储的数据块信息。
从元数据节点(secondary namenode)
secondary namenode并不是元数据节点出现问题时候的备用节点,它和元数据节点负责不同的事情。
其主要功能就是周期性将namenode的namespace image和edit log合并,以防日志文件过大。
合并过后的namespace image也在从元数据节点保存了一份,以防namenode失败的时候,可以恢复。
2.1、namenode文件夹结构
${dfs.name.dir}/current/VERSION
/edits
/fsimage
/fstime
VERSION文件是java properties文件,保存了HDFS的版本号。
#Fri Dec 21 16:45:25 CST 2012
namespaceID=1555019963
cTime=0
storageType=NAME_NODE
layoutVersion=-32
layoutVersion是一个负整数,保存了HDFS的持久化在硬盘上的数据结构的格式版本号。
namespaceID是文件系统的唯一标识符,是在文件系统初次格式化时生成的。
cTime此处为0
storageType表示此文件夹中保存的是元数据节点的数据结构。
fsimage和edits:
当文件系统客户端(client)进行写操作时,首先把它记录在修改日志中(edit log)
元数据节点在内存中保存了文件系统的元数据信息。在记录了修改日志后,元数据节点则修改内存中的数据结构。
每次的写操作成功之前,修改日志都会同步(sync)到文件系统。
fsimage文件,也即命名空间映像文件,是内存中的元数据在硬盘上的checkpoint,它是一种序列化的格式,并不能够在硬盘上直接修改。
同数据的机制相似,当元数据节点失败时,则最新checkpoint的元数据信息从fsimage加载到内存中,然后逐一重新执行edit log中的操作。
2.2、secondary namenode的目录结构
${dfs.name.dir}/current/VERSION
/edits
/fsimage
/fstime
/previous.checkpoint/VERSION
/edits
/fsimage
/fstime
secondary namenode就是用来帮助namenode将内存中的元数据信息checkpoint到硬盘上的。
checkpoint的过程如下:
secondary namenode通知namenode生成新的日志文件edits.new,以后的日志都写到新的日志文件中。
secondary namenode用http get从元数据节点获得fsimage文件及旧的日志文件。
secondary namenode将fsimage文件加载到内存中,并执行日志文件中的操作,然后生成新的fsimage文件。
secondary namenode将新的fsimage文件用http post传回namenode
namenode可以将旧的fsimage文件及旧的日志文件,换为新的fsimage文件和新的日志文件(第一步生成的),然后更新fstime文件,写入此次checkpoint的时间。
这样namenode中的fsimage文件保存了最新的checkpoint的元数据信息,日志文件也重新开始,不会变的很大了。
2.3、datanode的目录结构
${dfs.name.dir}/current/VERSION
/blk_<id_1>
/blk_<id_1>.meta
/blk_<id_2>
/blk_<id_2>.meta
/...
/blk_<id_64>
/blk_<id_64>.meta
/subdir0/
/subdir1/
/...
/subdir63/
blk_<id>保存的是HDFS的数据块,其中保存了具体的二进制数据。
blk_<id>.meta保存的是数据块的属性信息:版本信息,类型信息,和checksum
subdirxx:当一个目录中的数据块到达一定数量的时候,则创建子文件夹来保存数据块及数据块属性信息。
数据节点的VERSION文件格式如下:
namespaceID=1232737062
storageID=DS-1640411682-127.0.1.1-50010-1254997319480
cTime=0
storageType=DATA_NODE
layoutVersion=-18
发表评论
-
hadoop2.x常用端口及定义方法
2014-09-11 12:25 534Hadoop集群的各部分一般都会使用到多个端口,有些是daem ... -
hadoop2.x安装
2014-09-08 23:37 608hadoop2.x安装 1.搭建虚拟机(使用桥接网络,以便设置 ... -
64位的CentOS上编译 Hadoop 2.2.0
2014-07-14 12:54 859编译需要安装的软件: ... -
hadoop2.2安装前64位编译常见错误
2014-07-13 22:42 614CentOS上安装软件错误提示: configure: err ... -
MapReduce任务的优化
2014-07-07 13:02 923MapReduce任务的优化 ... -
hadoop 重启datanode及动态加入节点
2014-07-07 11:38 3058hadoop2.2.0启动子节点 适用于子节点单独挂掉然后 ... -
hadoop配置文件详解
2014-07-07 10:45 549http://blog.163.com/ldw21cn@126 ... -
hadoop2x-eclipse-plugin的制作
2014-07-06 22:27 618https://github.com/winghc/hadoo ... -
linux下环境变量配置
2014-06-22 14:14 0JAVA环境变量配置: 下载:jdk-7u40-lin ... -
hadoop安装前准备
2014-06-18 22:46 6321)查看当前机器名称 h ... -
hadoop命令大全
2014-06-16 17:08 479学习地址: http://blog.csdn.net/wf19 ... -
hadoop学习系列
2014-05-21 11:02 384http://www.iteye.com/blogs/subj ... -
hadoop作业调优参数整理及原理(转)
2014-05-09 11:05 4201 Map side tuning参数 1.1 Map ... -
Hadoop添加节点datanode
2014-05-09 10:33 4551.部署hadoop 和普通的datanode一样。安装jdk ... -
hadoop2.2 单节点安装
2014-04-26 22:38 25您可以访问以下地址获取最新的安装包: http://mirro ...
相关推荐
Java-HDFS 体系结构与基本概念 HDFS(Hadoop Distributed File System)是一种分布式文件系统,主要用于存储和管理大规模数据。HDFS 的设计初衷是为了满足高性能、高可靠性和高可扩展性的需求。 HDFS 体系结构 ...
1.1.2 HDFS基本概念 2 1.2 HDFS通信协议 4 1.2.1 Hadoop RPC接口 4 1.2.2 流式接口 20 1.3 HDFS主要流程 22 1.3.1 HDFS客户端读流程 22 1.3.2 HDFS客户端写流程 24 1.3.3 HDFS客户端追加写流程 25 ...
以下是对HDFS基本概念、数据流动过程和架构设计的详细解析。 1. HDFS 基本概念 - 数据块(Block):HDFS以固定大小的数据块为单位存储文件,默认数据块大小为64MB。文件内容被分割成若干个数据块,分别存储在不同...
HDFS 基本概念和架构 HDFS(Hadoop Distributed File System)是 Hadoop 生态系统中的一个核心组件,负责存储和管理大规模数据。下面是 HDFS 的基本概念和架构: 数据块(Block) HDFS 中的基本存储单位是 64M 的...
### HDFS基本概念详解 #### 1.1 数据块(Block) HDFS(Hadoop Distributed File System)中的数据块是其最基本的存储单位,默认情况下每个数据块的大小为64MB。与传统的文件系统类似,HDFS将文件划分为多个数据块...
#### 一、HDFS基本概念 Hadoop是一个能够对大量数据进行分布式处理的软件框架,它支持大规模数据集的分布式处理,是大数据技术领域的重要组成部分。Hadoop的核心组件之一是HDFS(Hadoop Distributed File System)...
HDFS基本概念 HDFS是一种基于块存储的分布式文件系统,将大文件分割成固定大小的块(默认为128MB),并将其分布在不同的节点上。每个文件块通常都有多个副本,以提高数据可用性和容错性。 ### 2. HDFS架构 HDFS...
### HDFS基本概念 **1. 分布式存储:**HDFS将大型文件分布在多台廉价的硬件节点上,以提供高可用性和容错性。每个文件被分割成多个块,这些块在集群中的不同节点上复制。 **2. NameNode与DataNode:**NameNode是...
1. **HDFS基本概念** - **NameNode**:HDFS的主节点,负责管理文件系统的命名空间和元数据,如文件名、文件块信息等。 - **DataNode**:存储实际数据的从节点,执行数据读写操作。 - **Block**:HDFS将大文件分割...
首先,我们要理解HDFS的基本概念。HDFS是一种分布式文件系统,它将大型文件分割成块,并将这些数据块分散存储在集群中的多台服务器上,确保数据的冗余和可靠性。这种设计使得HDFS能够处理PB级别的数据,同时保持高...
### HDFS基本概念 1. **NameNode**:管理元数据,包括文件系统命名空间和文件的块映射信息。 2. **DataNode**:存储实际的数据块,执行数据读写操作。 3. **Block**:文件被分割成固定大小的数据块,默认为128MB或...
HDFS Shell命令则用于交互式操作,如创建目录、上传/下载文件、查看文件内容等,这些命令包括ls、mkdir、put、get、rm等,通过它们可以熟练掌握HDFS的基本操作。 四、HDFS项目开发环境 在Hadoop集群的主节点上搭建...
Hadoop 培训课程(2)HDFS ...HDFS体系结构与基本概念*** HDFS的shell操作*** java接口及常用api*** ---------------------------加深拓展---------------------- RPC调用** HDFS的分布式存储架构的源码分析**
### HDFS基本概念 **HDFS(Hadoop Distributed File System)**是Hadoop生态系统中的分布式文件系统,用于存储大量的数据集。HDFS的设计目的是为了满足在商用硬件集群上运行大数据处理应用的需求。它具有高容错性、...
HDFS基础概念描述,脑图展示,易于理解与记忆,仅供学习使用。Hadoop分布式文件系统(HDFS)是指被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统(Distributed File System)。
2. **HDFS基本概念**:HDFS是一种分布式文件系统,设计用于处理和存储非常大的数据集。它将大文件分割成块,并将这些块复制到多个节点上,以提高容错性和可用性。 3. **Hadoop文件上传**:在Hadoop中,上传文件到...
1. HDFS的基本概念和架构:介绍NameNode、DataNode、Secondary NameNode等组件的角色和功能。 2. 文件系统操作:如文件创建、打开、读写、删除等,以及HDFS命令行工具的使用。 3. HDFS的副本策略和容错机制:如何...
本文将深入探讨HDFS的基础知识以及与Broker相关的概念。 **1. HDFS的基本原理** HDFS是基于Google的GFS(Google File System)设计的开源文件系统,属于Hadoop生态系统的一部分。它将大文件分割成块(通常为128MB...
通过本实验,我们学习了HDFS的基本概念和常用的操作命令,熟悉了HDFS在Hadoop体系结构中的角色,并且掌握了HDFS的Java API。这些知识将帮助我们更好地理解和使用HDFS在数据存储和处理中的应用。