Hadoop-HDFS架构与设计

HDFS架构与设计

  • 一、背景和起源
  • 二、HDFS概述
    • 1.设计原则
      • 1.1 硬件错误
      • 1.2 流水访问
      • 1.3 海量数据
      • 1.4 简单一致性模型
      • 1.5 移动计算而不是移动数据
      • 1.6 平台兼容性
    • 2.HDFS适用场景
    • 3.HDFS不适用场景
  • 三、HDFS架构图
    • 1.架构图
    • 2.Namenode
    • 3.Datanode
  • 四、HDFS数据存储
    • 1.数据块存储
    • 2.副本机制
  • 五、元数据持久化
    • 1.Namenode元数据
    • 2.元数据过程
    • 3.元数据checkpoint
  • 总结
  • 参考

一、背景和起源

HDFS是一个构建在廉价机器上的分布式文件存储系统。最初是Doug Cutting为了解决Nutch网页搜索所面对的海量数据处理问题,根据Google的GFS论文,实现的一个分布式文件存储系统并命名为NDFS(Nutch Distributed File System),之后改名为HDFS(Hadoop Distributed File System),成为Hadoop项目的一部分。

二、HDFS概述

1.设计原则

1.1 硬件错误

硬件错误是比软件异常更容易出现的情况,HDFS由成千上百台廉价服务器组成、每个保存整个文件系统的部分数据。如果任意一台服务器出现硬件错误都会导致HDFS部分不可用,所以针对错误的快速检测和自动修复是HDFS框架需要解决核心问题。

1.2 流水访问

HDFS支持应用程序采用流式访问数据,更注重数据访问的吞吐量而不是数据访问的低延迟问题。

1.3 海量数据

存储在HDFS的数据量都是非常大的,一般都是几百G左右。HDFS支持大文件存储并且具有很高的数据带宽。一个HDFS集群需要控制数百个节点,保存几百万个文件。

1.4 简单一致性模型

简单一致性模型是指一个文件经过创建、写入和关闭之后不会在进行修改。也就是文件是一次写入多次读取,这样简化了数据一致性问题,也是提高数据访问吞吐量的一个基础。

1.5 移动计算而不是移动数据

当需要计算海量数据时,将海量数据传输到计算节点将在网络传输中消耗非常多资源和时间。HDFS因此提供了对应接口可以将计算移动到数据所在节点。

1.6 平台兼容性

HDFS需要兼容各种平台降低平台耦合性。

2.HDFS适用场景

  • 由廉价大量服务器组建
  • 批量访问
  • 高吞吐量数据访问
  • 大文件

3.HDFS不适用场景

  • 随机访问
  • 低延迟访问
  • 小文件

三、HDFS架构图

1.架构图

在这里插入图片描述
HDFS采用master/slave架构。一个HDFS集群由一个Namenode和一定数量的Datanodes组成。HDFS暴露了文件系统的名字空间,用户能够以文件的形式在上面存储数据。
一个典型的部署场景是一台机器上只运行一个Namenode实例,而集群中的其它机器分别运行一个Datanode实例。这种架构并不排斥在一台机器上运行多个Datanode,只不过这样的情况比较少见。

2.Namenode

Namenode是一个中心服务器,负责管理文件系统的名字空间(namespace)以及客户端对文件的访问。Namenode执行文件系统的名字空间操作,比如打开、关闭、重命名文件或目录。它也负责确定数据块到具体Datanode节点的映射。

3.Datanode

Datanode一般是一个节点一个,负责管理它所在节点上的存储。Datanode负责处理文件系统客户端的读写请求,在Namenode的统一调度下进行数据块的创建、删除和复制。从内部看,一个文件其实被分成一个或多个数据块,这些块存储在一组Datanode上

四、HDFS数据存储

在这里插入图片描述
Namenode全权管理数据的存储,Namenode周期性的从集群中每个Datanode接受心跳信号和块状态报告。接收到心跳信号意味着DataNode节点工作正常,块状态报告包含该Datanode上的所有数据块列表。

1.数据块存储

HDFS是一个跨机器可靠的存储超大文件的集群。每个文件被划分为一系列的数据块存储,除了最后一个,所有数据块大小都是相同的。HDFS中的文件都是一次性写入的并且一个时刻只能有一个写入者。

2.副本机制

副本机制是HDFS容错、可靠性和性能的关键,可以指定文件的副本数量。HDFS采用一种为机架感知的策略来改进数据的可靠性、可用性和网络带宽的利用率。

五、元数据持久化

1.Namenode元数据

