大数据从入门到精通(超详细版)之HDFS详解,学不会算我输!!!

2023-10-31

前言

嗨,各位小伙伴,恭喜大家学习到这里,不知道关于大数据前面的知识遗忘程度怎么样了,又或者是对大数据后面的知识是否感兴趣,本文是《大数据从入门到精通(超详细版)》的一部分,小伙伴们如果对此感谢兴趣的话,推荐大家按照大数据学习路径开始学习哦。

以下就是完整的学习路径哦。

↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓

大数据从入门到精通文章体系!!!!!!!!!!!!!!

↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑

推荐大家认真学习哦!!!

前面的文章里面我们已经对Hadoop大数据框架已经有了初步的认识了,我们知道了Hadoop框架主要作用于大数据领域,完成数据的海量存储,对海量数据完成高速的存储。这些功能的完成得益于其内部的众多组件。

今天我们介绍其核心组件之一,HDFS。


在这里插入图片描述

什么是HDFS

HDFS(Hadoop Distributed File System)是 Hadoop 的分布式文件系统,用于存储大规模数据集并在 Hadoop 集群中进行分布式处理。

这里怎么理解呢?

在这里插入图片描述

就类似于这种关系,所有用户,系统等等都会产生数据,这些数据会存储在哪里呢,就存储在HDFS当中,HDFS作为Hadoop集群框架当中存储数据的空间,Hive讲HDFS当中的数据转为可分析的结构化数据,Yarn负责对这些数据的任何操作,这三大组件各司其职,完成了整个Hadoop框架的运行,完成了大数据相关的业务流程

HDFS 的设计目标是在廉价的硬件上提供高容错性、高吞吐量的数据存储和处理能力。它是一种被设计成适合运行在通用硬件上的分布式文件系统。由很多服务器联合起来实现其功能的系统,集群中的服务器有各自的角色。

我们先搞清楚一个重要的概念:分布式

什么是分布式

相信各位小伙伴都或多或少听过过分布式这个概念,到底啥是分布式呢?

在这里插入图片描述

先来看看最官方的解释:

分布式(Distributed)是指将计算任务或数据分散到多台计算机或服务器上进行处理和存储的计算模型。在分布式系统中,多台计算机通过网络进行通信和协调,共同完成任务或存储数据。

分布式系统的主要目标是提高计算能力、可靠性、扩展性和容错性,以应对大规模的计算和数据处理需求。与传统的集中式系统相比,分布式系统具有以下特点:

  1. 并行计算:分布式系统中的计算任务可以同时在多台计算机上并行执行,从而加速任务完成时间。每台计算机只需要处理部分任务或数据,各自独立运行,因此可以充分利用计算资源。
  2. 分布式存储:数据可以分散存储在多台计算机或服务器的不同位置上。分布式存储系统可以提供更大的存储容量,并支持数据冗余和备份,从而提高数据的可靠性和可用性。
  3. 容错性:分布式系统通过在多台计算机之间复制数据或任务,使得即使某个计算机发生故障,整个系统仍然可以继续工作。当一个节点故障时,其他节点可以接替其工作,从而保证了系统的稳定性和可靠性。
  4. 可扩展性:通过添加额外的计算机节点,分布式系统可以实现水平扩展,以适应更大规模的计算需求。系统的计算能力和存储容量可以随着需求的增长而线性扩展,满足不断增长的数据处理要求。

是不是很多话呀~~~

其实分布式总结下来就一句话:多台不同的计算机完成同一个任务

在这里插入图片描述

HDFS的分布式

说我了分布式,接下来我们说一下什么是HDFS的分布式存储。

涉及到分布式,那么肯定涉及到多台电脑,那么这么多台电脑是怎么协调工作,完成大量数据的存储的呢?

这里我们就需要介绍一下HDFS集群的三种节点了。

分别是NameNode , DataNode , SecondaryNameNode

