Hadoop概述
通过存储海量数据、快速处理海量数据、从海量数据中进行分析,以产生价值
- Hadoop 2.x核心组件
- Hadoop Common:为其它Hadoop模块提供基础设施。
- Hadoop HDFS:一个高可靠、高吞吐量的分布式文件系统,主要负责数据的存储。
- Hadoop MapReduce:分布式、离线、并行计算框架,一般用于对HDFS上的数据处理。
- Hadoop YARN: 集群任务调度与资源管理,主要负责对于任务资源的调度分配。
- HDFS
- NameNode: 一个中心服务器,单一节点(简化系统的设计和实现),负责管理文件系统的名字空间(namespace)以及客户端对文件的访问。 主要负责文件元数据的管理。
- DataNode: 主要负责具体数据块的存储,会周期性的给NameNode汇报当前DataNode上的所有块信息。
- SecondaryNameNode:主要作为NameNode元数据存储的备份节点;但是在Hadoop2.x版本中,支持多 NameNode后,SecondaryNameNode可以不考虑啦!。
- 在HDFS中,文件是以块的形式存储在不同的DataNode机器上的,默认块大小 为128M(可修改)。
- 在HDFS中,文件存储默认是采用备份机制的,也就是说对于同一个文件块,会 将其保存在多个不同的DataNode机器上,以达到数据高可用性。默认的数据备 份因子为3(可修改)。
- MapReduce
MapReduce是一种“分而治之”的计算思想,将任务分为map和reduce两个阶段, map阶段主要是“分”的操作:将任务分成多个小任务执行,reduce阶段主要是“合” 的操作:将map阶段的输出进行合并,并将合并之后的最终结果输出到磁盘文件中。
MapReduce主要由5个阶段组成,其中编程人员主要负责map和reduce阶段,其它阶 段由MapReduce框架实现。
- Input:数据输入以及数据分片,定义如何从HDFS等存储系统中输入数据
- Map:对每个数据片进行数据处理,并将处理后的数据按照业务代码规则输出
- Shuffle:对Map的输出数据进行排序、分组等操作,供Reduce获取
- Reduce:获取Map的输出数据,将获取的数据合并聚合,并将聚合结果输出
- Output:定义如何将Reduce的输出值输出到HDFS等存储系统中
- Yarn
- ResourceManager
处理客户端请求,启动/监控ApplicationMaster,监控NodeManager,集群资源分配与调度
2. ApplicationMaster
为应用程序申请资源,并分配给内部任务,任务监控与容错,每个运行在Spark上的应用都有一个该进程运行 3. NodeManager
单个节点上的资源管理,处理来自ResourceManager的命令,处理来自ApplicationMaster的命令
4. Container
对任务运行环境的抽象,封装了CPU、 内存等多维资源以及环境变量、启动命令等任务运行相关的信息
对任务运行环境的抽象,封装了CPU、 内存等多维资源以及环境变量、启动命令等任务运行相关的信息