hadoop的体系架构

HDFS的体系架构NameNodeedits文件(客户端的操作日志)fsimage文件(元信息文件)

DataNodeSecondary NameNode

Yarn的体系架构HBase主从架构的单点故障的问题

HDFS的体系架构

NameNode

NameNode:主节点 职责: (1)管理HDFS (2)接收客户端的请求:数据上传,数据下载 (3)维护HDFS:维护edits文件(客户端的操作日志)、维护fsimage文件(元信息文件)

所处路径: $HADOOP_HOME/tmp/dfs ( /root/training/hadoop-2.7.3/tmp/dfs )

edits文件(客户端的操作日志)

所处路径: $HADOOP_HOME/tmp/dfs/name/current ( /root/training/hadoop-2.7.3/tmp/dfs/name/current ) edits_inprogress_0000000000000000105是当前正在操作的日志,所有的edits文件都是二进制文件,使用一般的编辑器查看不了,所以可以使用下面这个命令来进行查看:

hdfs oev -i edits_inprogress_0000000000000000105 -o ~/a.xml

# -i 后接输入文件(想查看的文件) -o后接输出文件

这里我们先对dfs进行一个创建目录的操作,然后这个操作也会被hdfs的日志记录下来

hdfs dfs -mkdir /tools

进行创建操作后,使用日志查看器进行查看(相当于转化成xml格式文件进行查看)

hdfs oev -i edits_inprogress_0000000000000000105 -o ~/a.xml

vi a.xml

标签中就是一条条操作的记录,操作的行为是创建文件夹(OP_MKDIR),创建的目录是tools(/tools

如果hdfs的元信息文件损坏,我们则可以通过日志文件进行恢复。

fsimage文件(元信息文件)

记录的是数据块的位置信息,冗余信息 位置:$HADOOP_HOME/tmp/dfs/name/current

下面将jdk的压缩包进行上传,fsimage文件中则会记录数据块的位置信息和冗余度。

hdfs dfs -put jdk-8u181-linux-x64.tar.gz /tools

提供元信息查看器

hdfs oiv -i fsimage_0000000000000000104 -o ~/b.xml -p XML

DataNode

DataNode:从节点 1、职责:按照数据块来保存数据:1.x:64M 2.x:128M 2、数据块的位置 $HADOOP_HOME/tmp/dfs/data/current/BP-90413187-192.168.157.111-1582475681214/current/finalized/subdir0/subdir0 Demo:上传数据 hdfs dfs -put jdk-8u181-linux-x64.tar.gz /tools,大概204M

数据块相加起来的大小就是之前上传jdk文件的大小。

设置数据块冗余度的一般原则:冗余度跟数据节点个数一致,最大不超过3

Secondary NameNode

Secondary NameNode:第二名称节点,跟NameNode运行在一起 1、不是NameNode热备 2、职责:定期进行日志信息的合并:把edits----> fsimage文件 3、重点:掌握日志合并的过程(为什么Secondary NameNode要和NameNode运行在一起)

(1)将NameNode的edits日志和fsimage元信息文件下载至secondaryNameNode(copy)

(2)secondaryNameNode将edits日志和fsimage元信息合并成fsimage.check文件 (3)secondaryNameNode将fsimage.check文件上传到NameNode,NameNode对fsimage.check文件再进行维护。

这也解释了为什么Secondary NameNode要和NameNode运行在一起,因为在同一机台上,可以大幅度提高下载的速度和上传速度。

在下载和上传期间,会生产新的edits文件,这个时候会先暂存在edits_inprogress中,等到其他edits上传完成,又变成新的edits文件,继续进行下载操作。

合并发生的时机? 当HDFS发出 检查点( checkpoint ) 的时候,触发进行合并。 默认∶(1)每隔60分钟,参数: fs.check.peroid (2)当edits文件达到64M,参数: fs.check.size

补充一点:检查点 (1)HDFS:触发日志的合并 (2)Oracle:会以最高优先级唤醒数据库的写进程,写脏数据 (3)Spark和Flink:容错机制

Yarn的体系架构

1、ResourceManager:主节点 职责: (1)接收客户端的请求:执行MapReduce任务的请求 (2)资源的分配:CPU、内存、网络 (3)任务的分配:NodeManager

2、NodeManager:从节点 职责: (1)从ResourceManager获取任务和资源 (2)执行任务

3、Yarn调度MapReduce任务的过程

(1)客户端发起任务 hadoop jar *** (2)JobClient.java向ResourceManager请求创建任务ID (3)JobClient.java将任务(jar文件)上传到HDFS (4)JobClient.java向HDFS获取元信息(数据元信息、任务元信息) (5)JobClient.java向ResourceManager提交任务:任务ID、数据元信息、任务元信息 (6)ResourceManager对任务进行初始化(谁来执行、资源怎么分配) (7)ResourceManager将任务分配给NodeManager (8)启动Application Container,任务都运行在 Container中。 (9)NodeManager根据第七步分配的数据和任务的元信息,向HDFS获取数据和任务。

为什么NodeManager和DataNode在同一机台? 因为NodeManager根据ResourceManager分配的数据和任务的元信息,向HDFS的DataNode获取数据和任务,如果在同一机台,获取的速度会很快,大大提高了性能。

4、Yarn的资源分配方式

(1)FIFO Scheduler 先来先得,问题:没有考虑任务的优先级 (2)Capacity Scheduler:容器管理的调度规则,允许多个组织共享集群的资源 (3)Fair Scheduler:公平调度原则,假设:任务具有相同的优先级,平均分配系统的资源。如果加入权重,那么会根据权重的占比来进行分配。

HBase

HBase:基于HDFS之上的NoSQL数据库 1、HMaster:主节点 2、RegionServer:从节点 3、ZooKeeper:当成“数据库”

主从架构的单点故障的问题

主从架构的单点故障的问题,需要实现HA(High Availablity高可用性)

HA(高可用性)核心思想:多几个主节点,但只有一个主节点处于Active状态,其他的主节点处于StandBy,一旦处于Active的主节点损坏,那么可以借助ZooKeeper激活另外的主节点。

好文推荐

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: