metastore作用_Hadoop 原理学习(1)Hadoop 各服务的作用简述

本文介绍了Hadoop 2.6.0-cdh5.8.3中的核心服务,包括NameNode、DataNode的角色和功能。NameNode作为中心服务器管理文件系统命名空间和数据块映射,而DataNode存储实际数据并处理读写请求。此外,文章提及了JournalNode、Balancer、HttpFS等辅助服务在Hadoop生态系统中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注:以下服务为基于安装Hadoop 2.6.0-cdh5.8.3后的所得服务,但并不是全部。

1. HDFS

NameNode

NameNode是一个中心服务器,负责管理文件系统的namespace以及客户端对文件的访问。

NameNode执行文件系统的namespace操作,比如打开、关闭、重命名文件或目录。同时它还确定block到DataNode节点的映射。

Namenode 详细功能如下:

- 它是维护和管理 Datanode 的主守护进程;

- 它记录存储在集群中的所有文件的元数据,例如 block 的位置、文件大小、权限、层次结构等。有两个文件与元数据关联:

- FsImage:它包含自 Namenode 开始以来文件的 namespace 的完整状态;

- EditLogs:它包含最近对文件系统进行的与最新 FsImage 相关的所有修改。

- 它记录了发生在文件系统元数据上的每个更改。例如,如果一个文件在 HDFS 中被删除,Namenode 会立即在 EditLog 中记录这个操作。

- 它定期从集群中的所有 Datanode 接收心跳信息和 block 报告,以确保 Datanode - 处于活动状态;

- 它保留了 HDFS 中所有 block 的记录以及这些 block 所在的节点;

- 它负责管理所有 block 的复制;

- 在 Datanode 失败的情况下,Namenode 会为副本选择新的 Datanode,平衡磁盘使用并管理到 Datanode 的通信流量。

DataNode

在集群内部,文件被分成一个或多个block,这些block被存储在一组DataNode中,而DataNode则用于管理它所在节点上的存储。

Datanode负责处理文件系统客户端的读写请求。在Namenode的统一调度下进行数据块的创建、删除和复制。

Datanode 详细功能如下:

- 这些是丛属守护进行或在每台从属机器上运行的进程;

- 实际的数据存储在 Datanode 上;

- 执行文件系统客户端底层的读写请求;

- 定期向 Namenode 发送心跳报告 HDFS 的整体健康状况,默认频率为 3 秒

NameNode and DataNode 更多请参考:HDFS Architecture Guide

FailoverController

故障切换控制器,运行在NameNode旁边,主要包含以下3个功能:

1) 监控NameNode的健康状态(心跳检测);

2) 向ZooKeeper定期发送心跳,使自己可以被选举;

3) 当自己被ZooKeeper选择为主时,通过 RPC 调用使对应的NameNode转换为active状态。

JournalNode

用于存储EditLog,相关资料如下:

NameNode默认采用 Clouderea 公司实现的基于QJM(Quorum Journal Manager)的方案来实现其共享存储方案,在QJM方案中,NameNode 在执行 HDFS 客户端提交的创建文件或者移动文件这样的写操作的时候,会首先把这些操作记录在EditLog文件之中,然后再更新内存中的文件系统镜像(内存中的文件系统镜像用于NameNode向客户端提供读服务,而EditLog则只是在数据恢复的时候起作用)。

QJM 共享存储的基本思想来自于 Paxos 算法 (参见参考文献 [3]),采用多个称为 JournalNode的节点组成的JournalNode集群来存储EditLog,每个JournalNode保存同样的EditLog副本。每次NameNode写EditLog的时候,除了向本地磁盘写入 EditLog之外,也会并行地向JournalNode集群之中的每一个JournalNode 发送写请求,只要大多数 (majority) 的JournalNode节点返回成功就认为向 JournalNode集群写入EditLog成功。如果有 2N+1 台 JournalNode,那么根据大多数的原则,最多可以容忍有 N 台JournalNode节点挂掉。

Balancer

