HDFS详解(Hadoop)
Hadoop 分布式文件系统(Hadoop Distributed File System,HDFS)是 Apache Hadoop 生态系统的核心组件之一,它是设计用于存储大规模数据集并运行在廉价硬件上的分布式文件系统。
1. 分布式存储:
-
HDFS 将文件分割成若干块(
Block),并将这些块分布式地存储在集群中的多个节点上。默认情况下,每个块的大小为 128 MB(可配置),并且每个块都会被复制到多个节点上以实现容错性。 -
分布式存储的优势在于可以有效地利用集群中的所有节点存储空间,并且通过数据的复制和容错机制,提高了数据的可靠性和可用性。


2. 主从架构:
- HDFS 采用主从架构,包括一个
NameNode和多个DataNode组成。NameNode 负责管理文件系统的命名空间和存储元数据信息,而 DataNode 负责存储实际的数据块。 NameNode记录了文件的目录结构、文件与数据块的映射关系以及数据块的复制情况等元数据信息。DataNode负责存储数据块,并向 NameNode 定期汇报数据块的状态。

3. 容错性和可靠性:
- HDFS 提供了多种容错机制来确保数据的可靠性和一致性。其中,数据的复制是最重要的机制之一,每个数据块默认会被复制到集群中的多个节点上。
- 当某个节点发生故障或数据损坏时,HDFS 可以通过复制的数据块在其他节点上恢复数据,从而保证数据的完整性和可靠性。

4. 高吞吐量:
- HDFS 的设计目标之一是实现高吞吐量的数据访问。为了实现这一目标,HDFS 采用了批量读写和数据本地化等策略,尽可能地减少了网络传输的开销。
- 此外,HDFS 还支持数据流式处理和数据并行处理等特性,可以满足大规模数据处理和分析的需求。
5. 数据一致性:
- HDFS 采用了一致性模型,确保了数据的一致性和正确性。在数据写入和读取过程中,HDFS 会维护一致性语义,确保用户能够看到最新的数据内容。
- 此外,HDFS 还支持一些一致性保证,例如数据块的写入顺序保证等,以确保数据的一致性和可靠性。
6.使用场景
6.1适宜场景
-
大数据分析:HDFS 为存储大规模数据提供了可靠的基础,适用于各种大数据分析任务,如数据挖掘、机器学习、统计分析等。通过 Hadoop MapReduce 或其他大数据处理框架,可以对存储在 HDFS 上的数据进行高效的分布式计算和分析。
-
日志处理:许多互联网和移动应用生成大量的日志数据,HDFS 可以作为存储这些日志数据的平台。通过将日志数据写入 HDFS,可以轻松地进行日志分析、用户行为分析、系统性能监控等任务。
-
数据仓库:HDFS 可以作为数据仓库的底层存储系统,用于存储结构化和非结构化的数据。结合数据仓库解决方案,如 Apache Hive、Apache HBase 等,可以实现数据的高效查询、数据仓库建模和数据集成等功能。
-
实时数据处理:尽管 HDFS 本身不适合存储实时数据,但可以与其他实时数据处理系统集成,如 Apache Kafka、Apache Spark Streaming 等。通过将实时数据写入 HDFS,并结合实时处理系统进行流式处理,可以实现实时数据分析和实时报告生成等应用。
-
备份和归档:由于 HDFS 提供了数据的可靠性和容错性,因此可以将其用作备份和归档的存储解决方案。通过将数据备份到 HDFS,并定期进行数据归档,可以确保数据的安全性和可用性。
-
数据湖:HDFS 可以作为数据湖(Data Lake)的核心存储,用于存储各种类型和格式的数据。结合数据湖解决方案,如 Apache Atlas、Apache Ranger 等,可以实现数据的统一管理、数据治理和数据安全等功能。
6.2不适宜场景
-
小型数据集:HDFS 设计用于存储大规模数据集,如果数据规模相对较小,使用 HDFS 可能会带来不必要的复杂性和开销。对于小型数据集,传统的文件系统或云存储服务可能更为合适。
-
低延迟要求:HDFS 优化了数据写入和读取的吞吐量,但并不适合对低延迟有极高要求的应用场景。因为 HDFS 不支持像传统文件系统那样的低延迟数据访问。
-
频繁的小文件操作:HDFS 的设计是为了存储大型数据文件,而不是大量小文件。如果应用需要频繁地处理大量小文件,那么 HDFS 的元数据操作和数据复制可能会成为性能瓶颈。
-
高度动态的数据访问模式:HDFS 更适合于批处理和长期存储,对于频繁变化的数据或需要快速更新的数据集,HDFS 可能不是最佳选择。因为 HDFS 的设计目标是高可靠性和一致性,而不是频繁变化的数据更新。
-
需要原子性操作和事务支持:HDFS 不支持原子性操作和事务处理,因此不适合需要强一致性和事务支持的应用场景。对于此类需求,应该选择支持事务处理的分布式数据库或存储系统。
-
不需要容错性和数据复制的场景:如果应用对数据的容错性和复制没有特别要求,或者数据可以通过其他手段进行备份和保护,那么使用 HDFS 可能会带来不必要的复杂性和成本。

