文档章节

五:Hadoop之HDFS基础概念

berg-dm
 berg-dm
发布于 2016/04/30 16:13
字数 2003
阅读 118
收藏 0

一:简单了解Hadoop:

            Hadoop的框架最核心的设计就是:HDFS(Hadoop Distributed File System) 和 MapReduce。

           HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。

二:HDFS体系结构:

            HDFS 是一个主/从(Master/Slave)体系结构,可以通过目录路径对文件执行CRUD操。但由于分布式存储的性质,HDFS集群拥有一个NameNode 和 一些DataNodes。NameNode管理文件系统的元数据,DataNode存储实际的数据。客户端通过同NameNode和DataNodes的交互访问文件系统。客户端联系NameNode以获取文件的源数据,而真正的文件I/O操作是直接和DataNode进行交互的。

            NameNode也就是主控制服务器负责管理文件系统的命名空间,记录文件数据块咋每个DataNode上的位置和副本信息,协调客户端对文件的访问,以及记录命名空间内的改动或命名空间本身属性的改动。

            DataNode负责他们所在物理节点上的存储管理。HDFS开放的文件系统的命名空间以便让用户以文件的形式存储数据。HDFS的数据都是“一次写入,多次读取”,而其文件通常是按照128MB被企鹅人称不同的数据块(Block),每个数据块尽可能地分散存储于不同的DataNode中。

            NameNode执行文件系统的命名空间操作,比如打开、关闭、重命名文件或目录等,还决定数据块到DataNode的映射。DataNode负责处理客户的读写请求,依照NameNode的命令,执行数据的创建,复制等工作。

            eg:客户端要访问一个文件,首先,客户端从NameNode中获得组成该文件的数据块位置列表,即知道数据块被存储在哪些DataNode上,然后,客户端直接从DataNode上读取文件数据。此过程中,NameNode不参与文件的传输。

            

            

        

        一个集群只有一个NameNode,集群中的其他机器各运行一个DataNode,也可以在运行NameNode的机器上同时运行DataNode,或者一台机器上运行多个DataNode。

            NameNode使用事务日志(EditLog)记录HDFS元数据的变化,是用映像文件FsImage存储文件系统的命名空间,包含文件的映射及属性等。事务日志和映像文件都存储在NameNode的本地文件系统中。NameNode启动时候,从磁盘中读取映像文件和事务日志,把事务日志的事务都应用到内存中的映像文件上,然后将新的元数据刷新到本地磁盘的新的映像文件上中,这样可以截去旧的事务日志。该过程又称为检查点(Checkpoint)。

            SecondaryNameNode辅助NameNode处理映像文件和事务日志。NameNode启动的时候合并映像文件和事务日志,而SecondaryNameNode会周期地从NameNode上复制映像文件和事务日志到临时目录,合并生成新的映像文件后在重新上传到NameNode,NameNode更新映像文件并清理事务日志,使得事务日志大小可控。

            

        ***********************************************************************************************************  

1.    NameNode

           NameNode 是 HDFS的守护程序,负责记录文件是如何分割成数据块的,以及这些数据块分别被存储到哪些数据节点上。它的主要功能是对内存及I/O进行集中处理。

            由于NameNode是Hadoop集群中的一个单点,一旦NameNode服务器宕机,整个系统无法运行。

            NameNode存储的是元数据

2.    DataNode

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

        DataNode 存储的是实际数据。

3.    SecondaryNameNode

            SecondaryNameNode是一个用来监控HDFS状态的辅助后台程序。就像NameNode一样,每个集群都有一个SecondaryNameNode,并且部署在一台单独的服务器上,而SecondaryNameNode不同于NameNode,它不接收或记录任何实时的数据变化,但是,它会与NameNode进行通信,以便定期的保存HDFS元数据的快照。由于NameNode是单点的,通过SecondaryNameNode的快照功能,可以将NameNode的宕机时间和数据损失降低到最小。同时NameNode发生损坏,SecondaryNameNode可以及时地作为备用NameNode使用。

            SecondaryNameNode 最重要的任务并不是为NameNode 元数据进行热备份,而是定期合并f s i m a g e 和e d i t s 日志,并传输给NameNode 。这里需要注意的是,为了减小NameNode压力,NameNode 自己并不会合并fsimage 和edits ,并将文件存储到磁盘上,而是交由SecondaryNameNode 完成。 


4.    ResourceManager

            ResourceManager主要由以下几个部分组成:

            用户交互

                YARN分别针对普通用户,管理员和Web提供了三种对外服务,分别对应ClientRMService、AdminService和WebApp:

            ClientRMService

                ClientRMService是为普通用户提供的服务,它会处理来自客户端各种RPC请求,比如提交应用程序、终止应用程序,获取应用程序运行状态等。

            AdminService

                YARN为管理员提供了一套独立的服务接口,以防止大量的普通用户请求使管理员发送的管理命令饿死,管理员可通过这些接口管理集群,比如动态更新节点列表,更新ACL列表,更新队列信息等。

            WebApp

为了更加友好地展示集群资源使用情况和应用程序运行状态等信息,YARN对外提供了一个Web 界面


