众所周知,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. eclipse中设置项目的编码方式

    1.windows->Preferences...打开"首选项"对话框,左侧导航树,导航到general->Workspace,右侧Text file encoding ...

  2. PAT甲题题解-1034. Head of a Gang (30)-并查集

    给出n和k接下来n行,每行给出a,b,c,表示a和b之间的关系度,表明他们属于同一个帮派一个帮派由>2个人组成,且总关系度必须大于k.帮派的头目为帮派里关系度最高的人.(注意,这里关系度是看帮派 ...

  3. PAT甲题题解-1062. Talent and Virtue (25)-排序水题

    水题,分组排序即可. #include <iostream> #include <cstdio> #include <algorithm> #include < ...

  4. 《Linux内核分析》第三周学习小结 构造一个简单的Linux系统OS

    郝智宇 无转载 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 第三周 构造一个简单的Linux系统Me ...

  5. wordpress学习五: 通过wordpress_xmlrpc的python包远程操作wordpress

    wordpress提供了丰富的xmlrpc接口api来供我们远程操控wp的内容.伟大的开源社区有人就将这些api做了一下封装,提供了一个功能比较完整的python库,库的使用文档地址http://py ...

  6. asp.net 网页拉伸 到300%不变形方法一

    网页拉伸到300%控件和表格不会出现太大变形 方法: 1.对主页面采用百分比宽度(Width="100%") 2.对于表格使用百分比宽度,包括表格宽度和表格中顶端td宽度 3.对t ...

  7. FASIC: A Fast-recovery, Adaptively Spanning In-band Control Plane in Software-Defined Network

    2017 IEEE Global Communications Conference 问题:in-band网络中如果物理链路阻塞或者硬件故障,导致控制器的消息不能及时到达各个交换机导致网络不一致甚至某 ...

  8. Android开发环境的发展演变调研

    Android开发环境的发展演变调研 前几年比较多的方法是用JDK+eclipse+ADT,该方法除了要配置JDK的路径之外, 还要在eclipse里面打开SDK Manage进行相应的操作.不过近两 ...

  9. 调研ios开发环境的演变

    一:ios的发展演变: 以下两句为百度百科IOS,可自行查阅,不多赘述,就Ctrl+c,Ctrl+v两句表示一下. 2007年1月9日苹果公司在Macworld展览会上公布,随后于同年的6月发布第一版 ...

  10. 四则运算app总结

    程序有难度和单项练习,但设计了每次只出5到题,如果做错的话会把错题加入到数据库中,然后通多错题巩固选项可以对错题进行训练. 代码: 普通选项代码: package com.example.szys; ...