04 Hadoop思想与原理

Hadoop最早起源于Nutch。Nutch的设计目标是构建一个大型的全网搜索引擎,包括网页抓取、索引、查询等功能,但随着抓取网页数量的增加,遇到了严重的可扩展性问题——如何解决数十亿网页的存储和索引问题。
2003年、2004年谷歌发表的两篇论文为该问题提供了可行的解决方案。
——分布式文件系统(GFS),可用于处理海量网页的存储
——分布式计算框架MAPREDUCE,可用于处理海量网页的索引计算问题。
Nutch的开发人员完成了相应的开源实现HDFS和MAPREDUCE,并从Nutch中剥离成为独立项目HADOOP,到2008年1月,HADOOP成为Apache*项目(同年,cloudera公司成立),迎来了它的快速发展期。
狭义上来说,hadoop就是单独指代hadoop这个软件,
广义上来说,hadoop指代大数据的一个生态圈,包括很多其他的软件

04 Hadoop思想与原理

 

 
————————————————
版权声明:本文为CSDN博主「不喜欢番茄的西红柿」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u012926411/article/details/82756100

 

发展阶段从2004年开始发展到现在在不断的优化

 

 

描述名称节点、第二名称节点、数据节点的主要功能及相互关系

名称节点:

在HDFS中,名称节点(NameNode)负责管理分布式文件系统的命名空间(Namespace),保存了两个核心的数据结构,即FsImage和EditLog
FsImage用于维护文件系统树以及文件树中所有的文件和文件夹的元数据
操作日志文件EditLog中记录了所有针对文件的创建、删除、重命名等操作

04 Hadoop思想与原理

 

 


————————————————
版权声明:本文为CSDN博主「诠释轻音」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/q739404976/article/details/72800173

 

 

第二名称节点

因为HDFS文件会逐渐地变大,不断变大的EditLog文件通常不会对系统文件产生影响,但是当EditLog很大时,使得在HDFS重启时,将EditLog合并到FsImage中的过程十分缓慢,系统长期处于“安全模式”,用户的使用收到影响。

HDFS的第二名称节点(secondary NameNode)的作用:完成EditLog合并到FsImage的过程,缩短合并的重启时间,其次作为“检查点”保存元数据的信息。

在这里插入图片描述

04 Hadoop思想与原理

 

 


如图,EditLog合并到FsImage中的过程:名称节点会生成新的EditLog.new来记录t2时刻以后的数据,EditLog和FsImage会被拉到第二名称节点中,合并成为FsImage.ckpt,在t1时刻替换名称节点中的FsImage。

这样会出现一问题,如果是t2到t1时刻之间出现了问题,FsImage中的数据会丢失,所以说第二名称节点只是起到了“检查点”的作用而绝非“热备份”。
————————————————
版权声明:本文为CSDN博主「LUK流」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_35688140/article/details/83582467

 

数据节点功能

数据节点最主要的就是数据存储访问功能,所有功能都是为了该目的而展开,如同机房多个数据节点共同承载该机房产生数据、同机房间数据节点的数据同步、不同机房间数据节点数据同步、等等都是为了数据能正常存储访问为目的,本节简介数据节点功能如下:

(一)数据建立。数据建立是指数据节点在接收到中控发来的数据建立指令,为接收新数据进行一系列准备工作。

(二)数据销毁。数据销毁是指数据节点在接收到中控发来的数据销毁指令,将指定数据销毁,回收各种资源工作。

(三)数据存储访问。数据存储访问是指数据节点根据系统预定义数据结构将发布数据存储起来,同时根据数据子系统提供的协议对外进行相应的数据服务。相应的数据基础操作如增、删、改、查。通用平台考虑到实际应用场景,设计数据子系统需要提供按机房为单位的多点读写能力。

(四)数据节点间相互配合和自适应。大型系统中因为大量数据或是因为数据节点的存储压力,会出现单进程无法承载数据的情况,通用平台在设计之初就考虑该情况下,数据节点间需要如何进行相互配合和自适应数据分片的情况。这种情况相对较为复杂,数据节点间在确定数据分片后,会将不属于自身的数据转移至适合的数据节点,完成数据分片,降低自身存储压力。数据节点在自身存储压力降低后,预算可以承载某类数据全部压力后,可以进行数据合并处理,数据合并能降低子系统复杂度,和更有利于系统资源回收和调度

(五)数据节点间同步。数据节点间同步是指承载修改数据的数据节点(既承载增,删,改功能),需要负责将该部分变化数据同步给所有承载该数据的数据节点。该数据同步可以利用通信子系统群发功能来完成。

(六)数据节点与数据使用方同步。数据子系统为了快速响应数据变化,降低数据延迟,提供数据订阅功能,再有满足订阅需求数据到来后,可以主动通知订阅数据,降低延迟,同样亦可利用通信子系统群发功能完成。数据节点与数据使用方同步除了数据节点主动发送以外,还提供数据使用方主动发起同步,该两种方式都是以同步为目的,只是发起方不同,不过以数据使用方发起较为妥善也较好处理,但该方法一般采用轮询方式不好掌握同步时间间隔过频对于数据节点有处理压力,间隔过大造成数据延迟高。通用平台采用结合方式来解决,既约定同步信息是单调步长递增,如有异常间隔数据使用方丢弃异常数据,改为请求缺失数据既能解决。

(七)数据持久化。目前设计数据节点暂不对外进行数据持久化,该功能被设计仅为运维子系统提供,用于服务升级和配置文件升级提供磁盘文件持久化。
————————————————
版权声明:本文为CSDN博主「wyc761024」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wyc7610/article/details/106483490

 

相互关系

数据节点是分布式文件系统HDFS的工作节点,负责数据的存储和读取,会根据客户端或者是名称节点的调度来进行数据的存储和检索,并且向名称节点定期发送自己所存储的块的列表

是HDFS架构中的一个组成部分,它是用来保存名称节点中对HDFS 元数据信息的备份,并减少名称节点重启的时间。SecondaryNameNode一般是单独运行在一台机器上

名称节点(NameNode)负责管理分布式文件系统的命名空间(Namespace),保存了两个核心的数据结构,即FsImage和EditLog

第二名称节点使名称节点出于最新的状态并且备份,数据节点将保存数据使得数据同步

上一篇:HDFS之namenode文件解析


下一篇:hadoop学习 15 9.2 HDFS 第一种开机启动(格式化后启动)时NameNode元数据目录的变化