分布式文件系统以及对相关节点的简单理解

Distributed File System

1.数据量越来越多,在一个操作系统管辖的范围存储不下来,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,因此迫切需要一种系统来管理多台机器上的文件,分布式文件系统由此产生。

2.它是一种允许文件通过网络在多台主机上分享的文件系统,可以让多台机器上的用户分享文件和存储空间。

3.通透性,让实际上是通过网络来访问文件的动作,由程序与用户看来,就像访问本地的磁盘一般。

4.容错性,即使系统中有些节点脱机,整体来说系统任然可以持续运作而不会有数据损失。

5.分布式文件管理系统有很多,HDFS只是其中的一种,HDFS适用于一次写入多次查询的情况,不支持并发写入的情况,对小文件的操作也不太适合。

HDFS:Hadoop Distributed File System 分布式文件系统。

HDFS的架构:

主从式结构

主节点,只有一个:NameNode

从节点,有很多歌:DataNode

NameNode是整个文件系统的管理节点。它维护着整个问加你系统的文件目录树,文件/目录的元信息和每个文件对应的数据块列表。接收用户的操作请求。

和NameNode相关的文件包括:

1.fsimage:元数据镜像文件,存储某一段时间NameNode内存元数据信息。

2.edits:操作日志文件。

3.fstime:保存最近一次checkpoint的时间。

注:

1.NameNode在内存中保存metadata,这样可以快速的处理客户端对数据的"读请求",但是内存中的数据容易丢失,例如掉电事,所以我们必须在磁盘上有metadata的副本。

2.当有"写请求"到来时,即要改变hadoop的文件系统时,NameNode会首先写editlog并主动同步到磁盘,成功后才会修改内存中的metadata,并且返回相应的信息给客户端,客户端再根据信息将数据写到对应的DataNode中。

3.fsimage是NameNode中metadata的镜像,fsimage不会随时与NameNode中的metadata保持一致,而是每隔一段时间合并editlog中的内容来更新,由于合并的过程比较消耗内存和CPU,所有hadoop就是用SecondaryNameNode专门用于更新fsimage文件。

以上文件都保存在Linux的文件系统中,目录为${hadoop.tmp.dir}/dfs/name/current中。

DataNode提供真实文件数据的存储服务。

1.文件块(block):最基本的存储单位,对于文件内容而言,一个文件的大小是size,那么从文件的0偏移量开始,按照固定的大小,顺序对文件进行划分并编号,划分好的每一个块称为一个block,HDFS默认的block大小是64MB,以一个256MB的文件来说,共有256/64=4个block。

2.不同于普通文件系统的是,HDFS中,如果一个文件小于数据块的大小,并不占用整个数据块存储空间,而是占用文件实际大小的空间。

3.replication 是副本,在hdfs-site.xml文件中通过dfs.replication属性进行设置。

注:真实数据保存在${hadoop.tmp.dir}/dfs/data/current目录中。

SecondaryNameNode

1.是HA的一个解决方案,但不支持热备。配置即可。

2.执行过程:从NameNode上下载元数据信息(fsimage,edits),然后把二者合并,生成新的fsimage,在本地保存,并将其推送到NameNode,同时重置NameNode的edits。

3.默认安装在NameNode节点上,但是建议单独设置一个节点。

4.secondaryNameNode的工作通过实践或者大小进行触发,在core-default.xml文件中可以找到配置。

SecondaryNameNode的工作原理图如下:

SecondaryNameNode详细工作流程:

1.SecondaryNameNode通知PrimaryNameNode切换editlog。

2.SecondaryNameNode通过HTTP协议从PrimaryNameNode获得fsimage和editlog。

3.SecondaryNameNode将fsimage载入内存,然后开始合并editlog的操作。

4.SecondaryNameNode将合并后的新数据的fsimage发给PrimaryNameNode。

5.PrimaryNameNode收到SecondaryNameNode发过来的新的fsimage后会用新的fsimage替换旧的fsimage。

SecondaryNameNode工作的触发点:

1.fs.checkpoint.period指定两次checkpoint之间最大时间间隔,默认实践为3600秒,即一个小时。

2.fs.checkpoint.size规定editlog文件的最大值,该文件默认的大小是64M,一旦超过这个值则会强制触发SecondaryNameNode工作。

这两个属性可以在core-default.xml文件中找到,配置在core-site.xml文件中。

问题一:在hadoop1.x中,HDFS如何实现高可靠?

答:

1.在hdfs-site.xml文件中配置dfs.name.dir属性,这个属性是NameNode放在元数据信息用的,多个目录用逗号隔离,HDFS会把元数据冗余复制到这些目录,一般这些目录在不同的设备上,不存在的目录会被忽略掉。

2.通过SecondaryNameNode恢复NameNode,详情见http://blog.csdn.net/lzm1340458776/article/details/38820739

3.使用第三方的工具avatarnode

问题二:执行HDFS的格式化时发生了什么事情?

答:NameNode创建了自己的目录结构。

问题三:多次格式后导致DataNode启动不了,怎么办?

答:将 ${hadoop.tmp.dir}/dfs/name/current/VERSION中nameSpaceID的值和${hadoop.tmp.dir}/dfs/data/VERSION中nameSpaceID的值修改为一致。

时间: 2024-10-24 02:46:16

分布式文件系统以及对相关节点的简单理解的相关文章

计算机图形学相关名词的简单理解

