HDFS架构

news2024/10/7 10:20:27
  • HDFS 是一个主从 Master/Slave 架构
  • 一个 HDFS 集群包含一个 NameNode,这是一个 Master Server,用来管理文件系统的命名空间,以及协调客户端对文件的访问
  • 一个 HDFS 集群包含多个 DataNode,用来存储数据
  • HDFS 会对外暴露一个文件系统命名空间,并允许用户数据以文件的形式进行存储
  • 在内部,一个文件被分成多个块并且这些块被存储在一组 DataNode 上
    在这里插入图片描述

NameNode

  • 文件的元数据采用集中式存储方案存放在 NameNode 当中
  • NameNode 负责执行文件系统命名空间的操作,如打开、关闭、重命名文件和目录
  • NameNode 同时也负责将数据块映射到对应的 DataNode 中

DataNode

  • DataNode 是文件系统的工作结点
  • DataNode 根据需要存储并检索数据块,并且定期向 NameNode 发送他们所存储的块的列表
  • 文件数据块本身存储在不同的 DataNode 当中,DataNode 可以分布在不同机架上
  • DataNode 负责服务文件系统客户端发出的读/写请求
  • DataNode 同时也负责接收 NameNode 的指令来进行数据块的创建、删除和复制
    Client
  • HDFS 的 Client 会分别访问 NameNode 和 DataNode 以获取文件的元数据信息及真实数据内容
  • HDFS 集群的 Client 将直接访问 NameNode 和 DataNode,相关数据会直接从 NameNode 或者 DataNode 传送到客户端;
    NameNode 和 DataNode 都是被设计为在普通 PC 上运行的软件程序
  • HDFS 是用 Java 语言实现的,任何支持 Java 语言的机器都可以运行 NameNode 或者 DataNode
  • Java 语言本身的可移植性意味着 HDFS 可以被广泛地部署在不同的机器上
  • 一个典型的部署就是,集群中的一台专用机器运行 NameNode,集群中的其他机器每台运行一个 DataNode 实例
  • 该架构并不排除在同一台机器上运行多个 DataNode 实例的可能,但在实际的部署中很少会这么做;
    单一 NameNode 的设计极大地简化了集群的系统架构,它使得所有 HDFS 元数据的仲裁和存储都由单一 NameNode 来决定,避免了数据不一致性的问题

HDFS 数据复制

HDFS 可以跨机架、跨机器,可靠地存储海量文件。
HDFS 把每个文件存储为一系列的数据块,除了最后一个数据块以外,一个文件的所有数据块都是相同大小的。
HDFS 为了容错,一个文件的数据块会被复制。对于每个文件来说,文件块大小和复制因子都是可配置的。应用程序可以声明一个文件的副本数。复制因子可以在文件创建时声明,并且可以在以后修改。
通用场景下,当复制因子是 3 时,HDFS 的放置策略:

  • 副本1放在本地机架的某个结点上
  • 副本2放在本地机架的不同结点上
  • 副本3放在不同机架的不同结点上

上述策略的优点:

  1. 该策略并不影响数据可靠性和可用性,因为机架不可用的概率要比结点不可用的概率低很多.
  2. 该策略与把3个副本放在3个不同机架上的策略相比,减少了机架之间的写操作,从而提升了写性能.
  3. 该策略减少了读取数据时的聚合网络带宽,毕竟一个数据块是放置在2个不同的机架上,而不是 3 个.

上述策略的缺点:
该策略没有均匀地分布副本,三分之二的副本在一个机架上,另三分之一的副本分布在其他机架上.

NameNode和DataNode的关系

  • NameNode 控制所有的数据块的复制决策,如下图所示:
    在这里插入图片描述它周期性地从集群的 DataNode 中收集心跳和数据块报告:
    收集到心跳意味着 DataNode 正在正常提供服务
    收集到的数据块报告会包含相应 DataNode 上的所有数据块列表

  • DataNode主动发送心跳:
    当一切运行正常时,DataNode 会周期性发送心跳信息给 NameNode(默认是每 3 秒钟一次).

  • NameNode主动监测心跳:
    如果 NameNode 在约定的时间内没有收到心跳信息(默认是 10 分钟);
    会认为 DataNode 出现了问题,就会把该 DataNode 从集群中移除,并且启动一个进程去恢复数据.

  • DataNode节点挂掉的影响:
    DataNode 脱离集群的原因有多种:如硬件故障、主板故障、电源老化和网络故障等.

  1. 对于 HDFS 来说,丢失一个 DataNode 意味着丢失了存储在它的硬盘上的数据块的副本.
  2. 假如在任意时间总有超过一个副本存在,故障将不会导致数据丢失;
    当一个硬盘故障时,HDFS 会检测到存储在该硬盘上的数据块的副本数量低于要求,然后主动创建需要的副本,以达到满副本数状态.

