HDFS = hadoop distributed file system
** NameNode** : 存储元数据 (metadata)。
metadata : a set of data that describes and gives information about other data.
元数据 :存放别的数据的信息的数据就是元数据,有点像Linux中的文件表
** DataNode ** : 块存储(block storage),默认的每块是64M,存储的数据默认会复制为三份存放以防某份挂掉,也就是提供了容错的功能。
DataNode听从来自NameNode的命令,用于块创建,删除和复制。复制提供了两个关键功能。容错(Fault Tolerance)和data locality(个人翻译为数据局部性性,Haoop会只在需要运行代码的节点上运行代码)。
HDFS示意图data locality:当数据集存储在HDFS中时,它被划分为块并存储在Hadoop集群中的DataNode上。当在数据集执行MapReduce作业时,各个Mappers将处理这些块(输进行入分片处理)。如果Mapper不能从它执行的节点上获取数据,数据需要通过网络从具有这些数据的DataNode拷贝到执行Mapper任务的节点上(the data needs to be copied over the network from the DataNode which has the data to the DataNode which is executing the Mapper task)。假设一个MapReduce作业具有超过1000个Mapper,在同一时间每一个Mapper都试着去从集群上另一个DataNode节点上拷贝数据,这将导致严重的网络阻塞,因为所有的Mapper都尝试在同一时间拷贝数据(这不是一种理想的方法)。因此,将计算任务移动到更接近数据的节点上是一种更有效与廉价的方法,相比于将数据移动到更接近计算任务的节点上(it is always effective and cheap to move the computation closer to the data than to move the data closer to the computation)。
from: [Hadoop]Hadoop上Data Locality
总结:HDFS通过在多个节点上分割文件来提供可扩展的大数据存储。
网友评论