介绍
HDFS(Hadoop Distributed File System)是一个分布式文件系统,可以运行在廉价的硬件上。与其他已有的分布式文件系统类似,但是最明显的区别就是HDFS时一个高容错、可以部署在廉价的机器上。
HDFS对于读取数据具有高吞吐量,且适用于数据集大的场景。
普通的文件系统:Linux、Windows、MacOS,这些文件系统都有目录结构,存放的是文件或者文件夹,并且可以对外提供服务,例如创建、修改、删除、查看、移动等等。
既然HDFS是一个分布式的文件系统,那么上面的特性也同样具有。
HDFS设计目标
- Hardware Failure 硬件故障:硬件故障时非常常见的,在HDFS中可能会有成百上千个Server集群组成,每一个server只存储某个文件的一部分数据。HDFS默认采用3个副本机制。
- Streaming Data Access流式数据访问:应用程序运行在HDFS需要通过数据流的方式运行,与普通的文件系统有一定的差别。HDFS更多的考虑的时数据批处理而不是用户的交互。HDFS关注的时吞吐量而不是低延时,因此不适合实时处理。
- Large Data Sets 大规模数据集:HDFS中的一个文件大小可能GB甚至TB。
- Moving Computation is Cheaper than Moving Data 移动计算比移动数据更划算。假设有两台机器A和B,作业分配在B,但是B上没有数据,需要把A中的数据拷贝到B上;但是如果把计算移动到A,就可以省掉移动数据所带来的带宽和IO消耗。因此移动计算的成本较低。也就是说如果数据在A上,应该尽可能把计算放在A上。