HDFS学习心得

HDFS-Hadoop文件系统

第一节:HDFS的文件结构

学习HDFS首先得了解HDFS的文件结构,以及它是如何更新和保存数据的,要了解HDFS首先得知道HDFS主要由三个部分组成:namenode,datanode,secondaryNamenode.

这三者的关系按照我的理解就是主人,下人,小秘的关系。namenode是主人的角色,他是一个管理者,是一个决策者。datanode是一个下人,准确来说是一堆下人,他们的工作就是按照主人的吩咐干好本职工作,总是前赴后继的角色。secondaryamenode就是一个小蜜,主人以一大堆下人之间以一种特定的合同文书来维持,小蜜的人物就是在一定时间或者文书积累到一定量的时候,帮主人整理这些文书,保持最简介高效。

1.1 namenode

namenode作为hdfs的头脑,他的主要工作是接受客户端请求,合理的读取和划分数据并存储;而namenode数据存放也是分为两个部分:内存,硬盘中。

内存的数据主要是一些元数据信息,元数据信息就像是一个索引信息,通过索引可以轻松的找到需求的数据的位置包括副本位置;元数据的存在主要是为了便于读取hdfs中的数据。

硬盘中的数据比较多,最新格式化的namenode会生成以下文件目录结构:${dfs.name.dir}/current/VERSION

/edits

/fsimage

/fstime

这四个文件以及文件夹。VERSION文件里面记载了一些namenode的基础信息,而其中有一个namespaceID,这是这个namenode的唯一标示,而这个表示需要所有的datanode的ID保持一致,正常运行的hdfs,namenode和datanode的id是完全相同的。

那么剩下的这三个文件:

edits是hdfs的日志文件,这里记录着namenode上的一些读写操作。这是namenode储存的第一个重要的信息,它记录了近期的所有操作记录以及操作状态和操作内容;edits十分重要,他是一个做namenode数据同步的重要文件。

fsimage是namenode的存在内存中的元数据在硬盘上的镜像文件,但镜像文件并不是与matadata(元数据)时时同步的,在达到一定条件fsimage会执行更新操作来保持和内存中的元数据信息保持一致,而执行这个镜像同步操作的凭据就是edits。

fstime,镜像生成或者修改时间,不许多讲。

namenode主要涉及到的就是读和写操作,其中都比较简单(相对),写则会有一个过程

namenode的写操作,首先客户端先申请写操作,namenode会去找适合存放数据和数据副本的内存位置,然后将这条具体的数据存放的信息写入日志文件,然后将具体的信息交给客户端,客户端将数据交给datanode按照namenode的规则来存放数据,当写入成功,但成功代码尚未返回给客户端之前刷新和同步日志文件,其实就是加了一个状态位。然后namenode在客户端返回成功后生成metadata(元数据)以及生成一个fsimage。

而在那门哦的工作中,secondaryname作为一个附庸,其实它也一直在为工作,他的工作就是解决matadata和fsimage之间的不和谐(不一致),这里为神马会使用到secondarynamenode来帮助namenode来管理namenode,原因是因为namenode不断的写,会产生大量的日志,若namenode重起,那么加载这些日志文件就会消耗大量的时间,而采用secondarynamenode处理过edits和faimage后,edits的大小始终保持一个比较小的水平,那么naemnode就算重启也可以快速启动而且保持前面的状态。

关于secondarynamenode如何更新fsimage以及edits

(1)SENode首先通过HTTP获取namenode中的fsimage和edits。

(2)SENode读取fsimage到内存中,然后执行edits中的所有操作,并创建一个新的fsimage文件。

(3)SENode通过HTTP方式将新的fsimage发送到namenode中

(4)namenode中新的fsimage会替代旧的fsimage然后edits文件清空并且更新fstime。

1.2 secondary NameNode

secondaryNamenode的文件目录与那门哦的完全一样,只是它的配置文件的根目录可能会不同,根据hdfs-.xml中的配置来决定。

secondarynamenode在帮namenode时也会在自己的本地保存最新的namenode的edits后人fsimage文件,他的作用就是帮助namenode以及当namenode挂掉的时候,帮助恢复namenode配置。

(1)直接将全部本地文件(secondarynamenode中的数据:edits,fsimage,fstime)全部复制到新的namenode。

(2)将secongarynamenode作为新的namenode来使用。

时间: 2024-10-03 22:54:51

HDFS学习心得的相关文章

我对大数据相关技术的学习心得及理解

本篇为这一段时间以来我对大数据相关技术的学习心得及理解,主要涉及以下几个方面: noSql, 集群, 数据挖掘, 机器学习,云计算,大数据,以及Hadoop和Spark.主要都是一些初级的概念澄清之类的东西,并且比较凌乱,慎入.* 1. NoSQL我的理解是,NoSQL主要用于存储一些非结构化数据, 是关系数据库与文件存储方式(比如视频文件就适合使用文件的方式存储)的过度. ** 1.1 NoSQL的分类: 列存储: Hbase(BigTable的开源实现),可存储结构化数据. Cassandr

