近些年,由于智能手机的迅速普及推动移动互联网技术的蓬勃发展,全球数据呈现爆发式的增长。2018年5月企鹅号的统计结果:互联网每天新增的数据量达2.5*10^18字节,而全球90%的数据都是在过去的两年间创造出来的。随着5G技术的商用,未来连接万物的物联网设备必将带来更大量级的数据。大胆预期,我们即将走进数据大爆炸的时代。诚如吴军博士所说:谁懂得数据的重要性,谁会在工作中善用数据,就更有可能获得成功。
从人类活动开始,数据一直不断在产生,区别仅在于数据的存储方式是否取得了进步。从古老的壁画、纸张到现代的硬盘,存储能力跨数量级地增长。尽管如此,在大数据时代,单纯通过增加硬盘个数来扩展计算机文件系统存储容量的方式,在容量大小、容量增长速度、数据备份、数据安全等方面的表现都差强人意。分布式文件存储系统应运而生。
HDFS主要解决传统方式难以解决或者成本太高的问题,它被设计成适合运行在通用硬件上的分布式文件系统,具有高容错性,适合部署在廉价的机器上运行,能提供高吞吐量的数据访问。
HDFS可能由成百上千的服务器构成,错误监测、快速自恢复是其核心架构目标。HDFS上的典型文件大小一般在GB至TB量级,适用于一次写入多次读取的场景。相较于数据访问的低延时,HDFS在高吞吐量的表现更优异。
HDFS采用Java语言编写,典型架构如下图示,使用master/slave架构,一个HDFS集群由一个NameNode和一定数目的DataNodes组成。NameNode是一个中心服务器,负责管理文件系统的名称空间(namespace)以及客户端对文件的访问。集群中的DataNode一般是一个节点一个,负责管理所在节点的数据存储。HDFS向外暴露文件系统的名称空间,用户能以文件形式在上面存储数据。文件在HDFS上以数据块为单位存储,一个文件被分成一个或多个数据块存储在一组Dat