1.模型(Models):从几何图元------点.线.三角形中创建的东西,由顶点指定. 2.渲染(Rendering):计算机从模型到创建一个图像的过程. 3.像素(Pixel):显示设备上的最小可见元素.系统中的像素被存储在帧缓存中,而帧缓存是一块被图形硬件管理的内存空间,用于供给显示设备. 4.Shaders:为GPU编写的一段程序,运行于图形硬件. 原文地址:https://www.cnblogs.com/luguoshuai/p/CG.html

架构设计:系统存储(28)——分布式文件系统Ceph(挂载)

(接上文<架构设计:系统存储(27)--分布式文件系统Ceph(安装)>) 3. 连接到Ceph系统 3-1. 连接客户端 完毕Ceph文件系统的创建过程后.就能够让客户端连接过去. Ceph支持两种客户端挂载方式:使用Linux内核支持的mount命令进行的挂载方式.使用用户空间文件系统FUSE(Filesystem in Userspace)进行的网络磁盘挂载方式. 这两种挂载方式的本质差别是,前者须要有Linux内核的支持.而后者仅仅是工作在Linux上的一个应用软件. 3-1-1. 使

分布式存储之MogileFS分布式文件系统简单应用

一.分布式存储原理: 分布式存储系统,是将数据分散存储在多台独立的设备上.传统的网络存储系统采用集中的存储服务器存放所有数据,存储服务器成为系统性能的瓶颈,也是可靠性和安全性的焦点,不能满足大规模存储应用的需要.分布式网络存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,它不但提高了系统的可靠性.可用性和存取效率,还易于扩展. 1.分布式文件系统的特点: • 节点间能相互通信 • 同一数据存储在多个节点上 • 数据空间平衡 • 具有容错能力 • 文件系统的

MooseFS分布式文件系统简单配置

MooseFS是一种分布式文件系统,MooseFS文件系统结构包括以下四种角色: 1.管理服务器managing server (master) 2.元数据日志服务器(备份服务器)Metalogger server(Metalogger) 3.数据存储服务器data servers (chunkservers) 4.客户机挂载使用client computers 1.管理服务器:负责各个数据存储服务器的管理,文件读写调度,文件空间回收以及恢复.多节点拷贝 2.元数据日志服务器(备份服务器): 负

分布式文件系统的存储节点和追踪器

1.存储节点 在分布式文件系统中,所有的文件都存储在存储节点(Storage Node)中.一个存储节点一般对应屋里磁盘的一个实际目录.我们用多台服务器创建多个存储节点,文件就会在这些存储节点之间根据规则进行自动复制.另外,我们也可以在同一台物理机上创建多个存储节点,指向不同的磁盘空间,实现了一定程度的冗余备份,和RAID机制有点类似. 2.追踪器 追踪器负责客户端和存储节点之间的桥梁作用.对于复杂的分布式文件系统来说,复杂的存储节点内部运行对客户端是透明的,客户端要通过追踪器来完成对分布式文件

Hive数据导入——数据存储在Hadoop分布式文件系统中,往Hive表里面导入数据只是简单的将数据移动到表所在的目录中!

转自:http://blog.csdn.net/lifuxiangcaohui/article/details/40588929 Hive是基于Hadoop分布式文件系统的,它的数据存储在Hadoop分布式文件系统中.Hive本身是没有专门的数据存储格式,也没有为数据建立索引,只需要在创建表的时候告诉Hive数据中的列分隔符和行分隔符,Hive就可以解析数据.所以往Hive表里面导入数据只是简单的将数据移动到表所在的目录中! Hive的几种常见的数据导入方式这里介绍四种:(1).从本地文件系统中

分布式文件系统之&mdash;&mdash;mogilefs

本节我们将来认识下分布式文件系统,不过我主要讲的是关于其中的一个比较流行的mogilefs进行介绍,好了其他的不多说了,下面我们就开始吧. 什么是分布式文件系统? 什么是分布式文件系统(Distributed File System)?顾名思义,就是分布式+文件系统.它包含了2方面,从文件系统的客户端的角度来看,他就是一个标准的文件系统,提供了API,由此可以进行文件的创建.删除.读写等操作:从内部来看的话,分布式文件系统则与普通的文件系统不同,它不在是本地的磁盘中,它的内容和目录都不是存储在本

分布式文件系统元数据服务模型[转]

随着非结构化数据的爆炸,分布式文件系统进入了发展的黄金时期,从高性能计算到数据中心,从数据共享到互联网应用,已经渗透到数据应用的各方各面.对于大多数分布式文件系统(或集群文件系统,或并行文件系统)而言,通常将元数据与数据两者独立开来,即控制流与数据流进行分离,从而获得更高的系统扩展性和I/O并发性.因而,元数据管理模型显得至关重要,直接影响到系统的扩展性.性能.可靠性和稳定性等.存储系统要具有很高的Scale-Out特性,最大的挑战之一就是记录数据逻辑与物理位置的映像关系即数据元数据,还包括诸如

分布式文件系统:原理、问题与方法

本地文件系统如ext3,reiserfs等(这里不讨论基于内存的文件系统),它们管理本地的磁盘存储资源.提供文件到存储位置的映射,并抽象出一套文件访问接口供用户使用.但随着互联网企业的高速发展,这些企业对数据存储的要求越来越高,而且模式各异,如淘宝主站的大量商品图片,其特点是文件较小,但数量巨大:而类似于youtube,优酷这样的视频服务网站,其后台存储着大量的视频文件,尺寸大多在数十兆到数吉字节不等.这些应用场景都是传统文件系统不能解决的.分布式文件系统将数据存储在物理上分散的多个存储节点上,