NameNode

  1. 元数据管理(Metadata Management)NameNode 负责管理整个文件系统的命名空间和元数据,包括文件和目录的创建、删除、重命名等操作。它维护了文件与数据块的映射关系,记录每个文件被分成哪些数据块以及这些数据块存储在哪些数据节点上。

  2. 数据节点管理(DataNode Management):NameNode 跟踪监视数据节点的状态,包括数据节点的存活状态、容量使用情况等。它**定期从数据节点接收心跳信息,并通过心跳来确认数据节点的可用性。如果一个数据节点长时间未发送心跳,NameNode 将视其为不可用的节点。**

  3. 块位置管理(Block Location Management)NameNode 记录每个数据块的位置信息,即数据块在哪些数据节点上的副本。客户端在访问文件时,可以向 NameNode 查询获取数据块的位置信息,然后直接与数据节点通信进行数据的读取或写入。

    文章的后半部分会详细介绍HDFS文件的分块,耐心看完哦。

  4. 故障处理(Fault Tolerance):NameNode 负责监测数据节点的故障,并根据副本的数量和副本放置策略来确保数据的可靠性和容错性。如果某个数据块的一个副本损坏或数据节点故障,NameNode 将负责复制新的副本或指定其他数据节点上的副本。

NameNode这四个作用非常重要,他可以算做一个HDFS集群的脑部,协调整个身体(集群)进行运作。

DataNode

DataNode 执行以下主要功能:

  1. 数据存储:DataNode 负责存储实际的数据块。它接收来自客户端或其他 DataNode 的数据写入请求,并将数据块保存在本地磁盘上。数据块通常以本地文件的形式存在,DataNode 使用一种称为本地文件系统(Local File System)的方式来管理这些文件。

    存储数据是作为DataNode最主要的功能。

  2. 数据块复制:DataNode 被要求根据 HDFS 的副本策略,通过与其他 DataNode 之间进行数据传输,复制和同步数据块的副本。每个数据块的副本数量由配置参数决定,默认情况下为三个。DataNode 与其他 DataNode 之间通过高速网络进行数据传输,以确保数据的可靠性和容错性。

    副本可以在一开始存储数据的时候就对其进行指定,默认为3个副本,所以这里建议HDFSDataNode节点至少有三台,防止业务节点宕机导致数据丢失。

  3. 数据块读取:DataNode 提供数据访问服务,当客户端请求读取数据块时,DataNode 会根据元数据中的信息定位到所需数据块,并将数据块传输给客户端。客户端可以直接从 DataNode 获取数据块,从而实现数据的高效读取。

  4. 心跳和状态报告:DataNode 定期向 NameNode 发送心跳信号,用于确定 DataNode 的可用性。同时,DataNode 还会通过状态报告向 NameNode 提供有关本地存储的信息,包括磁盘空间的使用情况、存储的数据块列表等。

  5. 故障处理:DataNode 监测自身和其他 DataNode 的故障情况,并与 NameNode 协同工作以确保数据的完整性和可用性。如果某个数据块的副本损坏或所在的 DataNode 失效,NameNode 将通知其他 DataNode 进行恢复操作,以保持数据的一致性。

SecondaryNameNode

在早期版本的 Hadoop 中,SecondaryNameNode 是 HDFS 的一个组件,它的主要作用是协助 NameNode 来处理元数据备份和检查点操作,以提高系统的可靠性和恢复能力。然而,从 Hadoop 2.x 开始,SecondaryNameNode 被改进为 CheckpointNode,并且完全不再是 HDFS 的必需组件。

现在,HDFS 中不再需要 SecondaryNameNode 来执行元数据备份和检查点操作,而是使用了一种被称为 NameNode HA (High Availability) 的新机制。NameNode HA 让多个 NameNode 实例在集群中同时工作,其中一个为活跃状态的 NameNode 处理客户端请求,而另一个则作为备用状态的 NameNode 用于故障切换。这样可以避免单点故障,并提供更好的可用性和容错性。

