HDFS [MSST‘10] 论文阅读笔记
原论文:The Hadoop Distributed File System (MSST’10)
HDFS关键技术要点概览
- 设计目标:HDFS旨在可靠地存储大型数据集,并以高带宽流式传输这些数据集到用户应用程序。它通过在大量服务器上分布存储和计算资源,使得资源可以随着需求的增长而扩展,同时保持经济高效。
- 架构组成:HDFS是Hadoop项目的一部分,包括了分布式文件系统、MapReduce计算框架、HBase列式存储系统、Pig数据流语言、Hive数据仓库基础设施、ZooKeeper分布式协调服务等多个组件。
- 存储和元数据分离:HDFS将文件系统元数据和应用数据分开存储。元数据存储在专用的NameNode服务器上,而应用数据存储在DataNode服务器上。
- 数据复制:HDFS不像传统的文件系统使用RAID等数据保护机制,而是通过在多个DataNode上复制文件内容来确保数据的可靠性。这种策略不仅保证了数据的持久性,还提高了数据传输带宽,并为计算任务提供了更多的机会来靠近所需数据。
- NameNode和DataNode:NameNode维护文件系统的namespace tree和block到DataNode的映射关系。DataNode则存储实际的数据块,并与NameNode通信以报告其健康状况和存储状态。
- 客户端操作:HDFS客户端提供了一系列文件系统操作,如读写文件、创建和删除目录等。客户端与NameNode交互以获取文件块的位置信息,然后直接与DataNode通信来读取或写入数据。
- 容错和数据完整性:HDFS通过复制数据块来提高容错能力。如果检测到数据块损坏,HDFS会从其他DataNode获取有效副本。此外,HDFS还提供了块扫描器来定期检查数据块的完整性。
- 平衡器(Balancer):为了确保集群中数据的均匀分布,HDFS提供了一个平衡器工具,它可以将数据从一个DataNode复制到另一个DataNode,以平衡集群中的磁盘空间使用。
- 升级和快照:HDFS支持在软件升级期间创建文件系统快照,以便在升级导致数据损坏时可以回滚到升级前的状态。
- 性能基准测试:论文提供了HDFS在不同操作(如读取、写入、追加)下的性能基准测试结果,以及在生产环境中的实际性能表现。
- 未来工作:论文讨论了HDFS未来的发展方向,包括提高NameNode的可扩展性、实现自动化故障转移、支持多个namespace以及改进集群间的协作。
HDFS原论文阅读
Introduction
-
Hadoop提供了一个分布式文件系统和一个基于MapReduce实现的对超大数据集的分析和转换的框架。
-
Hadoop的重要特点:数据的分割、横跨成千上万个主机的计算、在接近数据的地方并行执行应用程序的计算。
-
Hadoop集群通过简单地增加服务器来扩展计算容量、存储容量和IO带宽。
-
Hadoop 项目的组成元件
-
Hadoop将元数据存储在NameNode上,将应用程序数据存储在DataNode上,所有服务器通过TCP-based协议连接和通信。
-
和GFS类似,Hadoop通过存储多个副本在DataNodes上来实现数据的可靠性。
-
一个文件通过一个哈希函数将名称映射到特定的MDS(namespace服务器)。
Architecture
NameNodes
- HDFS namespace是一个文件和目录的层级结构。在NameNode中,文件和目录是通过inodes来呈现的,内容包括属性值(如允许的权限)、修改和访问时间、namespace和磁盘空间配额等。
- 文件内容被分割成(默认为128MB大小的)块,然后每个块独立地在其他DataNodes上有多个副本(一般为三副本)。
- Namenode保存着namespace tree以及blocks到DataNode的映射表(文件数据的物理位置)。
- 想要读取文件的 HDFS clients首先会联系 NameNode 以获取组成文件的数据块位置,然后从最靠近client的 DataNode 读取块内容。在写入数据时,clients会要求 NameNode 指定由三个DataNodes来管理数据块副本。然后,clients以流水线方式向DataNodes写入数据。
- HDFS将整个namespace存储在RAM中。命名系统元数据image由inode的数据和属于每个文件的block list组成,存储在本地主机本地文件系统中的image持久记录称为checkpoint,NameNode 还会在本地主机的本地文件系统中存储名为jo
相关文章:

