现在的位置: 首页 > 综合 > 正文

Hadoop学习笔记_7_分布式文件系统HDFS –DataNode体系结构

2017年03月05日 ⁄ 综合 ⁄ 共 2040字 ⁄ 字号 评论关闭

分布式文件系统HDFS

--DataNode体系结构

 

1.概述

DataNode作用:提供真实文件数据的存储服务。

文件块(block):最基本的存储单位[沿用的Linux操作系统地概念]。对于文件内容而言,一个文件的长度大小是size,那么从文件的0偏移开始,按照固定的大小,顺序对文件进行划分并编号,划分好的每一个块称一个Block

Linux操作系统不同的是,一旦上传了一个小于Block大小的文件,则该文件会占用实际文件大小的空间.

 

 

2.进入hdfs-default.xml

<property>
  <name>dfs.block.size</name>
  <value>67108864</value>
  <description>The default block size for new files.</description>
</property>

显示HDFS默认Block大小是64MB(67108864B),如果一个256MB文件,共划分为256/64=4Block.NameNode将这些Block存储到不同的DataNode.因此,一个文件所有的Block并不一定是放在一个DataNode.

不同于普通文件系统的是,HDFS中,如果一个文件小于一个数据块的大小,并不占用整个数据块存储空间.

 

 

3.寻找DataNode存放block的位置

<property>
  <name>dfs.data.dir</name>
  <value>${hadoop.tmp.dir}/dfs/data</value>
  <description>Determines where on the local filesystem an DFS data node
  should store its blocks.指定了DataNode存放block块的位置  If this is a comma-delimited
  list of directories, then data will be stored in all named
  directories, typically on different devices.
  Directories that do not exist are ignored.
  </description>
</property>

进入/usr/local/hadoop/tmp/dfs/data/current目录下

 

xx.meta文件是为校验数据

Linux命令stat /,可以查看Linux文件系统Block等信息

 

4.验证文件大小

 

1)hadoop-xxx.tar.gz上传,大小61927560

 

可以看到,文件大小也为61927560(原文件大小)

 

2)然后将jdk-xxx.bin上传,查看

 

两个块!两个块相加=原数据块大小

 

总结:

HDFSDataNode在存储数据时,如果原始文件大小>64MB,则按照64MB大小切分;如果<64MB,则只有一个block,占用磁盘空间为原文件实际大小.

 

 

如果我们手工上传文件到DataNode的目录下的话,使用hadoop fs -ls是查看不到这些文件信息的.

因为这样会绕过NameNode,NameNode会维护着HDFS的目录结构,知道NameNode与数据存储位置信息

所有文件存储的blockNameNode那里都有管理,其在内存中占用一块儿空间;因此,block越多,NameNode的压力越大.:存储3个大小为2K的小文件,其对DataNode的存储没有影响,因为这些文件可以存储在一个block,但对NameNode的内存压力变大.如果是海量小文件,则其压力是惊人的!

但如果block划分过大,也是不好的,因为单点的读写变慢了,而且遇到错误重传时,不方便.

Block划分越小,NameNode内存压力越大

因此需要根据实际情况来划分,一般64M,128M,256M都很常见

  具体修改:

hdfs-default.xml中的相关内容复制到hdfs-site.xml中并修改其数值大小.

 

5.Replication多复本:默认是三个。

<property>
  <name>dfs.replication</name>
  <value>3</value>
  <description>Default block replication. 
  The actual number of replications can be specified when the file is created.
  The default is used if replication is not specified in create time.
  </description>
</property>

 

5.使用浏览器查看HDFS目录结构

浏览器地址栏:

http://hadoop:50070

 

:

:Windows文件系统读写磁盘的基本单位,如果将簇划分为8K,则文件系统在读写文件的时候就是以8K为基本单位来读写.因此,如果一个文件大小为4K,则在磁盘上占据8K空间(有一定的浪费)

抱歉!评论已关闭.