第3章 分布式文件系统HDFS

2023-11-16

3.1 分布式文件系统

3.1.1 计算机集群结构

在这里插入图片描述

3.1.2 分布式文件系统的结构

image-20200921105615673

两类节点

1.主节点(Master Node) 或称为 名称节点(NameNode)

​ 负责文件和目录的创建、删除和重命名等,同时管理着数据节点和文件块的映射关系。保存元数据(关于数据的数据)。

2.从节点(Slave Node) 或称为 数据节点(DataNode)

​ 负责数据的存储和读取。

3.采用多副本存储

​ 防止计算机集群中的节点可能发生故障,保证数据的完整性。


3.1.3 分布式文件系统的设计需求

1.透明性

2.并发控制

3.文件复制

4.硬件和操作系统的异构性

5.可伸缩性

6.容错

7.安全


3.2 HDFS简介

实现目标:

1.兼容廉价的硬件设备

2.流数据读写

3.大数据集

4.简单的文件模型:一次写入,多次读取。

5.强大的跨平台兼容性

局限性:

1.不适合低延迟数据访问

2.无法高效存储大量小文件

3.不支持多用户写入及任意修改文件


3.3 HDFS的相关概念

3.3.1 块

采取块的好处:

1.支持大规模文件存储

2.简化系统设计

3.适合数据备份

3.3.2 名称节点和数据节点

image-20200921105514002

名称节点的启动:

​ 在名称节点启动的时候,它会将FsImage文件中的内容加载到内存中,之后再执行 EditLog文件中的各项操作,使得内存中的元数据和实际的同步,存在内存中的元数 据支持客户端的读操作。 一旦在内存中成功建立文件系统元数据的映射,则创建一个新的FsImage文件和一个 空的EditLog文件。


3.3.3 第二名称节点

解决名称节点运行期间EditLog不断变大的问题。

第二名称节点是HDFS架构中的一个组成部分,它是用来保存名称节点中对HDFS 元 数据信息的备份,并减少名称节点重启的时间。SecondaryNameNode一般是单独运行在一台机器上。

image-20200921105550551


3.4 HDFS体系结构

3.4.1 HDFS体系结构概述

在这里插入图片描述


3.4.2 HDFS命名空间管理

1.HDFS的命名空间包含目录、文件和块。

2.在HDFS1.0体系结构中,在整个HDFS集群中只有一个命名空间,并且只有唯一一个名称节点,该节点负责对这个命名空间进行管理 。

3.HDFS使用的是传统的分级文件体系,因此,用户可以像使用普通文件系统一样,创建、删除目录和文件,在目录间转移文件,重命名文件等


3.4.3 通信协议

• HDFS是一个部署在集群上的分布式文件系统,因此,很多数据需要通过网络进行传输

• 所有的HDFS通信协议都是构建在TCP/IP协议基础之上的

• 客户端通过一个可配置的端口向名称节点主动发起TCP连接,并使用客户端协议与名称节点进行交互

• 名称节点和数据节点之间则使用数据节点协议进行交互

• 客户端与数据节点的交互是通过RPC(Remote Procedure Call)来实现的。在设计上,名称节点不会主动发起RPC,而是响应来自客户端和数据节点的RPC请求


3.4.4 HDFS体系结构的局限性

(1)命名空间的限制:名称节点是保存在内存中的,因此,名称节点能够容纳的对象(文件、块)的个数会受到内存空间大小的限制。

(2)性能的瓶颈:整个分布式文件系统的吞吐量,受限于单个名称节点的吞吐量。

(3)隔离问题:由于集群中只有一个名称节点,只有一个命名空间,因此,无法对不同应用程序进行隔离。

(4)集群的可用性:一旦这个唯一的名称节点发生故障,会导致整个集群变得不可用。


3.5 HDFS的存储原理

3.5.1 数据存储策略

1.数据存放

image-20200921105311035

副本的放置策略

默认的冗余复制因子为3。

第一个副本:放置在上传文件的数据节点;如果是集群外提交,则随机挑选一台磁盘不太满、CPU不太忙的节点

第二个副本:放置在与第一个副本不同的机架的节点上

