[HDFS]初识 HDFS

[HDFS]初识 HDFS

Hadoop 有一个称为HDFS的分布式文件系统,有时也简称为DFS。
HDFS架构有几个关键的组件:block,namenode,datanode,secondary namenode。node

一,black(数据块)
平常用的磁盘都有默认的数据块大小,这是磁盘进行数据读和写的最小单位。文件系统经过磁盘块来管理该文件系统中的块。文件系统的块通常是几千字节,而磁盘块通常是512字节。文件系统的块对于用户来讲是透明的。
HDFS也有块(black),可是大得多,默认为64M,大多数状况是128M。HDFS上的文件也会被划分为块大小的多个分块,做为独立的存储单元,可是HDFS中小于一个块大小的文件不会单独占据整个块的空间。web

这样对块的进行抽象会带来许多好处:
1,文件的大小能够大于网络中任意一个磁盘的容量,文件的全部块并不须要存储在同一个磁盘上,能够利用集群的任意一个磁盘进行存储。
2,简化管理,管理单元为数据块而非整个文件,而且文件的元数据(下文再说)与文件的数据分开存储和管理。
3,HDFS还会对块进行复制,将块的副本存储在其余机器上,确保块,磁盘或者机器故障,数据不会丢失。若是法像一个块不可用,系统会从其余机器读取另外一个副本。具体过程之后的博文会说明。网络

为什么HDFS的块设置的如此大?
块设置的如此之大,是为了最小化寻址时间,若是块设置的足够大,定位于这个快的开始位置时间会大大减少。所以,传输一个有多个块组成的文件的时间取决于磁盘传输速率。固然也不能设置得过大,MapReduce的map一般一次处理一个块的数据。块越大,任务数越少,启动的map减小,整个做业运行的速率会比较慢。架构

二,namenode
HDFS集群有两类节点以管理者和工做者的工做模式运行,namenode就是其中的管理者。它管理着文件系统的命名空间,维护着文件系统树及整棵树的全部文件和目录。这些信息以两个文件的形式保存于内存或者磁盘,这两个文件是:命名空间镜像文件fsimage和编辑日志文件edit logs ,同时namenode也记录着每一个文件中各个块所在的数据节点信息。分布式

文件包括:
(1)fsimage:元数据镜像文件。存储某一时段NameNode内存元数据信息。
(2)edits:操做日志文件。
(3)fstime:保存最近一次checkpoint的时间
namenode的特色:
(1)namenode始终在内存中存储元数据(metedata),使得“读操做”更加快、
(2)有“写请求”时,向edits文件写入日志,成功返回后才修改内存,并向客户端返回。
(3)fsimage文件为metedata的镜像,不会随时同步,与edits合并生成新的fsimage。svg

三,secondary namenode
以前的博文有详细的说明:http://blog.csdn.net/yangjjuan/article/details/71107012oop

四,datanode
文件系统的工做节点,根据须要存储并检索数据块,而且按期向namenode发送它们所存储的块的列表。提供真实文件数据的存储服务,Replication。多复本。默认是三个。
hdfs-site.xml的dfs.replication属性设置。.net