背景介绍
随着数据产生的越来越多,在传统单机服务种,如果单个服务器去处理数据,那么将数据读入内存种进行处理,有如下两个弊端
- 磁盘IO的速度远远慢于内存IO的速度,花费大量时间在磁盘IO上会影响性能
- 数据量太大的情况下,并不能将数据一次性的读到内存,需要分几次处理,效率很低
为了提高效率,我们将大数据文件分块存储在不同的服务器中,当需要计算的时候,只需要让这些服务器去计算存储在它本事的磁盘中的数据,然后将数据汇总即可,可以做到并行计算,提高整个计算的效率,而且在数据存储的时候,为了保证数据的可靠性,可以将某块数据存储在不同的服务器中(replicate,默认存储在3个数据节点中),避免某台服务器宕机后无法计算。
相关组件介绍
HDFS
hadoop的分布式文件存储,主要包括Namenode和Datanode这两个关键部分
NameNode
主要存储的元数据信息,对于文件来说包括数据块的描述信息,修改时间,访问时间等:对于目录来说,修改时间访问控制信息等。<br />运行时这些元数据信息都存储在内存中,整个HDFS可存储的文件数受限于NameNode的内存大小。NameNode如果宕机后,整个hadoop体系都会出现问题,同时NameNode是存储在内存中的,需要定时将内存中的数据存储在磁盘中,但是不会保存block的位置信息,block的位置信息是由DataNode上报给NameNode的,NameNode在每次重启后会动态的重建。
DataNode
保存具体的block数据,负责数据的读写和复制操作;datanode启动时会向namenode报告当前存储的block快信息;datanode之间会进行通信,复制block保证数据的冗余性。
SecondaryNameNode
引出SecondaryNameNode主要是为了解决NameNode的压力过大的问题,其主要用来合并fsimage和editlog文件生成新的fsimage,将其发送给namenode(这一过程叫做checkpoint),但是namenode宕机后,集群仍然不可用。
参考:https://www.cnblogs.com/sddai/p/9281235.html
MapReduce
hadoop的分布式计算框架
MapReduce框架将任务分为map阶段和reduce阶段,其采取的思想就是分而治之的思想,很好的诠释了计算向数据移动这一概念,后续会单独出一篇详细介绍其实现的过程。
Yarn
hadoop的资源管理框架
yarn是hadoop的分布式资源管理器。
其大致架构:
ResouceManager
ApplicationMaster
NodeManager
Container
可通过“⌘+K”插入引用链接,或使用“本地文件”引入源文件。
