标签:hdfs hadoop hadoop集群 分布式文件系统 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=4个Block.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上传,查看
两个块!两个块相加=原数据块大小
总结:
HDFS的DataNode在存储数据时,如果原始文件大小>64MB,则按照64MB大小切分;如果<64MB,则只有一个block,占用磁盘空间为原文件实际大小.
如果我们手工上传文件到DataNode的目录下的话,使用hadoop fs -ls是查看不到这些文件信息的.
因为这样会绕过NameNode,而NameNode会维护着HDFS的目录结构,知道NameNode与数据存储位置信息
所有文件存储的block在NameNode那里都有管理,其在内存中占用一块儿空间;因此,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目录结构
浏览器地址栏:
附:
簇:Windows文件系统读写磁盘的基本单位,如果将簇划分为8K,则文件系统在读写文件的时候就是以8K为基本单位来读写.因此,如果一个文件大小为4K,则在磁盘上占据8K空间(有一定的浪费)
Hadoop学习笔记_7_分布式文件系统HDFS --DataNode体系结构,布布扣,bubuko.com
Hadoop学习笔记_7_分布式文件系统HDFS --DataNode体系结构
标签:hdfs hadoop hadoop集群 分布式文件系统 datanode
原文地址:http://blog.csdn.net/zjf280441589/article/details/38445267