第三个副本:与第一个副本相同机架的其他节点上

更多副本:随机节点

2.数据读取

调用API获取机架ID。

3.数据复制

采用流水线复制策略,通过请求获得数据节点列表。

3.5.2 数据错误与恢复

1.名称节点出错

两种机制:1)把名称节点上的元数据信息同步存储到其他文件系统(如远程挂载的网络文件系统NFS)。

​ 2)运行一个第二名称节点,当作备份。

2.数据节点出错

依靠‘心跳’信息,判断是否宕机。宕机后会补充备份。

3.数据出错

对数据包进行校验(使用md5和shal)。


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

第3章 分布式文件系统HDFS 的相关文章

  • 合并hdfs文件

    我在 HDFS 中有 1000 多个可用文件 命名约定为1 fileName txt to N fileName txt 每个文件的大小为 1024 MB 我需要将这些文件合并到一个 HDFS 中 并保持文件的顺序 说5 FileName
  • 如何在java客户端中获取HDFS服务器元数据信息?

    我需要构建一个实用程序类来测试与 HDFS 的连接 测试应显示 HDFS 的服务器端版本和任何其他元数据 虽然有很多可用的客户端演示 但没有关于提取服务器元数据的内容 有人可以帮忙吗 请注意 我的客户端是远程 java 客户端 没有 had
  • 本文中的“本地数据缓存”是什么意思?

    摘自以下正文 http developer yahoo com hadoop tutorial module2 html 它提到顺序可读的大文件不适合本地缓存 但我不明白本地是什么意思 我认为有两个假设 一是Client缓存来自HDFS的数
  • getCacheFiles() 和 getLocalCacheFiles() 是否相同?

    As 获取本地缓存文件 http hadoop apache org docs r2 3 0 api org apache hadoop mapreduce JobContext html getLocalCacheFiles 已被弃用 我
  • 如何从 HIVE 中的日期减去月份

    我正在寻找一种方法来帮助我从 HIVE 中的日期中减去月份 我有个约会2015 02 01 现在我需要从这个日期减去 2 个月 这样结果应该是2014 12 01 你们能帮我一下吗 select add months 2015 02 01
  • Hive 数据存储在哪里?

    我对配置单元存储数据的位置有点困惑 它将数据存储在 HDFS 还是 RDBMS 中 Hive Meta 存储是否使用 RDBMS 来存储 Hive 表元数据 提前致谢 Hive 数据存储在其中之一Hadoop 兼容文件系统 https cw
  • 是否可以将数据导入Hive表而不复制数据

    我将日志文件以文本形式存储在 HDFS 中 当我将日志文件加载到 Hive 表中时 所有文件都会被复制 我可以避免所有文本数据存储两次吗 编辑 我通过以下命令加载它 LOAD DATA INPATH user logs mylogfile
  • Hadoop 框架中使用的属性的完整列表

    我正在对 Hadoop 框架进行一些研究 我想问一下框架中可以使用的属性 例如 io sort mb io sort record percent etc 我可以参考这个框架的整个属性列表吗 非常希望有人能帮助我 另外 我想问一下 io s
  • 如何将小型 ORC 文件组合或合并为较大的 ORC 文件?

    SO 和网络上的大多数问题 答案都讨论使用 Hive 将一堆小 ORC 文件合并为一个较大的文件 但是 我的 ORC 文件是按天分隔的日志文件 我需要将它们分开 我只想每天 汇总 ORC 文件 HDFS 中的目录 我最有可能需要用 Java
  • 全新安装时的 HDFS 空间使用情况

    我刚刚安装了 HDFS 并启动了该服务 并且已使用空间已经超过800MB 它代表什么 hdfs dfs df h Filesystem Size Used Available Use hdfs quickstart cloudera 802
  • 解析数百万个小 XML 文件

    我有 1000 万个小 XML 文件 300KB 500KB 我在 Mapreduce 中使用 Mahaout 的 XML 输入格式来读取数据 并使用 SAX 解析器进行解析 但处理速度非常慢 使用输入文件的压缩 lzo 有助于提高性能吗
  • 如何在 Amazon EMR 上重新启动 HDFS

    我对 Amazon EMR 集群上的 HDFS 设置进行了一些更改 我想重新启动名称节点和数据节点以使更改生效 我无法在名称节点 主节点 和数据节点上找到任何启 动和停止脚本来执行此操作 应该怎样重启集群呢 在 EMR4 上 在主控主机上运
  • 崩溃的 HDFS 客户端 - 如何关闭剩余的打开文件?

    我的 Hadoop 应用程序遇到一些问题 每当我的客户端在未关闭文件的情况下退出 例如由于崩溃 时 Hadoop 中就会有打开的文件从未关闭 当我尝试重新启动客户端时 重新打开这些文件以附加数据时会失败 请参阅下面的异常消息 有没有一种好方
  • 从 hdfs 读取 ocr 文件后令人难以置信地触发数据帧

    我在 Ambari 上使用 Spark 2 1 1 和 hadoop 2 6 时遇到问题 我首先在本地计算机上测试了我的代码 单节点 本地文件 一切都按预期工作 from pyspark sql import SparkSession sp
  • 如何更改 Spark 程序的 HDFS 复制因子?

    我需要将 Spark 程序的 HDFS 复制因子从 3 更改为 1 在搜索时 我想出了 spark hadoop dfs replication 属性 但是通过查看https spark apache org docs latest con
  • 将文件从 HDFS 复制到本地计算机

    我在尝试将文件从 HDFS 文件系统 下载 到本地系统时遇到问题 即使相反的操作没有问题 注意 文件存在于 HDFS 文件系统的指定路径上 这是一个代码片段 Configuration conf new Configuration conf
  • 访问 HDFS 中文件的 URI

    我已经使用 Ambari 设置了一个包含 3 个节点的集群 现在我想使用客户端应用程序访问 HDFS 中的文件 我可以在 Ambari 的数据节点下找到所有节点 URI 我需要使用什么 URI 端口来访问文件 我使用的是默认安装过程 默认端
  • Hadoop 顺序数据访问

    根据 Hadoop 权威指南 HDFS 是一个文件系统 设计用于存储非常大的文件 流式或顺序数据访问模式 什么是流式或顺序数据访问 它如何减少磁盘的寻道时间 这并不是 Hadoop 特有的 顺序访问模式是指按顺序读取数据 通常是从开始到结束
  • 如何将 Jar 文件传递​​到 OOZIE shell 节点中的 shell 脚本

    您好 我在 oozie shell 操作工作流程中执行的脚本中运行 java 程序时遇到以下错误 Stdoutput 2015 08 25 03 36 02 636 INFO pool 1 thread 1 ProcessExecute j
  • MiniDFSCluster UnsatisfiedLinkError org.apache.hadoop.io.nativeio.NativeIO$Windows.access0

    做时 new MiniDFSCluster Builder config build 我得到这个异常 java lang UnsatisfiedLinkError org apache hadoop io nativeio NativeIO