尽管 SecondaryNameNode 不再是 HDFS 的必需组件,但它仍然存在于 Hadoop 中,仍然有一些特定的用途。SecondaryNameNode 在某些情况下仍然可以用于执行部分元数据备份和检查点操作,以减轻 NameNode 的工作负载,或者用于特定的维护和调试任务。

由SecondaryNameNode完成的工作主要是完成NameNode里面日志文件的重写,有点像Redis的bgsave的rewrite,只保存当前状态下的数据情况。

HDFS的分块与副本(重点)

在这里插入图片描述

其实HDFS的分块与ElasticSearch的分片极其相似,副本的思想也是如出一辙。

一个完整的文件由所有的DataNode的块组成 , 如果丢掉了其中的一个块, 则文件不可用了. 块越多, 则丢失的概率越高, 所以是一个很重要的问题.

这里就需要使用到副本 ,有了副本, 就是其他块丢失了,副本存在依然能是该数据完整的查询和使用。

副本数量可以进行修改的 , 在hdfs-site.xml配置文件当中进行修改, 默认是3个副本。

或者上传文件到dhfs当中时 , -D dfs.replication=2也可以临时修改这个文件的副本数量。或者一个setrep命令, 修改文件的副本数量。

HDFS 将文件切分为**固定大小的数据块,默认情况下为 128MB。这种固定大小的数据块有助于简化数据管理和读写操作,并提供更好的并行处理能力。**

HDFS 通过在数据块副本的选择上考虑数据本地性,将数据尽可能地存储在离数据计算节点近的位置。这有助于减少数据传输的网络开销,并提高数据访问的性能。

HDFS的存储流程(重点)

写入流程:

  1. 客户端向NameNode发起请求

  2. NameNode审核权限, 确定剩余空间后, 满足条件则告知客户端DataNode的locations

  3. 客户端向指定的DataNode发送数据包

  4. 被写入数据的DataNode同时完成数据副本的复制操作, 将其接收的数据分发给其他的DataNode, 相当于PipeLine的流程

  5. 写入完成客户端通知NameNode, NameNode做元数据的记录工作

过程中有几点需要注意

  1. NameNode不负责数据写入, 只负责数据记录和权限审批
  2. 客户端直接向一台DataNode写数据 , 这个DataNode一般是离客户端最近的那一个, 比如同一个服务器上, 同一个局域网内, 同一个机房里面
  3. 数据块副本的复制操作, 由DataNode之间自行完成的

读取流程

  1. 客户端向NameNode申请读取某文件
  2. NameNode判断客户端权限后, 允许读取 , 返回此文件的Block列表
  3. 客户端拿到block列表, 自行在DataNode进行读取即可

以上就是HDFS文章的全部内容,相信学习完之后对HDFS已经产生了足够的认识,接下来我们学习如何完成HDFS的安装部署。

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

