【Hadoop】HDFS设计思想

news/2024/11/20 11:43:15/

  • HDFS设计思想
  • 为什么HDFS上的块为什么远远大与传统文件系统?

HDFS设计思想

在这里插入图片描述

  • 首先需要明确HDFS部署在集群之上。

  • 假设有一个50G的文件,在HDFS中分布式的存储这个文件,首先需要将50G文件分成多个数据块,块的大小可以设置,比如128M。数据块以多副本的行式存储在各个节点上 ,再使用一个文件把哪个数据块存储在哪些节点上的映射关系存储起来。有了这样的映射关系,用户读取文件的时候就会很容易读取到。

  • 数据块大小可以在配置文件中hdfs-default.xml中进行修改。如下:

    <property><name>dfs.blocksize</name><value>134217728</value><description>默认块大小,以字节为单位。可以使用以下后缀(不区分大小写):k,m,g,t,p,e以重新指定大小(例如128k, 512m, 1g等)</description>
    </property><property><name>dfs.namenode.fs-limits.min-block-size</name><value>1048576</value><description>以字节为单位的最小块大小,由Namenode在创建时强制执行时间。这可以防止意外创建带有小块的文件可以降级的大小(以及许多块)的性能。</description>
    </property><property><name>dfs.namenode.fs-limits.max-blocks-per-file</name><value>1048576</value><description>每个文件的最大块数,由写入时的Namenode执行。这可以防止创建会降低性能的超大文件</description>
    </property><property><name>dfs.namenode.name.dir</name><value>file://${hadoop.tmp.dir}/dfs/name</value><description>HDFS中的NameNode会记录文件的各个块都存放在哪个dataNode上,这些信息一般也称为元信息(MetaInfo) 。元信息的存储位置一般由dfs.namenode.name.dir来指定</description>
    </property><property><name>dfs.datanode.data.dir</name><value>file://${hadoop.tmp.dir}/dfs/data</value><description>而datanode是真实存储文件块的节点,块在datanode的位置一般由dfs.datanode.data.dir来指定</description>
    </property>

为什么HDFS上的块为什么远远大与传统文件系统?

我们所熟悉的普通文件系统的一个块一般只有几千字节,可以看出,HDFS在块的大小的设计上明显要大于普通文件系统。HDFS这么做的原因,是为了最小化寻址开销。HDFS寻址开销不仅包括磁盘寻道开销,还包括数据块的定位开销。当客户端需要访问一个文件时,首先从namenode名称节点获得组成这个文件的数据块的位置列表,然后根据位置列表获取实际存储各个数据块的数据节点的位置,最后datanode数据节点根据数据块信息在本地文件系统中找到对应的文件,并把数据返回给客户端。设计一个比较大的块,可以把上述寻址开销分摊到较多的数据中,降低了单位寻址的开销。因此,HDFS在文件块大小的设置上要远远大于普通文件系统,以期在处理大规模文件时能够获得更好地性能。当然,块的大小也不宜设置过大,因为,通常MapReduce中的Map任务一次只处理一个块中的数据,如果启动的任务太少,就会降低作业并行处理速度。


http://www.ppmy.cn/news/1273504.html

相关文章

Text mining and natural language processing in construction 论文阅读

摘要 文本挖掘 ™ 和自然语言处理 (NLP) 引起了建筑领域的兴趣&#xff0c;因为它们提供了管理和分析基于文本的信息的增强功能。这凸显了需要从施工管理的角度进行系统审查&#xff0c;以确定现状、差距和未来方向。通过将 205 份出版物的目标与施工管理实践中概述的具体领域…

使用Verdaccio搭建私有npm仓库

搭建团队的私有仓库&#xff0c;保证团队组件的安全维护和私密性&#xff0c;是进阶前端开发主管路上&#xff0c;必不可少的一项技能。 一、原理 我们平时使用npm publish进行发布时&#xff0c;上传的仓库默认地址是npm&#xff0c;通过Verdaccio工具在本地新建一个仓库地址…

C#数据结构

C#数据结构 常见结构 1、集合 2、线性结构 3、树形结构 4、图形结构 Array/ArrayList/List 特点&#xff1a;内存上连续存储&#xff0c;节约空间&#xff0c;可以索引访问&#xff0c;读取快&#xff0c;增删慢 using System; namespace ArrayApplication {class MyAr…

java内置的数据结构

Java语言提供了许多内置的数据结构&#xff0c;包括&#xff1a; 1. 数组&#xff08;Array&#xff09;&#xff1a;数组是最基本的数据结构之一&#xff0c;它是一个有序的元素集合&#xff0c;每个元素都有一个对应的索引。在Java中&#xff0c;数组可以通过声明和初始化来创…

基于多智能体系统一致性算法的电力系统分布式经济调度策略MATLAB程序

微❤关注“电气仔推送”获得资料&#xff08;专享优惠&#xff09; 参考文献&#xff1a; 主要内容&#xff1a; 应用多智能体系统中的一致性算法&#xff0c;以发电机组的增量成本和柔性负荷的增量效益作为一致性变量&#xff0c;设计一种用于电力系统经济调度的算法&#x…

深入理解——快速排序

目录 &#x1f4a1;基本思想 &#x1f4a1;基本框架 &#x1f4a1;分割方法 ⭐Hoare版本 ⭐挖坑法 ⭐前后指针法 &#x1f4a1;优化方法 ⭐三数取中法 ⭐小区间内使用插入排序 &#x1f4a1;非递归实现快速排序 &#x1f4a1;性能分析 &#x1f4a1;基本思想 任取待排…

Netty网络基础的通俗理解(网络操作系统)

写在前面 说来惭愧&#xff0c;最近半年没怎么学习技术&#xff0c;时间基本都花在工作以及去熟悉了解金融领域的知识去了。从大一到现在&#xff0c;我一直有个持续学习技术的习惯&#xff0c;如果太久没学习技术&#xff0c;我心里就开始有点焦虑或者说不充实&#xff0c;所…

Apache SeaTunne简介

Apache SeaTunne简介 文章目录 1.Apache SeaTunne是什么&#xff1f;1.1[官网](https://seatunnel.apache.org/)1.2 项目地址 2.架构3.特性3.1 丰富且可扩展的连接器和插件机制3.2 支持分布式快照算法以确保数据一致性3.3 支持流、批数据处理&#xff0c;支持全量、增量和实时数…