机架感知

机架感知的概念:
告诉Hadoop,集群中哪台机器属于哪个机架
机架感知的目的:

  1. 作业计算本地化
  2. 正确执行副本放置策略
    机架感知的配置:
    默认情况下,Hadoop机架感知是没有启用的,需要在NameNode机器的core-site.xml里配置一个选项:
<property>  
    <name>topology.script.file.name</name>
    <value>/path/to/script脚本</value>
</property>

这个配置选项的value指定为一个可执行程序,通常为一个脚本,该脚本接受一个参数,输出一个值。
接受参数—datanode机器的ip地址.
输出的值—该ip地址对应的datanode所在的rackID,例如"/rack1".
NameNode启动时,会判断该配置选项是否为空–如果非空,则表示已经启用机架感知的配置:
此时namenode会根据配置寻找该脚本,并在接收到每一个datanode的心跳时,
将该datanode的ip地址作为参数传给该脚本运行,并将得到的输出作为该datanode所属的机架,保存到内存的一个map中.

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

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

相关文章

Ubuntu服务器创建新用户及解决新用户登录Access denied问题

目录 Ubuntu服务器创建新用户及解决新用户登录Access denied问题创建账号步骤创建用户只创建用户添加用户到sudo组 允许账号远程连接重启ssh服务 删除账号要删除用户而不删除用户文件如果要删除并且删除用户的家目录和邮件 查询指令查看所有用户查询特定用户账户信息查看用户组…

如何下载钉钉群直播回放:完整步骤解析

在当今快节奏的商业和教育环境中&#xff0c;钉钉群直播已经成为了沟通和学习的重要工具。直播结束后&#xff0c;很多观众都希望回顾内容&#xff0c;但却不知如何开始。如果你错过了实时直播&#xff0c;或者只是想再次观看精彩的演讲和讨论&#xff0c;那么下载钉钉群直播回…

商超物联网方案-人员和资产管理配置指南~配置人员和资产管理示例

配置人员和资产管理示例 组网图形 图1 配置人员和资产管理示例组网图 业务需求组网需求数据规划配置思路配置注意事项操作步骤配置文件 业务需求 某商场经常发现资产遗失或寻找不到。为降低财产损失&#xff0c;商场希望能统一监控资产所在位置和移动路径&#xff0c;以便掌握…

2024年Q1季度白酒行业数据分析:消费升级下,白酒均价上涨

前段时间&#xff0c;飞天茅台被曝批发参考价再次下探。而从线上市场的整体情况来看&#xff0c;白酒行业均价同比去年却有所上涨。鲸参谋数据显示&#xff0c;白酒均价在750元左右&#xff0c;同比去年上涨了14%。 尽管白酒行业均价有所上涨&#xff0c;但今年第一季度表现不…

java设计模式 -- 工厂模式

1、基本概念 工厂模式&#xff08;Factory Pattern&#xff09;是 Java 中最常用的设计模式之一&#xff0c;这种类型的设计模式属于创建型模式&#xff0c;它提供了一种创建对象的最佳方式。 工厂模式提供了一种创建对象的方式&#xff0c;而无需指定要创建的具体类。 工厂…

Spark-机器学习(8)分类学习之随机森林

在之前的文章中&#xff0c;我们学习了分类学习之支持向量机决策树支持向量机&#xff0c;并带来简单案例&#xff0c;学习用法。想了解的朋友可以查看这篇文章。同时&#xff0c;希望我的文章能帮助到你&#xff0c;如果觉得我的文章写的不错&#xff0c;请留下你宝贵的点赞&a…

工业交换机的封装与防尘防水设计

随着工业自动化程度的不断提升&#xff0c;工业交换机作为工业网络的核心设备之一&#xff0c;其稳定可靠的通信性能对于生产环境至关重要。而在恶劣的工业环境中&#xff0c;尘土、湿气等因素常常会对设备的稳定性和持久性造成挑战。因此&#xff0c;工业交换机的封装设计和防…

21 JavaScript 学习:一些误区和易错点

赋值运算符应用错误 在 JavaScript 中&#xff0c;赋值运算符&#xff08;Assignment Operators&#xff09;用于给变量赋值。常见的赋值运算符包括 、、-、*、/ 等。如果赋值运算符的应用不正确&#xff0c;可能会导致程序出现错误或产生意外的结果。 以下是一些常见的赋值运…

有趣的 CSS 图标整合技术!sprites精灵图,css贴图定位

你好&#xff0c;我是云桃桃。 一个希望帮助更多朋友快速入门 WEB 前端的程序媛。 云桃桃-大专生&#xff0c;一枚程序媛&#xff0c;感谢关注。回复 “前端基础题”&#xff0c;可免费获得前端基础 100 题汇总&#xff0c;回复 “前端工具”&#xff0c;可获取 Web 开发工具合…