Linux系统理解以及Linux系统学习心得

原创作品转载请注明出处  <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 作者:严哲璟 说一下我对Linux系统的理解 1.加载Linux内核准备:在加载基本输入输出模块(BIOS)之后,从磁盘的引导扇区读入操作系统的代码文件块到内存中,之后开始整个系统的初始化. 2.main.c的start_kernel函数是整个操作系统的入口,这也与Linux是基于C语言的特性相符,start_kernel具体做的动作很多

我的MYSQL学习心得(八)

我的MYSQL学习心得(八) 我的MYSQL学习心得(一) 我的MYSQL学习心得(二) 我的MYSQL学习心得(三) 我的MYSQL学习心得(四) 我的MYSQL学习心得(五) 我的MYSQL学习心得(六) 我的MYSQL学习心得(七) 这一篇<我的MYSQL学习心得(七)>将会讲解MYSQL的插入.更新和删除语句 同样的,只会讲解跟SQLSERVER不同的地方 插入 将多行查询结果插入到表中 语法 INSERT INTO table_name1(column_list1) SELECT (

我的MYSQL学习心得(一)

我的MYSQL学习心得(一) 使用MYSQL有一段时间了,由于公司使用SQLSERVER和MYSQL,而且服务器数量和数据库数量都比较多 管理起来比较吃力,在学习MYSQL期间我一直跟SQLSERVER进行对比 第一期主要是学习MYSQL的基本语法,陆续还有第二.第三.第四期,大家敬请期待o(∩_∩)o 语法的差异 我这里主要说语法的不同 1.默认约束 区别:mysql里面DEFAULT关键字后面是不用加括号的 --sqlserver CREATE TABLE emp ( id INT DEFA

在马哥linux运维学院学习心得

题目:在马哥linux运维学院学习心得 姓名:谭龙 班级:M18 学号:26 时间:2016-02-29--2016-06-02(正常毕业时间预计在7月中上旬)   正文: 个人基本情况: 我是一名在校的即将毕业的大四学生,毕业时间为2016.7.专业为矿物加工工程专业,纯正的四川-广安人(邓小平故居就在那).因找不到工作,加上自己也不知道干什么,在堂弟的推荐下,来参加了马哥linux运维学院的学习:怀揣着一颗对计算机懵懂的心,开始涉足从未接触过了linux. 个人收获与心理变化: 在一开始接触

第一篇大数据学习心得

之前未习惯发布学习心德博文,后续会采用这种方式发布学习心得,希望能够很好的督促自己. 计划会按scala,Hadoop,Spark的顺序去学习. 刚学scala的时候,眼前一亮,这语法跟python,java很像啊,刚好两者很熟悉,偷笑,后面果然学的得心应手.今天就不发表具体的技术内容.反正王学林老师的视屏讲解很好,声音非常富有感染力,想开小差都比较难,呵呵,话语精炼,个人较喜欢的风格,这里说下这段时间学习scala的小心得?,视频学完一章紧接着进行敲代码,调试,最后记笔记,对,记笔记,不一定是

spring核心知识(学习心得)

直接进入主题,主要分为两大部分:框架学习心得和spring框架的核心知识. 学习心得 1.学习框架的时候,一定要弄清楚的几个问题: a. 这是一个什么框架 轻量级还是重量级, 侵入式还是非侵入式,是解决单个问题还是整体的解决方案. b. 框架的设计理念是什么(为了解决什么问题而出现) c. 框架的优缺点 d. 框架的架构是怎样的 e. 框架的核心是什么 f. 框架能实现哪些功能 在学习一个框架的时候如果都不知道它能够提供哪些功能,就更加不用谈功能实现和充分利用框架了 2. 在学习多个框架以后,如

C++用法的学习心得

c++这门课,在我刚进入大学的就已经开始接触了.因为自己的专业就是计算机科学,因此c++嘛,对于我来说还是比较重要的.不同于其他专业,一开始我接触就是c++了,跳过了c语言一类的课.就我自己认为,c++这课学起来还是很有难度的.大一上课的时候,老师就说过这课在生活中的应用很广泛.处于初学者的我,开始给我的感觉就是很是乏味枯燥,提不起兴趣.不过仔细想想自己的专业就是和它有关,就算将来自己不从事这个行业,还是很有学习它的必要.因为多一门技术总归是不会吃亏的. 作为男生嘛,自己没有少玩游戏.很多人玩游

Android学习心得(16) --- Dex文件结构实例解析(2)

我在博客上发表一些我的Android学习心得,希望对大家能有帮助. 这一篇我们讲述一下通过一个实例来分析dex文件结构和组成. 参考Leb128数据类型 Android学习心得(5) --- dex数据类型LEB128 参考实例分析学习理解dex文件结构Android学习心得(15) --- Dex文件结构解析(1) 参考baksmali工具使用Android学习心得(4) --- MAC下smali文件编写与运行 1.编译 我们通过一个例子来分析dex文件的构成 创建一个Hello.java文