【hadoop】hadoop的体系架构

news2024/11/24 11:11:12

hadoop的体系架构

  • HDFS的体系架构
    • NameNode
      • edits文件(客户端的操作日志)
      • fsimage文件(元信息文件)
    • DataNode
    • Secondary 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

在这里插入图片描述

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

如果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激活另外的主节点。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/772191.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

idea-实现热部署

idea-实现热部署 今天在进行idea 开发时突然发现热部署失败了&#xff0c;每次修改内容都要去restart server一次 这样比较麻烦&#xff0c;故而总结一下idea实现热部署的方法&#xff1a; 步骤一&#xff1a; 选择edit configuration 然后跳出server 的配置&#xff0c;方框…

Go语言之并发编程练习

GO协程初识 package mainimport ("fmt""sync""time" )func read() {defer wg.Done()fmt.Println("read start")time.Sleep(time.Second * 3)fmt.Println("read end") }func listenMusci() {defer wg.Done()fmt.Println(&qu…

ENSP实验三:搭建VPN(GRE,未配置安全策略)

目录 1、基础配置&#xff1a;IP地址&#xff0b;防火墙安全区域&#xff1b; 2、使ISP&#xff08;运营商&#xff09;网络的路由可达-OSPF&#xff1b; 3、建立VPN隧道&#xff08;两个防火墙之间&#xff09;&#xff1b; 4、引流 1、基础配置&#xff1a;IP地址&#xf…

c语言小项目——通讯录中阶(动态内存版)

通讯录初阶&#xff1a;点这里 通讯录高阶&#xff1a;点这里 动态内存版改进之处结构体初始化通讯录添加联系人销毁通讯录 完整代码contact.hcontact.ctest.c 动态内存版改进之处 结构体 contact.c 初始化通讯录 contact.h contact.c 添加联系人 contact.c 销毁通讯录 te…

Linux挂载iso镜像文件为yum源

场景 工作中&#xff0c;经常需要在公司的内网环境节点安装一些第三方的服务&#xff08;例如HaProxy&#xff09;&#xff0c;一般他们都依赖一些基础工具&#xff0c;或者基础库&#xff0c;例如 openssl 、openssl-devel、gcc 等等。如果能联网&#xff0c;直接通过 yum 命…

干洗店预约下单小程序,洗衣店洗鞋店收银软件会员取衣管理

干洗店预约下单小程序&#xff0c;洗衣店洗鞋店收银软件会员取衣管理 干洗店洗鞋店同城预约上门洗衣系统小程序洗护软件APP码上洗鞋 主要功能&#xff1a; 1、专业的收衣收鞋功能。接收客户的预洗衣物&#xff0c;根据要求和提示输入衣物详细信息&#xff0c;包括衣服的颜色&a…

selenium-多窗口和frame处理

1.切换窗口 适用场景&#xff1a;点击按钮后&#xff0c;重新打开一个窗口&#xff0c;想要在新的窗口定位操作&#xff0c;就需要切换窗口 原理&#xff1a;获取窗口的唯一标识就是句柄&#xff0c;获取到句柄&#xff0c;就可以切换到对应的窗口了 处理方法&#xff1a; …

M7二极管-ASEMI迷你贴片整流二极管M7二极管

编辑&#xff1a;ll M7二极管-ASEMI迷你贴片整流二极管M7二极管 型号&#xff1a;M7二极管 品牌&#xff1a;ASEMI 芯片个数&#xff1a;1 芯片尺寸&#xff1a;46MIL 封装&#xff1a;SMAF 恢复时间&#xff1a;ns 工作温度&#xff1a;-50C~150C 浪涌电流&#xff1…

python实现拼多多商品详情接口API

最近工作需要用到拼多多的一些接口&#xff0c;官方竟然没有提供&#xff0c;python的sdk&#xff0c;于是就自己简单的写了一个商品SKU接口的api。 1、代码 #!/usr/bin/python3# -*- coding: utf-8 -*-# Time : 2020/3/29 0021 下午 19:40# Author : xiaozhi&#xff01;…

docker基础1——架构组成、安装配置

文章目录 一、发展起源1.1 传统虚拟化与容器虚拟化1.2 docker底层核心技术1.2.1 命名空间1.2.2 控制组 1.3 docker工作方式1.4 docker容器编排1.5 docker优劣势1.6 docker架构组成 二、yum安装docker三、配置docker加速器 一、发展起源 背景了解&#xff1a; 容器是内核里的一项…

重磅升级 | 睿士主机威胁溯源系统全新升级,助力用户2023网络攻防演练

攻防演练至今已走过7个年头&#xff0c;逐渐成为网络安全防御体系中至关重要的一环。随着攻防演练对抗水平不断升级&#xff0c;攻击手段愈发隐蔽&#xff0c;攻击自动化程度逐步提高&#xff0c;技术储备也越来越有针对性&#xff0c;从广撒网到精准打击&#xff0c;这些都给蓝…

解决find: ‘/run/user/1000/gvfs’: 权限不够

问题描述 在用find查找对应的文件时&#xff0c;突然报错这个问题 解决办法 其实这个目录是空的&#xff0c;所以删除就好了执行下列操作&#xff1a; umount /run/user/1000/gvfs rm -rf /run/user/1000/gvfs 之后的查找中就没有了报错提示。

Spring AOP的介绍与实现

文章目录 Spring AOP1. Spring AOP概念2. Spring AOP的作用3.AOP的组成4. Spring AOP的实现4.1 添加Spring AOP依赖4.2 定义切面&#xff08;创建切面类&#xff09;4.3 定义切点&#xff08;配置拦截规则&#xff09;4.3.1 切点表达式语法 4.4 定义通知的实现 5. Spring AOP实…

【Java】Mybatis使用Collection属性

前言 这篇文章实现一下不使用left join等连接关键字来实现Mybatis的联表查询功能。包括json类型数据映射到Java实体类中。 库表 父表db1_json 子表db1_json_attach&#xff0c;子表parent_id对应副本的id。 实体类 新建Db1JsonDTO数据传递对象实体。 Data public class Db…

GRE实验

题目参考&#xff1a; 实验步骤&#xff1a; 第一步&#xff1a;地址规划拓扑设计&#xff0c;配置IP地址 R1配置&#xff1a; <Huawei>system-view [Huawei]sy R1 [R1]int g 0/0/1 [R1-GigabitEthernet0/0/1]ip address 192.168.1.1 24 [R1-GigabitEthernet0/0/1]in…

【JavaEE】JavaEE进阶:框架的学习 - Spring的初步认识

JavaEE进阶首章 文章目录 【JavaEE】JavaEE进阶&#xff1a;框架的学习 - Spring的初步认识1. JavaEE初阶 与 JavaEE进阶 开发上的区别1.1 Servlet VS Spring Boot1.2 Spring Boot的 “hello world”代码演示1.2.1 Spring Boot项目的创建1.2.2 hello world1.2.3 发布 2. 框架的…

Python补充笔记2-函数

目录 一、函数​编辑 二、函数的创建和调用​编辑 三、函数的参数传递​编辑 四、参数传递的内存分析​编辑 五、函数的返回值​编辑 六、函数的参数定义 默认值参数 七、函数的参数总结​编辑 八、变量的作用域​编辑 九、递归函数 十、斐波那契数列 十一、知识点总结​编辑 …

A7二极管-ASEMI迷你封装整流管A7二极管

编辑&#xff1a;ll A7二极管-ASEMI迷你封装整流管A7二极管 型号&#xff1a;A7二极管 品牌&#xff1a;ASEMI 封装&#xff1a;SOD-123 正向电流&#xff1a;1A 反向耐压&#xff1a;1000V 芯片大小&#xff1a;60MIL 芯片个数&#xff1a;1 引脚数量&#xff1a;2 …

将监控摄像头的监控视频放在网页或APP中无插件播放

需求 1)将监控摄像头的监控视频集成到网页中&#xff0c;实现无插件播放&#xff0c;监控摄像头可以是海康、大华、TPLink等 2)将监控视频集成到业务平台中播放&#xff0c;包括网页、微信公众号、小程序、APP等形态 3)远程调取内网里的摄像头视频&#xff0c;实现远程监控 实现…

git rebase 合并提交

一. 合并提交步骤 git log --oneline 查看当前提交记录 git rebase -i HEAD~2 选择最后提交的2条记录进行合并进入编辑界面,将c865404的pick改为f, 表示向前合并也就是向cc5a54合并 编辑完之后:wq 保存并退出git rebase --continuegit push --force origin feature/v1.2 推送…