用于平衡集群之间个节点的磁盘利用率。

因为 HDFS 的数据可能并不总是被均匀地分布的在DataNodes中,比如添加新的DataNode到现有的集群,所以 HDFS 提供了Balancer服务用于分析block的放置并平衡DataNode中的数据。Banlancer会移动block直到集群被认为是平衡的,这也意味着每个DataNode的利用率(节点上已用空间与节点总容量的比率)与集群的利用率(集群的已用空间与集群的总容量的比率)相差不会超过给定的阈值百分比。

HttpFS

提供 HTTP 方式访问 HDFS 服务的功能。它支持所有 HDFS filesystem 操作(包括读取与写入)的 REST Api。

2. HBase

Master

负责监视集群中的所有 RegionServer 实例,并且是所有元数据更改的接口。在分布式集群中,Master 通常运行在 NameNode 之上。其具体提供的功能如下:

1) 提供的接口

HMasterInterface 主要提供面向元数据的方法:

- Table (createTable, modifyTable, removeTable, enable, disable)

- ColumnFamily (addColumn, modifyColumn, removeColumn)

- Region (move, assign, unassign)

例如,当 HBaseAdmin 方法 disableTable 被调用时,它由 Master Server 提供服务。

2) 运行的线程

Master 运行了几个后台线程,其中包括:

- LoadBalancer: 定期的,当没有 region 被 transition 时,LoadBalancer 将运行并移动 region 以平衡集群的负载;

- CatalogJanitor:定期检查并清理 .META. 表;

RegionServer

负责服务和管理 regions。在分布式集群中,RegionServer 运行在 DataNode 之上。其具体的功能如下:

1) 提供的接口

HRegionRegionInterface 公开的方法包含面向数据和 Region 维护的方法:

- Data (get, put, delete, next, etc.)

- Region (splitRegion, compactRegion, etc.)

例如,当调用 HBaseAdmin 的方法 majorCompact 操作表时,客户端实际上会遍历指定表的所有区域,并直接向每个 region 请求 major compaction 操作。

3. Yarn

NodeManager

负责启动和管理节点上的 containers。Containers 则用于执行 AppMaster 指定的任务。

ResourceManager (RM)

负责跟踪与管理集群中的资源,并调度运行在 Yarn 上的 applications(例如 MapReduce 作业)。

JobHistory

以 REST API 的方式向用户提供完成的 applications 的状态查询。目前它只支持 MapReduce 并提供完成的 job 信息。

4. Spark_on_yarn

HistoryServer

显示有关完成的 Spark aplications 的历史记录信息。

5. Hive

HiveServer2

使客户端能够对 Hive 执行查询功能。HiveServer2 是已弃用的 HiveServer1 的继承者。它支持多客户端并发和身份验证,旨在为 JDBC 和 ODBC 等开放 API 客户端提供更好的支持。

HiveServer2 是作为组合服务运行的单个进程,其中包括基于 Thrift 的 Hive 服务(TCP或HTTP)和用于 Web UI 的 Jetty Web 服务器。

HiveMetaStore

将 Hive 表和分区的元数据存储在关系型数据库中,并提供 API 访问表和分区的所有元数据。

GateWay

6. Zookeeper

Server

其主要功能如下:基于 Paxos 算法提供 Master 选举与主备切换功能;

HBase 通过创建并监听 ZK 节点,实现系统容错功能;

HBase 通过在 ZK 上记录与感知 RootRegion(region 元数据)的变化,来实现管理 RootRegion;

HBase 将 Region 的上下线和重新上下线的状态管理/通知交由 ZK; 管理,来实现Region 管理;

HBase 通过在 ZK 上创建 SplitWAL 节点,并由 ZK 担负相互通知和信息持久化的角色,从而实现分布式的 SplitWAL 任务管理;

在 Yarn 中,ZK 用来存储应用的运行状态;

7. mgmtActivityMonitor

AlertPublisher

ClockOffset

EventServer

HostMonitor

ServiceMonitor

参考链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值