分布式文件系统 之 数据块(Block)
众所周知,HDFS中以数据块(block)为单位进行存储管理。本文简单介绍一下HDFS中数据块(block)的概念,以及众多分布式存储系统(不止是HDFS)使用block作为存储管理基本单位的意义。
数据块
数据块的概念并不陌生,在磁盘中,每个磁盘都有默认的数据块大小,这是磁盘进行数据读/写的最小单位,磁盘块一般为512字节。在分布式文件系统中,数据块一般远大于磁盘块的大小,并且为磁盘块大小的整数倍,例如,HDFS block size默认为64MB。
分布式存储系统中选择大block size的主要原因是为了最小化寻址开销,使得磁盘传输数据的时间可以明显大于定位这个块所需的时间。然而,在HDFS中block size也不好设置的过大,这是因为MapReduce中的map任务通常一次处理一个块中的数据,因此如果block太大,则map数就会减少,作业运行的并行度就会受到影响,速度就会较慢。
Why block
在很多分布式文件系统中我们都可以看到block的存在,这种设计的好处主要有以下几点:
- 存储的文件大小可以大于集群中任意一个磁盘的容量。这很好理解,文件被划分到多个block中存储,对磁盘透明;
- 使用block抽象而非整个文件作为存储单元,可以极大简化存储子系统的设计。因为block size是统一的,因此一个节点上可以存储多少block就是可以推算的;
- Block 非常适合用于数据备份,进而提供数据容错能力和可用性。
Why bigger block
在普通文件系统中,使用较大的磁盘块:
- 可以减少管理数据块需要的开销。如在Linux中可以减少保存在i-node中磁盘地址表中的信息链的长度;
- 在对文件进行读写时,可以减少寻址开销,即磁盘定位数据块的次数。
在HDFS中,使用大数据块:
- 可以减少名字节点上管理文件和数据块关系的开销;
- 对数据块进行读写时,可以有效减少建立网络连接需要的成本。
Block VS. Chunk
由于我也是最近才开始比较仔细的接触Hadoop,GFS中的DataNode又被称为ChuckServer,因此经常会被HDFS中的block和chunk搞得confused掉。今天看到了一个比较好的解释,在这里记录一下:
block:如上文,是HDFS中的存储管理单元,类似磁盘的block。
chuck:HDFS中存储的文件被划分为多个块(chuck),每个chuck的大小与block的大小相同(除了最后一个chuck),这些文件chuck就被存储到block中。
好啦,记录的很简单。以前很喜欢一篇文章记录的很详尽,因此很久都憋不出一篇博文,就算准备充分可以开写了,但是又会觉得好长,懒得写。所以呢,为了让自己学习得更有节奏吧,现在决定有点感悟就记录下来,方便以后查看。当然,也可以一段时间merge 整理一下 相关的短文啦!
YUKI,干巴爹 哈哈
参考
《Hadoop权威指南》(第二版)P43
《Hadoop技术内幕:深入解析Hadoop Common和HDFS架构设计与实现原理》 P218
分布式文件系统 之 数据块(Block)的更多相关文章
- HDFS源码分析之数据块Block、副本Replica
我们知道,HDFS中的文件是由数据块Block组成的,并且为了提高容错性,每个数据块Block都会在不同数据节点DataNode上有若干副本Replica.那么,什么是Block?什么又是Replic ...
- HDFS中的数据块(Block)
我们在分布式存储原理总结中了解了分布式存储的三大特点: 数据分块,分布式的存储在多台机器上 数据块冗余存储在多台机器以提高数据块的高可用性 遵从主/从(master/slave)结构的分布式存储集群 ...
- Hadoop(八)Java程序访问HDFS集群中数据块与查看文件系统
前言 我们知道HDFS集群中,所有的文件都是存放在DN的数据块中的.那我们该怎么去查看数据块的相关属性的呢?这就是我今天分享的内容了 一.HDFS中数据块概述 1.1.HDFS集群中数据块存放位置 我 ...
- oracle --(一)数据块(data Block)
基本关系:数据库---表空间---数据段---分区---数据块 数据块(data Block)一.数据块Block是Oracle存储数据信息的最小单位.这里说的是Oracle环境下的最小单位.Orac ...
- HDFS(Hadoop Distributed File System )hadoop分布式文件系统。
HDFS(Hadoop Distributed File System )hadoop分布式文件系统.HDFS有如下特点:保存多个副本,且提供容错机制,副本丢失或宕机自动恢复.默认存3份.运行在廉价的 ...
- HDFS中数据节点数据块存储示例
数据块在数据节点上是按照如下方式存储的. 首先是一个存储的根目录/Hadoop/data/dfs/dn,如下图所示: 接着进入current目录,如下图所示: 再进入后续的BP-433072574-1 ...
- Linux 文件系统(一)---虚拟文件系统VFS----超级块、inode、dentry、file
转自:http://blog.csdn.net/shanshanpt/article/details/38943731 http://elixir.free-electrons.com/linux/v ...
- Hadoop分布式文件系统使用指南
原文地址:http://hadoop.apache.org/docs/r1.0.4/cn/hdfs_user_guide.html 目的 概述 先决条件 Web接口 Shell命令 DFSAdmin命 ...
- HDFS源码分析之数据块及副本状态BlockUCState、ReplicaState
关于数据块.副本的介绍,请参考文章<HDFS源码分析之数据块Block.副本Replica>. 一.数据块状态BlockUCState 数据块状态用枚举类BlockUCState来表示,代 ...
随机推荐
- unity音量设置(同时设置到多个物体上)——引伸语言设置
在游戏中游戏设置是一个很重要的功能,但是比如语言设置和音量设置分散在很多个物体的组件上,如果每个对应的物体都放到一个链表里,会导致程序雍总难堪,使用事件调用是最好的方式 音量存储类 SoundMana ...
- HAOI2017 新型城市化 二分图的最大独立集+最大流+强连通缩点
题目链接(洛谷):https://www.luogu.org/problemnew/show/P3731 题意概述:给出一张二分图,询问删掉哪些边之后可以使这张二分图的最大独立集变大.N<=10 ...
- 关于cocos2dx 关键字的问题
今天码代码,在创建新场景的时候,.h文件里 class Game : public cocos2d::Layer没有问题,在Game类里面,声明了它的成员之后,开始在.cpp文件里面实现这个类,到重 ...
- 网络助手的NABCD分析
我们小组这次做的软件名字叫为校园网络助手.本校校园网分为内网与外网认证两种,并且有着流量限制,所以我们设计出来了这项软件,它主要有着两项功能:一键WIFI与校内网盘. N--need.在学校里每当流量 ...
- OpenFlow 1.3 控制器与交换机的交互,以及拓扑发现
前言 最近纠结于控制器如何发现拓扑,于是就翻起了OpenFlow 1.3进行查看,以及一些相关协议 OF 1.3 安全通道,即交互消息 OpenFlow Switch Specification 1. ...
- 人生第一次JAVA编程,电梯(并不算完成版),以及IDEA里使用git
首先先说说Intellij IDEA与git的互联,首先在任意(我是在coding)gitlab里新建一个工程. 然后新建一个工程记得注明url和地址.名称等 如果无法创建,则需要指定git地址 创建 ...
- ORACLE创建数据库时无法创建目录
ORACLE创建数据库时无法创建目录,如图所示信息 原因:没有创建写入的权限 解决:修改文件夹权限即可 F:\oracle\product\10.2.0\db_1\cfgtoollogs\dbca 增 ...
- ElasticSearch 2 (17) - 深入搜索系列之部分匹配
ElasticSearch 2 (17) - 深入搜索系列之部分匹配 摘要 到目前为止,我们介绍的所有查询都是基于完整术语的,为了匹配,最小的单元为单个术语,我们只能查找反向索引中存在的术语. 但是, ...
- 解决Ubuntu14.04下sublime无法输入中文
原帖地址: (简书作者) http://www.jianshu.com/p/bf05fb3a4709 前言 sublime很好用,但是ubuntu14.04 下不能输入中文,这是一个很大的问题.不知道 ...
- 三星a9上测试egret与pixi.js的渲染性能
for (let i = 0; i < 500; i++) { let shape = new egret.Shape(); shape.graphics.beginFill(0xff0000) ...