随机推荐

  • go的配置文件

    go湖南老乡 2018 2 5 17 55 54 package main import github com kylelemons go gypsy yaml fmt type reply to findnode neighbors st
  • 初学者用Eclipse和IDEA哪个好用一点?

    idea 毫无疑问 它已经强大到各处吊打eclipse了 新人更是推荐idea 它的语法提示十分智能 假如你写了一段很傻的代码 它会提示你使用更优写法 只需要点一下就可以自动变成更优写法了 普通for自动转增强for 自动转lambda语法
  • SpringBoot版本升级 2.4.5-->2.7.9 遇到的问题

    原项目功能部署 SpringCache Swagger 项目Boot版本升级遇到的问题 问题一 无法启动 报错信息为 org springframework context ApplicationContextException Faile
  • 查看Mysql表的引擎

    show create table 表名
  • 三.数 据 链 路 层

    数据链路层是实现设备之间通信的非常重要的一层 数据链路层的作用 数据链路层使用的信道 1 使用点对点信道的数据链路层 1 1 数据链路和帧 链路 link 是一条无源的点到点的物理线路段 中间没有任何其他的交换结点 一条链路只是一条通路的一
  • 数据分析之-pandas

    1 pandas库安装导入 windows下和linux下都可以使用pip安装 安装之前最好把pip升级到最新版 python m pip install upgrade pip 升级pip pip install pandas 安装pan
  • myabtis-plus 代码生成器自定义模板

    mybatis plus代码生成器默认生成的controller是下面这样的 一个空的controller RestController RequestMapping sysUserRoleRelevance public class Sy
  • JavaScript中浮点数精确值问题

    js中规定安全整数的范围是 2的53次方至2的53次方 也就是 9007199254740992 9007199254740992 在JavaScript中0 1 0 2不等于0 3的问题 0 1 0 2 0 300000000000000
  • 深度学习系统为什么容易受到对抗样本的欺骗?

    转自 https zhuanlan zhihu com p 89665397 本文作者 kurffzhou 腾讯 TEG 安全工程师 最近 Nature发表了一篇关于深度学习系统被欺骗的新闻文章 该文指出了对抗样本存在的广泛性和深度学习的脆
  • LeetCode 7. 整数反转(C语言)

    Description 给出一个 32 位的有符号整数 你需要将这个整数中每位上的数字进行反转 示例 1 输入 123 输出 321 示例 2 输入 123 输出 321 示例 3 输入 120 输出 21 注意 假设我们的环境只能存储得下
  • 【01规划】POJ 3621 Sightseeing Cows

    POJ 3621 Sightseeing Cows 题意 给定一张 n 个点 m 条边的有向图 每个点都有一个权值 f i 每条边都有一个权值 t i 求图中的一个环 使 环上各点的权值之和 除以 环上各边的权值之和 最大 输出这个最大值
  • MVC 实现登录功能

    1 表单 2 数据层 3 逻辑层 4 servlet分发控制器
  • 高校巡讲总结—侯伯薇讲师

    这个月里面 借助CSDN的平台 在三所高校中做了 程序员修炼之路 的巡讲 在其中讲述了自己的一些经历 并和同学们聊了学习 思考和分享这三个要素 三所高校各自有各自的特点 感觉很有意思 一一叙述如下 首先 第一站是在辽宁工程技术大学 位于葫芦
  • 总结Windows下安装WSL与升级WSL2的方法

    目录 1 安装WSL1的方法 2 安装WSL2的方法 3 升级WSL1到WSL2的方法 1 打开win10的设置 搜索windows功能 打开启用或者关闭Windows功能 2 勾选以下2个地方 并重启 3 下载WSL2升级包 并点击安装
  • JS原型

    原型的概念 实例对象中 proto 是原型 是一个属性也是一个对象 是给浏览器使用的 是不标准的 这个叫隐式原型 构造函数中的prototype是原型 是一个属性也是一个对象 是给程序员用的 是标准的 proto 原型是浏览器使用的 有些浏
  • JDBC-数据库连接字符串

    SQLSERVER Connection conn DriverManager getConnection jdbc sqlserver localhost 1433 sa Oracle Connection conn DriverMana
  • 什么是rem单位和em单位?它们有什么区别?

    聚沙成塔 每天进步一点点 专栏简介 rem 和 em 单位 rem 单位 Root Em em 单位 区别总结 写在最后 专栏简介 前端入门之旅 探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到
  • vue使用echarts与echarts-gl实现3d地图与 3d柱状图

    目录 前言 一 下载echarts与echarts gl 二 vue引入与页面使用 1 引入 2 页面引入echarts gl 三 下载地图数据 四 使用地图 1 html初始化地图放入位置 2 data创建变量 3 创建地图 4 钩子函数
  • remote: Support for password authentication was removed on August 13, 2021

    1 github在2021年8月13日这天搞事情 如果这天你提交了github代码报错如下 remote Support for password authentication was removed on August 13 2021 P
  • 第3章 分布式文件系统HDFS

    3 1 分布式文件系统 3 1 1 计算机集群结构 3 1 2 分布式文件系统的结构 两类节点 1 主节点 Master Node 或称为 名称节点 NameNode 负责文件和目录的创建 删除和重命名等 同时管理着数据节点和文件块的映射关