HDFS [MSST‘10] 论文阅读笔记
原论文:The Hadoop Distributed File System (MSST’10) HDFS关键技术要点概览 设计目标:HDFS旨在可靠地存储大型数据集,并以高带宽流式传输这些数据集到用户应用程序。它通过在大量服务器上分布存储和计算资源,使得资源可以随着需求的增长而扩展,同时保持经济高效。架构组…...

Feature Pyramid Networks for object detection
FPN 总述1.引言2.相关工作3. Feature Pyramid NetworksBottom-up pathwayTop-down pathway and lateral connections 4. 应用用于 RPN用于 Fast R-CNN 核心代码复现FPN网络结构ResNet Bottleneck完整代码 总述 下图中,蓝色边框表示的是特征图,边框越粗表…...
Linux下docker运行python
前言 本机开发环境众多,python版本都好多个,虽然可以通过conda管理多个虚拟环境,但还是不能像容器那样进行进程间的隔离。于是打算试下docker下运行python,而且生产环境很多时候也是用容器来跑应用,环境统一、方便扩容…...

MacOS下载和安装HomeBrew的详细教程
在MacOS上安装Homebrew的详细教程如下:(参考官网:macOS(或 Linux)缺失的软件包的管理器 — Homebrew) 步骤1:检查系统要求 确保你的MacOS版本至少为macOS Monterey (12) (or higher) 或更高版本…...

AI技术在金融领域/银行业的应用和风险
前言 随着科技的不断发展,人工智能(AI)技术已经在各行各业得到了广泛的应用,其中包括银行业。银行业作为经济的重要组成部分,一直在不断地探索和应用新技术,以提升服务效率、风险管理和客户体验。然而&…...

每日OJ题_两个数组dp⑤_力扣10. 正则表达式匹配
目录 力扣10. 正则表达式匹配 解析代码 力扣10. 正则表达式匹配 10. 正则表达式匹配 难度 困难 给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 . 和 * 的正则表达式匹配。 . 匹配任意单个字符* 匹配零个或多个前面的那一个元素 所谓匹配,…...

开源区块链系统/技术 总结(欢迎补充,最新)
一、联盟链 1. FISCO BCOS FISCO BCOS 2.0 技术文档 — FISCO BCOS 2.0 v2.9.0 文档https://fisco-bcos-documentation.readthedocs.io/ 2. ChainMaker(长安链) 文档导航 — chainmaker-docs v2.3.2 documentationhttps://docs.chainmaker.org.cn/v2…...

LeetCode 994—— 腐烂的橘子
阅读目录 1. 题目2. 解题思路3. 代码实现 1. 题目 2. 解题思路 1.记录下初始新鲜橘子的位置到 notRotting,我们按照行把二维数组拉成一维,所以,一个vector 就可以实现了;2.如果没有新鲜橘子,那么第 0 分钟所有橘子已经…...
向上向下采样
在数字图像处理中,向上采样(upsampling)和向下采样(downsampling)是两种常见的操作,用于改变图像的分辨率。 向上采样(Upsampling): 向上采样是指增加图像的分辨率&…...
Leetcode面试经典150_Q169多数元素
题目: 给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊n/2⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 解题思路: 1. 注意“大于 ⌊n/2⌋”,…...

Spring Cloud微服务入门(五)
Sentinel的安装与使用 安装部署Sentinel 下载Sentinel: https://github.com/alibaba/Sentinel/releases Sentinel控制台 https://localhost:8080 用户和密码为sentinel 使用Sentinel 加依赖: 写配置: 输入: java -Dserver.po…...

负荷预测 | Matlab基于TCN-GRU-Attention单输入单输出时间序列多步预测
目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab基于TCN-GRU-Attention单输入单输出时间序列多步预测; 2.单变量时间序列数据集,采用前12个时刻预测未来96个时刻的数据; 3.excel数据方便替换,运行环境matlab20…...

SpringBoot整合Spring Data JPA
✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉🍎个人主页:Leo的博客💞当前专栏: 循序渐进学SpringBoot ✨特色专栏: MySQL学习 🥭本文内容: SpringBoot整合Spring Data JPA 📚个人知识库: Leo知识库,欢迎大家访问 1.…...