ubuntu20.04安装RabbitMQ 3.11.19+Erlang 25.3.1

1、检查RabbitMQ、Erlang版本 Erlang Version Requirements | RabbitMQ 2、ubuntu20.04对应的是 focal 3、下载安装Erlang 下载地址&#xff1a;http://packages.erlang-solutions.com/erlang/debian/pool/ sudo dpkg -i esl-erlang_25.3-1~ubuntu~focal_amd64.deb sudo apt…

微服务使用SockJs+Stomp实现Websocket 前后端实例 | Vuex形式断开重连、跨域等等问题踩坑(二)

大家好&#xff0c;我是程序员大猩猩。 上次我们实践了&#xff0c;Java后端如何完成SockJSStomp的配置实现。 微服务使用SockJsStomp实现Websocket 前后端实例 | Vuex形式断开重连、跨域等等问题踩坑&#xff08;一&#xff09; 那么今天我们做一下web vue端的是如何来实现…

Docker 中安装单体架构 MySQL 的 Shell 脚本

该脚本用于实现 root 用户在 Linux 操作系统下的 Docker 中安装单体架构 MySQL Shell 脚本 Git 仓库地址 Gitee&#xff1a;https://gitee.com/tongchaowei/common-shell/tree/main/root 执行脚本 bash ./docker-mysql-install-single.sh需要注意的 该脚本会先检查是否安…

华为配置mDNS网关示例(AP与AC间二层转发)

华为配置mDNS网关示例&#xff08;AP与AC间二层转发&#xff09; 组网图形 图1 配置mDNS网关组网图 组网需求配置思路操作步骤配置文件 组网需求 如图1所示&#xff0c;某企业的移动终端通过WLAN连接网络&#xff0c;AP_1和AP_2分别与AC之间采用二层转发。部门1和部门2分别属…

Elasticsearch中对文章进行索引和查重

解决思路 要在Elasticsearch中对文章进行索引和查重&#xff0c;可以按照以下步骤操作&#xff1a; 安装Elasticsearch并启动服务。 安装Python的Elasticsearch客户端库&#xff0c;可以使用pip install elasticsearch命令进行安装。 编写Python代码&#xff0c;使用Elastic…

照片特定风格变换Stylar AI;GPT-4V开源替代方案InternVL;纯C/C++实现的Stable Diffusion库;基于AI的数据爬取

✨ 1: AI Photo Filter Stylar AI是一款功能强大的AI图像编辑与设计工具&#xff0c;提供无与伦比的图片组合和风格控制。 AI Photo Filter&#xff0c;简言之&#xff0c;就是使用人工智能技术来改善或改变图片的风格、质量和元素组合的一种工具。 如果你想将你的照片转换成…

如何看待Agent AI智能体的未来

Agent AI智能体的未来 Agent AI智能体&#xff0c;也称为自主代理或智能代理&#xff0c;是指能够自主执行任务、与环境交互并作出决策的计算机程序或系统。这些智能体通常具备学习、适应和推理的能力&#xff0c;能够在复杂和不确定的环境中执行任务。随着技术的进步&#xf…

爬虫自动调用shell通过脚本运行scrapy爬虫(crawler API)

一、爬虫时如何同时调用shell 1)终端cd项目>>scrapy crawl example 2)打开example.py import scrapy from scrapy.shell import inspect_response#引入shellclass ExampleSpider(scrapy.Spider):name "example"allowed_domains ["example.com"]…

【EI会议|稳定检索】2024年传感技术与图像处理国际会议(ICSTIP 2024)

2024 International Conference on Sensing Technology and Image Processing 一、大会信息 会议名称&#xff1a;2024年传感技术与图像处理国际会议会议简称&#xff1a;ICSTIP 2024收录检索&#xff1a;提交Ei Compendex,CPCI,CNKI,Google Scholar等会议官网&#xff1a;htt…

开源代码分享(26)-考虑预测不确定性的综合能源调度优化

参考文献&#xff1a; [1]崔杨,周慧娟,仲悟之,等.考虑源荷两侧不确定性的含风电电力系统低碳调度[J].电力自动化设备,2020,40(11):85-93.DOI:10.16081/j.epae.202009019. 1.基本原理 考虑碳交易机制能够有效提高风电消纳量&#xff0c;但是随着风电并网容量的增大&#xff0c…

【酱浦菌-爬虫项目】python爬取彼岸桌面壁纸

首先&#xff0c;代码导入了两个库&#xff1a;requests和parsel。这些库用于处理HTTP请求和解析HTML内容。 然后&#xff0c;它定义了一个变量url&#xff0c;指向网站’樱花2024年4月日历风景桌面壁纸_高清2024年4月日历壁纸_彼岸桌面’。 接下来&#xff0c;设置了一个HTT…