相关文章:
HDFS详解(Hadoop)
Hadoop 分布式文件系统(Hadoop Distributed File System,HDFS)是 Apache Hadoop 生态系统的核心组件之一,它是设计用于存储大规模数据集并运行在廉价硬件上的分布式文件系统。 1. 分布式存储: HDFS 将文件分割成若干块…...
python创建word文档并向word中写数据
一、docx库的安装方法 python创建word文档需要用到docx库,安装命令如下: pip install python-docx 注意,安装的是python-docx。 二、使用方法 使用方法有很多,这里只介绍创建文档并向文档中写入数据。 import docxmydocdocx.Do…...
MongoDB的安装配置及使用
文章目录 前言一、MongoDB的下载、安装、配置二、检验MongoDB是否安装成功三、Navicat 操作MongoDB四、创建一个集合,存放三个文档总结 前言 本文内容: 💫 MongoDB的下载、安装、配置 💫 检验MongoDB是否安装成功 ❤️ Navicat 操…...
Go学习路线
Go学习路线 文章目录 Go学习路线入门阶段一、Go基础和Goland的安装二、学习日志文件及配置文件三、学习mysql四、html,css,js快速入门五、写一个简单的前后端分离的记事本项目六、Linux快速入门七、Docker快速入门八、Git命令快速入门九、使用Docker打包…...
安全大脑与盲人摸象
21世纪是数字科技和数字经济爆发的时代,互联网正从网状结构向类脑模型进行进化,出现了结构和覆盖范围庞大,能够适应不同技术环境、经济场景,跨地域、跨行业的类脑复杂巨型系统。如腾讯、Facebook等社交网络具备的神经网络特征&…...
如何使用Git-Secrets防止将敏感信息意外上传至Git库
关于Git-Secrets Git-secrets是一款功能强大的开发安全工具,该工具可以防止开发人员意外将密码和其他敏感信息上传到Git库中。 Git-secrets首先会扫描提交的代码和说明,当与用户预先配置的正则表达式模式匹配时,便会阻止此次提交。该工具的优…...
Day 14 网络协议
常见网络设备:交换机 路由器 中继器 多协议网关(路由器的前身) 交换机:用于连接统一网络的设备,实现内网设备通信。 从广义上分为:局域网交换机,广域网交换机 从网络构成分为:接…...
msyql中SQL 错误 [1118] [42000]: Row size too large (> 8126)
场景: CREATE TABLE test-qd.eqtree (INSERT INTO test.eqtree (idocid VARCHAR(50) NULL,sfcode VARCHAR(50) NULL,sfname VARCHAR(50) NULL,sfengname VARCHAR(50) NULL,…… ) ENGINEInnoDB DEFAULT CHARSETutf8 COLLATEutf8_general_ci;或 alter table eqtre…...
实验六 智能手机互联网程序设计(微信程序方向)实验报告
实验目的和要求 请完成创建图片库应用,显示一系列预设的图片。 提供按钮来切换显示不同类别的图片。 二、实验步骤与结果(给出对应的代码或运行结果截图) 1.WXML <view> <button bindtap"showAll">所有图片</but…...
Linux环境下,让Jar项目多线程部署成为可能
欢迎来到我的博客,代码的世界里,每一行都是一个故事 Linux环境下,让Jar项目多线程部署成为可能 前言背景介绍使用sh脚本实现使用systemd来实现使用docker-compose实现 前言 在当今互联网时代,应用程序的高可用性和性能是至关重要…...
k8s调度场景
15个KUBERNETES调度情景实用指南 Kubernetes调度是确保集群中的Pod在适当节点上运行的关键组件。通过灵活配置调度策略,可以提高资源利用率、负载平衡和高可用性。 在本文中,我们将深入探讨一些实际的Kubernetes调度场景,并提供相应的配置示…...
基于小程序实现的餐饮外卖系统
作者主页:Java码库 主营内容:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。 收藏点赞不迷路 关注作者有好处 文末获取源码 技术选型 【后端】:Java 【框架】:spring…...
家居网购项目(手写分页)
文章目录 1.后台管理—分页显示1.程序框架图2.编写数据模型Page.java 3.编写dao层1.修改FurnDao增加方法 2.修改FurnDaoImpl增加方法 3.单元测试FurnDaoTest 4.编写service层1.修改FurnService增加方法 2.修改FurnServiceImpl增加方法3.单元测试FurnServiceTest 5.编写DataUtil…...
goland2024安装包(亲测可用)
目录 一、软件简介 二、软件下载 一、软件简介 Goland 是一款由 JetBrains 公司开发的集成开发环境(IDE),专门用于 Go 语言的开发。它提供了丰富的功能和工具,帮助开发者更高效地编写、调试和管理 Go 语言项目。 功能特点&#x…...
35、链表-LRU缓存
思路: 首先要了解LRU缓存的原理,首先定下容量,每次get请求和put请求都会把当前元素放最前/后面,如果超过容量那么头部/尾部元素就被移除,所以最近最少使用的元素会被优先移除,保证热点数据持续存在。 不管放…...
数据结构速成--栈
由于是速成专题,因此内容不会十分全面,只会涵盖考试重点,各学校课程要求不同 ,大家可以按照考纲复习,不全面的内容,可以看一下小编主页数据结构初阶的内容,找到对应专题详细学习一下。 目录 一…...
算法练习第15天|226.翻转二叉树
226.翻转二叉树 力扣链接https://leetcode.cn/problems/invert-binary-tree/description/ 题目描述: 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 示例 1: 输入:root [4,2,7,1,3,6,9] 输出&am…...
C#面向对象——封装、封装案例示例
C#面向对象——封装 什么是封装? (1)封装是将数据和操作数据的方法(行为)封装在一起。 (2)程序中封装的体现:属性,方法,类,接口,命名空间&#…...
【InternLM 实战营第二期-笔记3】茴香豆:搭建你的 RAG 智能助理
书生浦语是上海人工智能实验室和商汤科技联合研发的一款大模型,很高兴能参与本次第二期训练营,我也将会通过笔记博客的方式记录学习的过程与遇到的问题,并为代码添加注释,希望可以帮助到你们。 记得点赞哟(๑ゝω╹๑) 茴香豆:搭建…...
Advanced RAG 03:运用 RAGAs 与 LlamaIndex 评估 RAG 应用
编者按:目前,检索增强生成(Retrieval Augmented Generation,RAG)技术已经广泛使用于各种大模型应用场景。然而,如何准确评估 RAG 系统的性能和效果,一直是业界和学界共同关注的重点问题。若无法…...
ubuntu搭建nfs服务centos挂载访问
在Ubuntu上设置NFS服务器 在Ubuntu上,你可以使用apt包管理器来安装NFS服务器。打开终端并运行: sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享,例如/shared: sudo mkdir /shared sud…...
蓝桥杯 2024 15届国赛 A组 儿童节快乐
P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡,轻快的音乐在耳边持续回荡,小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下,六一来了。 今天是六一儿童节,小蓝老师为了让大家在节…...
汽车生产虚拟实训中的技能提升与生产优化
在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序
一、开发环境准备 工具安装: 下载安装DevEco Studio 4.0(支持HarmonyOS 5)配置HarmonyOS SDK 5.0确保Node.js版本≥14 项目初始化: ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...
HBuilderX安装(uni-app和小程序开发)
下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...
从零实现STL哈希容器:unordered_map/unordered_set封装详解
本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说,直接开始吧! 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序
一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...
鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南
1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发,使用DevEco Studio作为开发工具,采用Java语言实现,包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...
ip子接口配置及删除
配置永久生效的子接口,2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...