Namenode保存整个HDFS的元数据信息,这些数据都会被持久化到Fsimage文件和Editlog文件。
Fsimage文件是存放上次checkpoint生成的文件系统元数据。
EditLog 文件存放文件系统的操作日志,也就是用户对目录、文件的每个写操作(包括创建、删除、写入等)都会被记录到 Editlog 文件中。

2.元数据过程

2.1 Namenode启动,如果是第一次会创建Fsimage文件和Editlog文件。如果不是第一次启动,会从本地文件系统加载Fsimage文件和Editlog文件到内存,然后在内存中将两个文件内容进行合并。
2.2 客户端对元数据进行增删改请求
2.3 Namenode将操作记录到Editlog文件
2.4 Namenode将内存元数据更新

3.元数据checkpoint

文件系统的操作记录都会持久化到Editlog文件,随着系统运行会导致有大量的Editlog文件。hdfs会定期对Editlog文件进行日志合并,然后和内存中元数据一起写入到fsimage文件,这个过程就是checkpoint。
由于checkpoint过程会耗时比较长,如果在Active Namenode上执行checkpoint可能会影响文件的正常读写,因此checkpoint通常由Standby Namenode触发,其大概流程为:
3.1 Standby Namenoden向Active Namenode请求下载最新的一批editlog文件
3.2 Standby Namenoden完成editlog文件的下载后,执行所有这些editlog文件中的操作,并更新在内存中记录的元数据信息
3.3 Standby Namenoden将内存中的元数据信息按一定的格式保存到fsimage文件中
3.4 Standby Namenoden将生成的fsimage上传到ann中
3.5 Standby Namenoden和Active Namenode删除各自老的editlog文件和fsimage文件

总结

本文对Hadoop中的HDFS分布式文件系统的架构设计进行了解。hdfs采用常见的主从架构,由集中元数据存储Namenode和分散的数据存储Datanode节点组成,支持高可靠性高吞吐量的批量读取大文件海量数据。

参考

Apache HDFS文档: HDFS架构

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

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

相关文章

【Android】配置Gradle打包apk的环境

目录 生成jks签名文件 配置build.gradle(app) 打包 生成jks签名文件 Java 密钥库(.jks 或 .keystore)是用作证书和私钥存储库的二进制文件。用于为用户设备上安装的 APK 签名的密钥。 详细解释请看官方文档: 为应用…

11月15日星期三今日早报简报微语报早读

1、2023胡润女企业家榜出炉:郭得胜夫人邝肖卿首次成为中国女首富,龙湖吴亚军蝉联中国白手起家女首富; 2、叶剑英元帅夫人吴博逝世,享年106岁; 3、外交部:所谓“联合国军”是冷战产物,于法无据…

计算机毕设 深度学习 大数据 股票预测系统 - python lstm

文章目录 0 前言1 课题意义1.1 股票预测主流方法 2 什么是LSTM2.1 循环神经网络2.1 LSTM诞生 2 如何用LSTM做股票预测2.1 算法构建流程2.2 部分代码 3 实现效果3.1 数据3.2 预测结果项目运行展示开发环境数据获取 最后 0 前言 🔥 这两年开始毕业设计和毕业答辩的要…

【开源】基于Vue和SpringBoot的快乐贩卖馆管理系统

项目编号: S 064 ,文末获取源码。 \color{red}{项目编号:S064,文末获取源码。} 项目编号:S064,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 搞笑视频模块2.3 视…

抖音短视频账号矩阵系统、短视频矩阵源码+无人直播源码开发可打包

抖音短视频账号矩阵系统、短视频矩阵源码无人直播源码开发可打包 矩阵系统源码主要有三种框架:Spring、Struts和Hibernate。Spring框架是一个全栈式的Java应用程序开发框架,提供了IOC容器、AOP、事务管理等功能。Struts框架是一个MVC架构的Web应用程序框…

selenium报错:没有打开网页或selenium.common.exceptions.NoSuchDriverException

文章目录 问题解决方法 问题 当selenium的环境配置没有问题,但在使用selenium访问浏览器时并没有打开网页,或者出现selenium.common.exceptions.NoSuchDriverException报错信息(如下图所示)。 以上问题可能的原因是没有配置chrom…

第三天课程 RabbitMQ

RabbitMQ 1.初识MQ 1.1.同步和异步通讯 微服务间通讯有同步和异步两种方式: 同步通讯:就像打电话,需要实时响应。 异步通讯:就像发邮件,不需要马上回复。 两种方式各有优劣,打电话可以立即得到响应&am…

[云原生案例2.3 ] Kubernetes的部署安装 【多master集群架构高可用 ---- (二进制安装部署)】