机器学习(五) -- 监督学习(2) -- k近邻
系列文章目录及链接 目录 前言 一、K近邻通俗理解及定义 二、原理理解及公式 1、距离度量 四、接口实现 1、鸢尾花数据集介绍 2、API 3、流程 3.1、获取数据 3.2、数据预处理 3.3、特征工程 3.4、knn模型训练 3.5、模型评估 3.6、结果预测 4、超参数搜索-网格搜…...

【.NET全栈】ZedGraph图表库的介绍和应用
文章目录 一、ZedGraph介绍ZedGraph的特点ZedGraph的缺点使用注意事项 二、ZedGraph官网三、ZedGraph的应用四、ZedGraph的高端应用五、、总结 一、ZedGraph介绍 ZedGraph 是一个用于绘制图表和图形的开源.NET图表库。它提供了丰富的功能和灵活性,可以用于创建各种…...
vivado 设计调试
设计调试 对 FPGA 或 ACAP 设计进行调试是一个多步骤迭代式流程。与大多数复杂问题的处理方式一样 , 最好先将 FPGA 或 ACAP 设计调试流程细分为多个小部分 , 以便集中精力使设计中的每一小部分能逐一正常运行 , 而不是尝试一次性让整 个…...

Python3 replace()函数使用详解:字符串的艺术转换
博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …...

【C++】用红黑树封装map和set
我们之前学的map和set在stl源码中都是用红黑树封装实现的,当然,我们也可以模拟来实现一下。在实现之前,我们也可以看一下stl源码是如何实现的。我们上篇博客写的红黑树里面只是一个pair对象,这对于set来说显然是不合适的ÿ…...

一些好玩的东西
这里写目录标题 递归1.递归打印数组和链表?代码实现原理讲解二叉树的 前 中 后 序位置 参考文章 递归 1.递归打印数组和链表? 平常我们打印数组和链表都是 迭代 就好了今天学到一个新思路–>不仅可以轻松正着打印数组和链表 , 还能轻松倒着打印(用的是二叉树的前中后序遍…...

微电网优化:基于巨型犰狳优化算法(Giant Armadillo Optimization,GAO)的微电网优化(提供MATLAB代码)
一、微电网优化模型 微电网是一个相对独立的本地化电力单元,用户现场的分布式发电可以支持用电需求。为此,您的微电网将接入、监控、预测和控制您本地的分布式能源系统,同时强化供电系统的弹性,保障您的用电更经济。您可以在连接…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:
一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...

cf2117E
原题链接:https://codeforces.com/contest/2117/problem/E 题目背景: 给定两个数组a,b,可以执行多次以下操作:选择 i (1 < i < n - 1),并设置 或,也可以在执行上述操作前执行一次删除任意 和 。求…...

P3 QT项目----记事本(3.8)
3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...

k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...

使用Spring AI和MCP协议构建图片搜索服务
目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式(本地调用) SSE模式(远程调用) 4. 注册工具提…...

AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机
这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机,因为在使用过程中发现 Airsim 对外部监控相机的描述模糊,而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置,最后在源码示例中找到了,所以感…...

在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)
考察一般的三次多项式,以r为参数: p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]; 此多项式的根为: 尽管看起来这个多项式是特殊的,其实一般的三次多项式都是可以通过线性变换化为这个形式…...

Proxmox Mail Gateway安装指南:从零开始配置高效邮件过滤系统
💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「storms…...
安卓基础(Java 和 Gradle 版本)
1. 设置项目的 JDK 版本 方法1:通过 Project Structure File → Project Structure... (或按 CtrlAltShiftS) 左侧选择 SDK Location 在 Gradle Settings 部分,设置 Gradle JDK 方法2:通过 Settings File → Settings... (或 CtrlAltS)…...
Qt 事件处理中 return 的深入解析
Qt 事件处理中 return 的深入解析 在 Qt 事件处理中,return 语句的使用是另一个关键概念,它与 event->accept()/event->ignore() 密切相关但作用不同。让我们详细分析一下它们之间的关系和工作原理。 核心区别:不同层级的事件处理 方…...