行业报告 AI展会 数据标注 标注供求
数据标注数据集
主页 > 数据挖掘 正文

hadoop之 hadoop 机架感知

Hadoop是一个能够对大量数据进行分布式处理的软件框架,实现了Google的MapReduce编程模型和框架,能够把应用程序分割成许多的小的工作单元(块),并把这些单元放到任何集群节点上执行。在MapReduce中,一个准备提交执行的应用程序称为“作业(job)”,而从一个作业划分出得、运行于各个计算节点的工作单元称为“任务(task)”。此外,Hadoop提供的分布式文件系统(HDFS)主要负责各个节点的数据存储,并实现了高吞吐率的数据读写。

在分布式存储和分布式计算方面,Hadoop都是用主/从(Master/Slave)架构。在一个配置完整的集群上,想让Hadoop这头大象奔跑起来,需要在集群中运行一系列后台(deamon)程序。不同的后台程序扮演不用的角色,这些角色由NameNode、DataNode、 SecondaryNameNode、JobTracker、TaskTracker组成。

其中NameNode、SecondaryNameNode、JobTracker运行在Master节点上,而在每个Slave节点上,部署一个DataNode和TaskTracker,以便 这个Slave服务器运行的数据处理程序能尽可能直接处理本机的数据。对Master节点需要特别说明的是,在小集群中,SecondaryNameNode可以属于某个从节点;在大型集群中,NameNode和JobTracker被分别部署在两台服务器上。

我们已经很熟悉这个5个进程,但是在使用的过程中,我们经常遇到问题,那么该如何入手解决这些问题。那么首先我们需了解的他们的原理和作用。

五个节点分别是:

Namenode
SecondaryNameNode
DataNode
ResourceManager
NodeManager

1. Namenode

Namenode 管理者文件系统的Namespace。它维护着文件系统树(filesystemtree)以及文件树中所有的文件和文件夹的元数据(metadata)。管理这些信息的文件有两个,分别是Namespace 镜像文件(Namespace image)和操作日志文件(edit log),这些信息被Cache在RAM中,当然,这两个文件也会被持久化存储在本地硬盘。Namenode记录着每个文件中各个块所在的数据节点的位置信息,但是他并不持久化存储这些信息,因为这些信息会在系统启动时从数据节点重建。

namenode结构图(盗的图)

 

 

客户端(client)代表用户与namenode和datanode交互来访问整个文件系统。客户端提供了一些列的文件系统接口,因此我们在编程时,几乎不用知道datanode和namenode,即可完成我们所需要的功能。

2. DataNode

Datanode是文件系统的工作节点,他们根据客户端或者是namenode的调度存储和检索数据,并且定期向namenode发送他们所存储的块(block)的列表(心跳机制)。

集群中的每个服务器都运行一个DataNode后台程序,这个后台程序负责把HDFS数据块读写到本地的文件系统。当需要通过客户端读/写某个数据时,先由NameNode告诉客户端去哪个DataNode进行具体的读/写操作,然后,客户端直接与这个DataNode服务器上的后台程序进行通信,并且对相关的数据块进行读/写操作。

3. SecondaryNameNode

SecondaryNameNode是一个用来监控HDFS状态的辅助后台程序。就像NameNode一样,每个集群都有一个Secondary NameNode,并且部署在一个单独的服务器上。SecondaryNameNode不同于NameNode,它不接受或者记录任何实时的数据变化,但是,它会与NameNode进行通信,以便定期地保存HDFS元数据的快照。由于NameNode是单点的,通过Secondary NameNode的快照功能,可以将NameNode的宕机时间和数据损失降低到最小。同时,如果NameNode发生问题,Secondary NameNode可以及时地作为备用NameNode使用。这其中SecondaryNameNode作为NameNode备用节点,切换的过程完全不影响其它节点,举个栗子:NameNode就相当于皇帝,而SecondaryNameNode相当于东宫太子,皇帝即NameNode出现故障或者死去,东宫太子会立即继位,下面的大臣(DataNaem)完全感觉不到皇位已经换人了。

4. ResourceManager 和 NodeManager

一个为资源管理,另一个为节点管理,顾名思义,一个主要负责资源的管理,另一个负责节点的管理

ResourceManager 主要完成以下几个功能:

1. 与客户端交互,处理来自客户端的请求

2. 启动和管理ApplicationMaster,并在它运行失败时重新启动它;资源管理和调度,接收来自ApplicationMaster 的资源申请请求,并为之分配资源

3. 管理NodeManager,接收来自NodeManager的资源汇报信息,并向NodeManager下达管理指令(比如杀死 Container等)

NodeManager :

Node Manager就是Weblogic Server提供的一个Java 程式,可以使让你在本地域控制台启动、关闭、重启及监管受管Server。Node Manager 允许你从远程machine控制受管Server。要使用NodeManager的功能,必须在受管Server机 器上启动Node Manager。

HDFS运行流程图(图是盗的)

首先用户即客户端想要上传文件,就先要给namenode发个请求,告诉它说我要上传文件了(即写数据),然后namenode会返回一个响应,这个响应是namenode根据自身情况,比如会先查一下namenode里面还能存数据吗?能存多少?有几个datanode能存?(心跳信息)然后返回一个可以存储的节点列表,意思是这些里面能存,但不是能存的datanode全部返回,它会根据上传文件的大小来适当的返回,客户端收到这个列表后,就向根据返回的列表里面的datanode中写数据,文件会分为多个块(block),写的过程是以流的方式写入的,一个块存入一个DataNode,存完后DataNode就会备份,我们默认的备份数是3,存完后,会告诉namenode说我存完了。这样就结束了hdfs文件上传的流程。

 

 

 

上面那张看不懂的话看这张

 

微信公众号

声明:本站部分作品是由网友自主投稿和发布、编辑整理上传,对此类作品本站仅提供交流平台,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,不为其版权负责。如果您发现网站上有侵犯您的知识产权的作品,请与我们取得联系,我们会及时修改或删除。

网友评论:

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
最新文章
SEM推广服务
热门文章
热点图文

Copyright©2005-2028 Sykv.com 可思数据 版权所有    京ICP备14056871号

关于我们   免责声明   广告合作   版权声明   联系我们   原创投稿   网站地图  

可思数据 数据标注

扫码入群
扫码关注

微信公众号

返回顶部