hadoop分为三个组件
- HDFS负责海量数据的分布式存储 (存储数据)
- MapReduce是一个计算模型,负责海量数据的分布式计算 (计算,生产不用,设计理念指导其他框架,spark、flink )
- YARN主要负责集群资源的管理和调度
HDFS概念
分布式文件系统的特点:
1、分布式文件系统可以有效解决数据的存储和管理难题
2、将固定于某个地点的某个文件系统,扩展到任意多个地点/多个文件系统
3、众多的节点组成一个文件系统网络
4、每个节点可以分布在不同的地点,通过网络进行节点间的通信和数据传输
5、在使用分布式文件系统时,无需关心数据是存储在哪个节点上、或者是从哪个节点获取的,只需要像使用本地文件系统一样管理和存储文件系统中的数
Hadoop分布式文件系统(HDFS)是指被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统(Distributed File System)。
HDFS具有高度容错能力,旨在部署在低成本硬件上。
HDFS提供对应用程序数据的高吞吐量访问,适用于具有大型数据集的应用程序。
HDFS放宽了一些POSIX要求,以实现对文件系统数据的流式访问
HDFS优势:
1、可构建在廉价机器上,设备成本相对低 2、高容错性,HDFS将数据自动保存多个副本,副本丢失后,自动恢复,防止数据丢失或损坏 3、适合批处理,HDFS适合一次写入、多次查询(读取)的情况,适合在已有的数据进行多次分析,稳定性好 4、适合存储大文件,其中的大表示可以存储单个大文件,因为是分块存储,以及表示存储大量的数据
HDFS劣势:
1、由于提高吞吐量,降低实时性 2、由于每个文件都会在namenode中记录元数据,如果存储了大量的小文件,会对namenode造成很大的压力 3、不合适小文件处理,在mapreduce的过程中小文件的数量会造成map数量的增大,导致资源被占用,而且速度慢。 4、不适合文件的修改,文件只能追加在文件的末尾,不支持任意位置修改,不支持多个写入者操作
HDFS设计思路
1、存储超大文件
这里的“超大文件”是指几百MB、GB甚至TB级别的文件。
2、最高效的访问模式是 一次写入、多次读取(流式数据访问)
HDFS存储的数据集作为hadoop的分析对象。在数据集生成后,长时间在此数据集上进行各种分析。每次分析都将设计该数据集的大部分数据甚至全部数据,因此读取整个数据集的时间延迟比读取第一条记录的时间延迟更重要。
3、运行在普通廉价的服务器上
HDFS设计理念之一就是让它能运行在普通的硬件之上,即便硬件出现故障,也可以通过容错策略来保证数据的高可用。
如何实现的呢?
1.大文件被切割成小文件,使用分而治之的思想让很多服务器对同一个文件进行联合管理
2. 每个小文件做冗余备份,并且分散存到不同的服务器,做到高可靠不丢失