大数据从入门到精通(超详细版)之HDFS详解,学不会算我输!!! 的相关文章

  • Hive“添加分区”并发

    我们有一个外部 Hive 表 用于处理原始日志文件数据 这些文件每小时一次 并按日期和源主机名分区 目前 我们正在使用简单的 python 脚本导入文件 这些脚本每小时触发几次 该脚本根据需要在 HDFS 上创建子文件夹 从临时本地存储复制
  • 将 CSV 转换为序列文件

    我有一个 CSV 文件 我想将其转换为 SequenceFile 我最终将使用它来创建 NamedVectors 以在聚类作业中使用 我一直在使用 seqdirectory 命令尝试创建 SequenceFile 然后使用 nv 选项将该输
  • 运行时异常:java.lang.NoSuchMethodException:tfidf$Reduce.()

    如何解决这个问题 tfidf是我的主类 为什么运行jar文件后会出现这个错误 java lang RuntimeException java lang NoSuchMethodException tfidf Reduce
  • hive - 在值范围之间将一行拆分为多行

    我在下面有一张表 想按从开始列到结束列的范围拆分行 即 id 和 value 应该对开始和结束之间的每个值重复 包括两者 id value start end 1 5 1 4 2 8 5 9 所需输出 id value current
  • 如何解决使用 Spark 从 S3 重新分区大量数据时从内存中逐出缓存的表分区元数据的问题?

    在尝试从 S3 重新分区数据帧时 我收到一个一般错误 Caused by org apache spark SparkException Job aborted due to stage failure Task 33 in stage 1
  • 在 Windows 7 64 位中删除 Spark 临时目录时出现异常

    我正在尝试在 Windows 7 64 位中运行 Spark 作业的单元测试 我有 HADOOP HOME D winutils winutils path D winutils bin winutils exe 我运行了以下命令 winu
  • 2n + 1 法定人数是什么意思?

    我在描述 HBase 的 Zookeeper 配置时遇到过这个问题 但我对这个术语并不熟悉 N 与我的 HBase 集群中的节点数量有关系吗 或者我应该在 Zookeeper 集群中使用的节点数量 2f 1是指你所需要的可靠性 可用性水平
  • Hadoop 推测任务执行

    在Google的MapReduce论文中 他们有一个备份任务 我认为这与Hadoop中的推测任务是一样的 推测任务是如何实现的 当我启动一项推测任务时 该任务是从一开始就作为较旧且缓慢的任务开始 还是从较旧的任务到达的位置开始 如果是这样
  • 无法在 Hadoop Map-Reduce 作业中加载 OpenNLP 句子模型

    我正在尝试将 OpenNLP 集成到 Hadoop 上的 Map Reduce 作业中 从一些基本的句子分割开始 在地图函数中 运行以下代码 public AnalysisFile analyze String content InputS
  • Apache hadoop 版本 2.0 与 0.23

    Hadoop 的版本和发行版太多 让我很困惑 我有几个问题 Apache Hadoop 1 x 是从 0 20 205 开始的 Apache Hadoop 2 0 是从 0 22 还是 0 23 开始 根据这个blogpost http b
  • 在 PIG 中加载文件时如何忽略“(双引号)?

    我的文件中有以下数据 a b 1 2 a b 4 3 a b 3 1 我正在使用以下命令读取此文件 File1 LOAD path using PigStorage as f1 chararray f2 chararray f3 int f
  • Sqoop 导出分区的 Hive 表

    我在尝试导出分区的 Hive 表时遇到了一些问题 这是否完全受支持 我尝试用谷歌搜索并找到一张 JIRA 票证 sqoop export connect jdbc mysql localhost testdb table sales exp
  • 将 Spark 添加到 Oozie 共享库

    默认情况下 Oozie 共享 lib 目录提供 Hive Pig 和 Map Reduce 的库 如果我想在 Oozie 上运行 Spark 作业 最好将 Spark lib jar 添加到 Oozie 的共享库 而不是将它们复制到应用程序
  • 当我将文件存储在 HDFS 中时,它们会被复制吗?

    我是 Hadoop 新手 当我使用以下方式存储 Excel 文件时hadoop fs putcommoad 它存储在HDFS中 复制因子为3 我的问题是 是否需要3份并分别存储到3个节点中 这是 HDFS 工作的漫画 https docs
  • 更改 Hadoop 中的数据节点数量

    如何改变数据节点的数量 即禁用和启用某些数据节点来测试可扩展性 说得更清楚一点 我有4个数据节点 我想一一实验1 2 3 4个数据节点的性能 是否可以只更新名称节点中的从属文件 临时停用节点的正确方法 创建一个 排除文件 这列出了您想要删除
  • 无法在 Windows 10 中启动 Spark Master

    我是 Spark 新手 我正在尝试手动启动 master 在 Windows 10 中使用 MINGW64 当我这样做时 Downloads spark 1 5 1 bin hadoop2 4 spark 1 5 1 bin hadoop2
  • Hadoop-reducer 如何获取数据?

    据我所知 映射器为每个减速器生成 1 个分区 减速器如何知道要复制哪个分区 假设有 2 个节点运行用于字数统计程序的映射器 并且配置了 2 个缩减器 如果每个映射节点生成 2 个分区 并且两个节点中的分区都可能包含相同的单词作为键 那么减速
  • 如何有效地将数据从 Kafka 移动到 Impala 表?

    以下是当前流程的步骤 Flafka http blog cloudera com blog 2014 11 flafka apache flume meets apache kafka for event processing 将日志写入
  • 无法在 Presto 中读取数据 - 在 Hive 中可以读取数据

    我有一个 Hive DB 我创建了一个与 Parquet 文件类型兼容的表 CREATE EXTERNAL TABLE default table date date udid string message token string PAR
  • ETL informatica 大数据版(非云版)可以连接到 Cloudera Impala 吗?

    我们正在尝试在 Informatica 大数据版本 不是云版本 上进行概念验证 我发现我们可能能够使用 HDFS Hive 作为源和目标 但我的问题是 Informatica 是否连接到 Cloudera Impala 如果是这样 我们是否