5.    NodeManager(NM管理)

            NMLivelinessMonitor

                监控NM是否活着,如果一个NodeManager在一定时间(默认为10min)内未汇报心跳信息,则认为它死掉了,会将其从集群中移除。

            NodesListManager

                维护正常节点和异常节点列表,管理exlude(类似于黑名单)和inlude(类似于白名单)节点列表,这两个列表均是在配置文件中设置的,可以动态加载。

            ResourceTrackerService

                处理来自NodeManager的请求,主要包括两种请求:注册和心跳,其中,注册是NodeManager启动时发生的行为,请求包中包含节点ID,可用的资源上限等信息,而心跳是周期性 行为,包含各个Container运行状态,运行的Application列表、节点健康状况(可通过一个脚本设置),而ResourceTrackerService则为NM返回待释放的Container列表、Application列表等。


6.     Application管理

ApplicationACLsManager

管理应用程序访问权限,包含两部分权限:查看和修改,查看主要指查看应用程序基本信息,而修改则主要是修改应用程序优先级、杀死应用程序等。

RMAppManager

管理应用程序的启动和关闭。

ContainerAllocationExpirer

YARN不允许AM获得Container后长时间不对其使用,因为这会降低整个集群的利用率。当AM收到RM新分配的一个Container后,必须在一定的时间(默认为10min)内在对应的NM上启动该Container, 否则,RM会回收该Container。


安全管理

ResourceManage自带了非常全面的权限管理机制,主要由ClientToAMSecretManager、ContainerTokenSecretManager、ApplicationTokenSecretManager等模块完成。


资源分配

ResourceScheduler

ResourceScheduler是资源调度器,它按照一定的约束条件(比如队列容量限制等)将集群中的资源分配给各个应用程序。ResourceScheduler是一个插拔式模块,默认是FIFO实现,YARN还提供了Fair Scheduler和Capacity Scheduler两个多租户调度器。


© 著作权归作者所有

berg-dm
粉丝 26
博文 98
码字总数 88970
作品 0
深圳
程序员
私信 提问
Cloudera Apache Hadoop 管理员培训

本次培训将于2017年12月28日至31日在上海举办,Cloudera Apache Hadoop 管理员培训报名平台活动家。 Cloudera 大学为期4 天的Hadoop 管理员培训将帮助学员综合理解并全 面掌握通过Cloudera ...

活动家
2017/10/13
32
0
上海Cloudera Apache Hadoop 管理员培训(CCA131)

Cloudera 大学为期4 天的Hadoop 管理员培训将帮助学员综合理解并全 面掌握通过Cloudera Manager对Hadoop机群的运维管理,包括:安装,配置、 负载平衡及性能调优等。通过该培训,Hadoop 系统...

活动家
2017/08/01
15
0
Cloudera Apache Hadoop 管理员培训(北京站)

因楼主不能及时查看报名信息,还望各位参会者能稳步至活动家官网进行在线报名 报名地址:https://www.huodongjia.com/event-604098708.html 快速审核,方便咨询。 培训概况 Cloudera 大学为期...

活动家
2017/02/17
79
0
北京Cloudera Apache Hadoop 管理员培训

本次培训将于9月18日在北京开班,北京Cloudera Apache Hadoop 管理员培训报名平台活动家。报名猛戳上面“立即报名” Cloudera Apache Hadoop 管理员培训 Cloudera Apache Hadoop 培训及认证帮...

活动家
2017/08/02
24
0
大数据入门与实战-Hadoop核心HDFS

课程链接:https://www.imooc.com/video/16287 Hadoop简介 Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群...

致Great
2018/04/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

手写RPC框架指北另送贴心注释代码一套

Angular8正式发布了,Java13再过几个月也要发布了,技术迭代这么快,框架的复杂度越来越大,但是原理是基本不变的。所以沉下心看清代码本质很重要,这次给大家带来的是手写RPC框架。 完整代码...

全菜工程师小辉
7分钟前
2
0
【Java】开发收货

简介 谨以此篇,记载开发过程中的一些tips。 编译器 【Shift + F6】可实现变量的联动修改。

Areya
23分钟前
5
0
DOM官方定义

DOM Document Object Model 文档对象模型 DOM的官方定义:W3C的DOM,可以使程序或者脚本(JS或AS\JScript),动态的访问或者操作文档的内容、结构、样式。 DOM只是一个标准,操作网页的标准。...

前端老手
29分钟前
6
0
IT兄弟连 HTML5教程 HTML5的学习线路图 第一阶段学习网页制作

学习HTML5技术可并不是简单学会几个新增的标签而已,HTML5现在可以说是前端所有技术的代名词。需要学习的语言和工具不仅多,对于刚接触他们的新人会感觉很乱。另外,前端开发也会细分很多个开...

老码农的一亩三分地
31分钟前
6
0
可见性有序性,Happens-before来搞定

写在前面 上一篇文章并发 Bug 之源有三,请睁大眼睛看清它们 谈到了可见性/原子性/有序性三个问题,这些问题通常违背我们的直觉和思考模式,也就导致了很多并发 Bug 为了解决 CPU,内存,IO ...

tan日拱一兵
46分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部