众所周知,HDFS中以数据块(block)为单位进行存储管理。本文简单介绍一下HDFS中数据块(block)的概念,以及众多分布式存储系统(不止是HDFS)使用block作为存储管理基本单位的意义。

数据块

数据块的概念并不陌生,在磁盘中,每个磁盘都有默认的数据块大小,这是磁盘进行数据读/写的最小单位,磁盘块一般为512字节。在分布式文件系统中,数据块一般远大于磁盘块的大小,并且为磁盘块大小的整数倍,例如,HDFS block size默认为64MB。

分布式存储系统中选择大block size的主要原因是为了最小化寻址开销,使得磁盘传输数据的时间可以明显大于定位这个块所需的时间。然而,在HDFS中block size也不好设置的过大,这是因为MapReduce中的map任务通常一次处理一个块中的数据,因此如果block太大,则map数就会减少,作业运行的并行度就会受到影响,速度就会较慢。

Why block

在很多分布式文件系统中我们都可以看到block的存在,这种设计的好处主要有以下几点:

  1. 存储的文件大小可以大于集群中任意一个磁盘的容量。这很好理解,文件被划分到多个block中存储,对磁盘透明;
  2. 使用block抽象而非整个文件作为存储单元,可以极大简化存储子系统的设计。因为block size是统一的,因此一个节点上可以存储多少block就是可以推算的;
  3. Block 非常适合用于数据备份,进而提供数据容错能力和可用性。

Why bigger block

在普通文件系统中,使用较大的磁盘块:

  1. 可以减少管理数据块需要的开销。如在Linux中可以减少保存在i-node中磁盘地址表中的信息链的长度;
  2. 在对文件进行读写时,可以减少寻址开销,即磁盘定位数据块的次数。

在HDFS中,使用大数据块:

  1. 可以减少名字节点上管理文件和数据块关系的开销;
  2. 对数据块进行读写时,可以有效减少建立网络连接需要的成本。

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)的更多相关文章

  1. HDFS源码分析之数据块Block、副本Replica

    我们知道,HDFS中的文件是由数据块Block组成的,并且为了提高容错性,每个数据块Block都会在不同数据节点DataNode上有若干副本Replica.那么,什么是Block?什么又是Replic ...

  2. HDFS中的数据块(Block)

    我们在分布式存储原理总结中了解了分布式存储的三大特点: 数据分块,分布式的存储在多台机器上 数据块冗余存储在多台机器以提高数据块的高可用性 遵从主/从(master/slave)结构的分布式存储集群 ...

  3. Hadoop(八)Java程序访问HDFS集群中数据块与查看文件系统

    前言 我们知道HDFS集群中,所有的文件都是存放在DN的数据块中的.那我们该怎么去查看数据块的相关属性的呢?这就是我今天分享的内容了 一.HDFS中数据块概述 1.1.HDFS集群中数据块存放位置 我 ...

  4. oracle --(一)数据块(data Block)

    基本关系:数据库---表空间---数据段---分区---数据块 数据块(data Block)一.数据块Block是Oracle存储数据信息的最小单位.这里说的是Oracle环境下的最小单位.Orac ...

  5. HDFS(Hadoop Distributed File System )hadoop分布式文件系统。

    HDFS(Hadoop Distributed File System )hadoop分布式文件系统.HDFS有如下特点:保存多个副本,且提供容错机制,副本丢失或宕机自动恢复.默认存3份.运行在廉价的 ...

  6. HDFS中数据节点数据块存储示例

    数据块在数据节点上是按照如下方式存储的. 首先是一个存储的根目录/Hadoop/data/dfs/dn,如下图所示: 接着进入current目录,如下图所示: 再进入后续的BP-433072574-1 ...

  7. Linux 文件系统(一)---虚拟文件系统VFS----超级块、inode、dentry、file

    转自:http://blog.csdn.net/shanshanpt/article/details/38943731 http://elixir.free-electrons.com/linux/v ...

  8. Hadoop分布式文件系统使用指南

    原文地址:http://hadoop.apache.org/docs/r1.0.4/cn/hdfs_user_guide.html 目的 概述 先决条件 Web接口 Shell命令 DFSAdmin命 ...

  9. HDFS源码分析之数据块及副本状态BlockUCState、ReplicaState

    关于数据块.副本的介绍,请参考文章<HDFS源码分析之数据块Block.副本Replica>. 一.数据块状态BlockUCState 数据块状态用枚举类BlockUCState来表示,代 ...

随机推荐

  1. CDH 5.16.1 离线部署 & 通过 CDH 部署 Hadoop 服务

    参考 Cloudera Enterprise 5.16.x Installing Cloudera Manager, CDH, and Managed Services Installation Pa ...

  2. Overlay技术

  3. Arcengine效率探究之一——属性的读取(转载)

    http://blog.csdn.net/lk103852503/article/details/6566652 在写一个对属性表的统计函数时,发现执行速度奇慢无比,百思不得其解,其实算法并不复杂,后 ...

  4. python引入pytesseract报错:ValueError: Attempted relative import in non-package

    http://blog.csdn.net/yifengfuxue/article/details/79015651

  5. CSAPP lab2 二进制拆弹 binary bombs phase_5

    给出对应于7个阶段的7篇博客 phase_1  https://www.cnblogs.com/wkfvawl/p/10632044.htmlphase_2  https://www.cnblogs. ...

  6. NS2安装过程中环境变量设置的问题(ns-2.35)

    nam: Can't find a usable tk.tcl in the following directories: */ns-allinone-2.35/tcl8.5.10/library/t ...

  7. C++:钻石继承与虚继承

    QUESTION:什么是钻石继承? ANSWER:假设我们已经有了两个类Father1和Father2,他们都是类GrandFather的子类.现在又有一个新类Son,这个新类通过多继承机制对类Fat ...

  8. 团队冲刺随笔合集—Beta阶段

    第一篇:http://www.cnblogs.com/Team-Blog/p/9049271.html 第二篇:https://www.cnblogs.com/Team-Blog/p/9064478. ...

  9. Ubuntu16.04配置TOMCAT8

    基于虚拟机Ubuntu16.04配置Tomcat过程 一.安装JDK 首先要确定好要安装的jdk和tomcat版本能对的上,具体如图所示: 版本选择是Jdk1.8,首先上官网http://www.or ...

  10. Alpha发布评价

    1.奋斗吧兄弟组 食物链系统 是一个比较成熟的工具,可以应用于生物课程的辅助讲解,具有很强的软件目的性和实用性. 2.Newbee 俄罗斯方块 因为选了很经典的游戏,所以在创新上下了一定功夫,可是没有 ...