当前位置:   article > 正文

Hadoop 系列 - 初识 Hadoop 及 NameNode 解析_hadoop namenode

hadoop namenode

简介

Apahce Hadoop 软件库是一个框架,它允许使用简单的编程模型跨计算机集群分布式处理大型数据集,用户可以在不了解分布式底层细节的情况下开发分布式应用程序,它支持单个服务器扩展到上千个服务器,可以很好的支持大型数据集处理。

主要组件

  • HDFS(Hadoop Distributed File System): 分布式文件存储系统,具有高容错性的特点,可以部署在低廉的硬件上,并且可以提供高吞吐来支撑文件的访问,解决海量数据的存储问题。
  • MapReduce : 分布式计算引擎,在 HDFS 基础上提供分布式计算能力,解决海量数据的计算问题注:同类引擎 Apache Spark,TEZ 等
  • Yarn : 资源管理框架, 为 Hadoop 集群和分布式计算引擎提供资源管理和资源的分配。注:同类组件 Mesos(国外使用较多),K8s(目前正在流行中,对资源管控比 Yarn 详细,但是对大数据组件支持没有 Yarn 好,实力较强的公司使用较多) 等

优点

  • 高容错性:HDFS 数据副本机制可保证数据安全;
  • 高可扩展性:Apache Hadoop 是主从架构,集群可扩展至数千节点;
  • 低成本:可以使用廉价的机器进行部署,大大降低集群部署成本。

发展史

Apache Hadoop 自发布至今主要经历了三个大版本的更新,即:Hadoop 1.x,Hadoop 2.x,Hadoop 3.x 三个版本。

Hadoop1.x

Apache Hadoop 1.x 版本的发布主要解决了两个问题 - 海量数据的存储(HDFS),海量数据的计算(MapReduce)

HDFS1 架构

HDFS1 是一个主从式架构,主节点只有一个为 Namenode, 从节点由多个为 Datanode
HDFS1.png

  • NameNode管理集群元数据信息(文件目录树):文件与Block块,Block块与DataNode的映射信息接受处理用户的请求管理 DataNode 节点
  • DataNode存储数据,把上传的数据划分为固定大小的文件块(Block),Hadoop1默认 64M为保证数据安全,默认每个 Block 有 3 个副本
  • SecondaryNamenode负责帮助 NameNode 定时备份合并 FsImage 和 EditLog 文件

HDFS1 架构缺陷

  • 只有一个主节点,存在单点故障问题
  • 只有一个 NameNode,内存受到限制

HDFS1 的 MapRecude

HDFS1 中的 MapReduce 也从 MRV1 ,是一个主从式架构,主节点为 JonTracker 负责集群的资源管理和处理客户端的请求,从节点 TaskTracker 负责资源管理和任务的执行。
MRv1.png
存在的问题:

  • 单点故障,可靠性低:JobTracker 采用 master/slave 结构,处理集群事务,存在单点故障;
  • 单点瓶颈,扩展性差:JobTracker 需要进行资源、任务管理,任务状态跟踪处理,工作负荷较大存在单点性能瓶颈;
  • 资源管理和任务执行强耦合:在 TaskTracker 端,使用 Map/Reduce Task 数量作为资源的表示过于简单没有考虑 CPU、内存等情况,当两个大任务调度在一起执行容易出现 OOM;
  • 资源利用率低:基于槽位的资源分配模型,槽位是一种粗粒度的资源划分单位,通常一个任务不会用完一个槽位的资源,hadoop1把资源强制划分为
    Map/Reduce 两种Slot,当只有 MapTask 时,Reduce Slot 不能用;当只有 Reduce Task 时,Map Slot 不能用,容易造成资源利用不足。
  • 不支持其它分布式计算框架。

Hadoop2.x

HDFS2 架构

HDFS2 架构和 HDFS1 架构基本一致,也是主从结构,主节点为 NameNode,从节点为DataNode
但是它解决了 HDFS1 存在的单点故障和内存受限两个问题

HDFS2 高可用(解决单点故障)

HDFS2高可用.png
HDFS 增加了 JournalNode 组件进行 FsImage 和 EditLog 的合并与备份,同时在 NameNode 里面新增了 ZKFC 实现了 NameNode 的故障自动切换

联邦方案(解决内存受限)

联邦方案的解决思路为:在同一个集群中添加多组 NameNode ,每组 NameNode 上存储部分数据的元数据信息,管理部分的 DataNode。
HDFS2联邦.png

HDFS1 MapReduce (MRv1) -> HDFS2 架构 变化

Hdfs1-Hdfs2架构演进.png
在 Hadoop 2.x 开始,将 MRv1 的资源管理调度和数据的处理计算分成了两部分:MapReduce 和 Yarn。

  • MapReduce:仅仅只是一套用来编写分布式计算应用程序的 API
  • Yarn:是一个 Master/Slave 架构的分布式集群,用来进行集群的资源管理和任务的调度工作,提供 Job 的调度规范,除了能运行 MapReduce 程序外还可以运行 Spark 、 Flink 等分布式应用程序。

Hadoop3.x

HDFS3 的架构与 HDFS2 的架构是一致的,只不过在 HDFS2 的基础上对 HA 方案进行了增强,支持多个 NameNode 作为 StandyNameNode,同时引入了纠删码技术用来节省数据的存储空间。

核心组件介绍

NameNode

NameNode 作为集群的 Master 节点,需要管理集群中的所有 Slave 节点即 DataNode,负责 DataNode 的心跳状态检查、上下线和整个集群的所有文件操作(读、写、删除)以及所有的用户操作。所以对于 NameNode 来说,在保证自己高可用的情况下还需要可以支撑超大流量的并发操作。
注:运行在Hadoop集群的任务都会产生很多个请求,这些所有的请求都打到 NameNode 这儿 (更新元数据目录树)

HDFS 的元数据管理

HDFS 元数据的逻辑展现形式为树状结构,为了保证相应速度 NameNode 会将元数据全部加载至内存进行存放,所以所有的请求处理都是内存操作响应速度很快。
Nanode元数据管理.png
相关组件或服务:

  • FsImage:元数据目录树实际存储的文件;
  • EditLog:操作日志记录文件,会定期与 FsImage 合并生产新的 FsImage 文件,保证元数据的完整性;
  • NameNode:接收请求操作元数据目录树,操作加载在自己内存中的元数据目录树,同时会将操作记录到 EditLog 和发送到 JournalNode 集群;
  • JournalNode:复制 FsImage 和 EditLog 备份合并

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/670616
推荐阅读
相关标签
  

闽ICP备14008679号