随机推荐

  • 浏览器内核,user-agent

    最近web界被红芯事件吵得沸沸扬扬 也激起了我对浏览器内核进一步的学习热情 先来看看user agent 它是我们前端开发获取用户操作系统 浏览器版本等数据的常用方法 UA存在于每次http请求的请求头中 像这样 Mozilla 5 0 W
  • 鸽子学统计

    文章目录 第一部分 基础统计 0 统计学的目的和本质 0 1 随机变量 0 2 统计分析的目的 0 3 统计学的本质 1 描述统计 1 1 变量的测量尺度分类 1 2 均值 1 3 众数和中位数 1 4 极差和标准差 1 5 偏度和峰度 1
  • linux:argument list too long的解决方案

    问题 展示 删除的文件数目过多时 linux命令会报错 如下 rm 命令 rm txt zsh argument list too long rm ls命令 ls txt zsh argument list too long ls 原因 猜
  • Outlook无需API开发连接钉钉群机器人,实现新增会议日程自动发送群消息通知

    Outlook用户使用场景 在企业中 会议和活动的顺利举行对于业务运转和团队协作至关重要 然而 计划的变动总是无法避免 这可能会导致其他人的计划受到影响 打乱原有的安排 为了解决这个问题 许多企业开始使用各种工具和技术来确保信息的及时传递和
  • 【计算机网络】MAC帧和PPP帧(定义+使用范围+区别+共同点)

    目录 0 前言 1 PPP的定义 1 1 点对点协议PPP Point to Point Protocol PPP 1 2 PPP帧 1 3 PPP帧的格式 1 3 1 首部 1 3 2 尾部 2 MAC的定义 2 1 媒体接入控制层MAC
  • 数据库多版本读场景

    session 1 session 2 select a from test return a 10 start transaction update test set a 20 start transaction select a fro
  • Qt 菜单栏QMenu、下拉菜单QAction、工具栏QToolBar的使用

    如下内容是实现一个菜单栏以及下拉菜单的制作 在mainwindow h中添加如下内容 1 class QAction 2 class QMenu 在pro中添加QT widgets QMenu类作为菜单栏 QAction类作为点击菜单栏的下
  • CTF 隐写工具Steghide

    Steghide 是一个可以将文件隐写到图片或者音频得工具 Steghide支持以下图像格式 JPEG BMP WAV AU文件 apt get install steghide 使用查看帮助文件 steghide help steghid
  • 谷粒商城2-环境安装

    谷粒商城2 环境安装 一 安装VirtualBox 1 官网下载 https www virtualbox org wiki Downloads 2 开启CPU虚拟化 3 下载vagrant安装虚拟机镜像 https www vagrant
  • Y9000X 2022 i7-12700H+3060 安装ubuntu18.04.6+问题记录

    Y9000X 2022 i7 12700H 3060 安装ubuntu18 04 6 问题记录 前言 1 Ubuntu18 04 安装 1 1 官网下载Ubuntu18 04 6 镜像 1 2 U盘启动盘制作 1 3 系统安装 2 问题总结
  • VC ini配置文件常用操作

    A 读写ini文件 ini文件 即Initialization file 这种类型的文件中通常存放的是一个程序的初始化信息 ini文件由若干个节 Section 组成 每个Section由若干键 Key 组成 每个Key可以赋相应的值 读写
  • Dynamics CRM2013/2015 检索实体属性的两种方式

    昨天有朋友问起如何查询一个字段属性是否存在于某个实体中 一般这个问题我们会采取最直观的查询方式即MetadataBrowser 该工具是一个zip解决方案包在SDK中的如下目录内 SDK Tools MetadataBrowser 解决方案
  • 【kubernetes】kubeadm安装多master节点的k8s集群

    1 概述 K8s主要分为master节点 控制节点 和node节点 运行容器pod master节点中有apiserver controller manager scheduler和etcd几个主要组件 node节点一般有kubelet k
  • 基础算法二分查找c语言

    gt 大家有没有玩过猜数字游戏 你猜一个数就说你猜大了还是猜小了 猜正确就结束 你是怎么猜呢 不会从头到末尾一个一个猜吧 我们先找中间的数猜一次缩减一半的范围 在 1 2 3 4 5 6 7 8 9 10 查找7 和 17 1 把数据存放在
  • git基础命令行操作

    最近在用git 因为之前没什么基础所以很多时候遇到问题就求教别人 然后稍微总结一下自己踩过的小坑顺便总结一下下 一 git clone xxxx 从远程仓库把项目想在下来 git init 初始化本地仓库 二 git status 查看状态
  • 20、计算机图形学——微平面理论和Cook-Torrance BRDF

    一 微平面理论 如下图中的海面 从远处看 就像镜子一样平整 反光很强烈 但是从近处看 却能法线 海平面是有微小的凹凸不平 可以认为 海平面是由无数个微小的镜面组成 而每个微小的镜面都有法线 如果法线的分布地较为密集 如下图中上面的情况 那么
  • 高防CDN和高防IP的各自优势

    服务器配置中高防IP与高防CDN各自的优势分别是什么 为了更好地防止由于进攻造成 的网络服务器偏瘫 营运商们一般 会挑选具有 高防御服务器 来开展经营 如果是在经营全过程中遭受了进攻 不愿去拆换网络服务器得话 这个时候 就可以选用加上高仿I
  • Gravatar镜像源自建教程,使用CDN加速无需配置反代

    什么是 Gravatar Gravatar 是 Globally Recognized Avatar 的缩写 是 Gravatar 推出的一项服务 意为 全球通用头像 如果在 Gravatar 的服务器上放置了你自己的头像 那么在任何支持
  • D3DCompiler_47.dll丢失怎么解决-D3DCompiler_47.dll丢失怎么办

    d3dcompiler47dll丢失怎么解决 很多用户玩单机游戏或者安装软件的时候就出现过这种问题 如果是新手第一时间会认为是软件或游戏出错了 其实并不是这样 其主要原因就是你电脑的该dll文件没有或者损坏了 这时你只需下载这个d3dcom
  • 大数据从入门到精通(超详细版)之HDFS详解,学不会算我输!!!

    前言 嗨 各位小伙伴 恭喜大家学习到这里 不知道关于大数据前面的知识遗忘程度怎么样了 又或者是对大数据后面的知识是否感兴趣 本文是 大数据从入门到精通 超详细版 的一部分 小伙伴们如果对此感谢兴趣的话 推荐大家按照大数据学习路径开始学习哦