文章目录 1. Kubernetes多Master集群高可用方案1.1 多节点Master高可用的实现过程1.2 实现高可用方法 2. 新Master节点的部署2.1 前置准备2.2 系统初始化操作2.2.1 关闭防火墙、selinux和swap分区2.2.2 修改主机名,添加域名映射2.2.3 修改内核参数2.2.4 时间同步 2.…

批量重命名软件推荐 A Better Finder Rename 12最新 for mac

A Better Finder Rename的大量重命名选项被组织成15个直观的类别,涵盖了一个伟大的文件重命名器所期望的所有文本,字符,位置,转换和截断功能。 除此之外,A Better Finder Rename提供了更多高级功能,可以满…

ATFX汇市:10月美国名义CPI年率大降,美元指数创近三月新低

ATFX汇市:据美国劳工部劳动统计局数据,美国10月未季调CPI年率最新值3.2%,低于前值3.7%,低于预期值3.3%;10月未季调核心CPI年率最新值4%,低于前置和预期值的4.1%。名义CPI与核心CPI双双下降,透露…

音频——解析 PCM 数据

文章目录 生成 PCM 数据16bit16bit mono16bit stereo16bit 4 channel16bit 8 channel24bit解析 PCM 数据多通道相同频率解析多通道不同频率解析程序源码生成 PCM 源码解析 PCM 源码生成 PCM 数据 对于多通道的 PCM 数据,其数据格式如下 ch0_data0 ch1_data0 ch2_data0 ch3_d…

目标检测—Yolo系列(YOLOv1/2/v3/4/5/x/6/7/8)

目标检测概述 什么是目标检测? 滑动窗口(Sliding Window) 滑动窗口的效率问题和改进 滑动窗口的效率问题:计算成本很大 改进思路 1:使用启发式算法替换暴力遍历 例如 R-CNN,Fast R-CNN 中使用 Selectiv…

在 Electron上安装better-sqlite3出错

错误问题 一直卡npm install --global windows-build-tools --vs2015 这一步 解决 安装:pnpm install better-sqlite3 --save安装命令 pnpm i -D electron-rebuild 手动运行:node_modules/.bin/electron-rebuild -f -w better-sqlite3 我直接在packa…

Python武器库开发-flask篇之flask框架的安装(二十一)

Flask介绍 Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请求并对请求进行预处理,然后触发Flask框架,开发人员基于Flask框架提供的功能对请求进…

Stable Diffusion (version x.x) 文生图模型实践指南

前言:本篇博客记录使用Stable Diffusion模型进行推断时借鉴的相关资料和操作流程。 相关博客: 超详细!DALL E 文生图模型实践指南 DALLE 2 文生图模型实践指南 目录 1. 环境搭建和预训练模型准备环境搭建预训练模型下载 2. 代码 1. 环境搭建…

redis基线检查

1、禁止使用 root 用户启动 | 访问控制 描述: 使用root权限来运行网络服务存在较大的风险。Nginx和Apache都有独立的work用户,而Redis没有。例如,Redis的Crackit漏洞就是利用root用户权限替换或增加authorize_keys,从而获取root登录权限。 加固建议: 使用root切换到re…

Docker - DockerFile

Docker - DockerFile DockerFile 描述 dockerfile 是用来构建docker镜像的文件!命令参数脚本! 构建步骤: 编写一个dockerfile 文件docker build 构建成为一个镜像docker run 运行脚本docker push 发布镜像(dockerhub&#xff0…

Kyligence 入选 Gartner® 2023 客户之声报告,高分获评“卓越表现者”

近日,Gartner 发布了最新的《2023 分析和商业智能平台“客户之声”报告》(Voice of the Customer for Analytics and Business Intelligence Platforms, 2023, October 2023)。跬智信息(Kyligence)成功入选该报告,并凭借 4.7 分&a…

每日一题----昂贵的婚礼

#include <iostream> #include <algorithm> #include <cstring> #include <queue> #include <vector> using namespace std; //本题酋长的允诺也算一个物品,最后一定要交给酋长&#xff0c;那么等级不能超过酋长的等级范围const int N 150 * 15…

想买GPT4会员却只能排队?来看看背后的故事!

文章目录 &#x1f9d0; 为什么要进候选名单&#xff1f;&#x1f50d; 究竟发生了什么&#xff1f;&#x1f62e; IOS端还能买会员&#xff01;&#x1f914; 网页端为啥不能订会员&#xff1f;第一点&#xff1a;防止黑卡消费第二点&#xff1a;当技术巨头遇上资源瓶颈&#…