框架的作用:每一个框架中都封装了大量的工具类,它的最大作用就是帮助使用者节省创建工程的时间,把大家共通性的需求和问题做以实现

分类:大数据也包含很多种类的框架,一般分成两类,即大数据计算框架和大数据存储框架。

负载均衡:能够分散到多个服务器上进行排队提示的内容坚决不要集中到一台服务器上来。

一:Hadoop框架(可以看成是一个生态圈,是用java开发的)

组成部分:(Hadoop 四大组件)

(1)Hadoop Common:这是Hadoop的核心功能,是对其他的Hadoop模块做支撑的,里面包含了大量的对底层文件、网络的访问,对数据类型的支持,以及对象的序列化、反序列化的操作支持等。(2)Hadoop Distributed File System(HDFSTM):Hadoop分布式文件系统,也就是上面提到的HDFS,它用于存储大量的数据。(3)Hadoop YARN:一个任务调度和资源管理的框架。(4)Hadoop MapReduce:基于YARN的并行大数据处理组件。

Hadoop2.0包含这4部分,而Hadoop1.0只含有MapReduce和HDFS,而Hadoop 2.0环境的MapReduce依赖于YARN框架,在YARN框架启动后,MapReduce在需要运行的时候把任务提交给YARN框架,让YARN框架来分配资源择机运行,这是两者最大的区别

 

MapReduce简介:

(1)MapReduce是解决问题并行任务的一种模型,将一个可拆解的任务分散到多个计算节点进行计算,最后合并计算结果。

(2)原理:(实际就是先并发计算,后汇总结果)

完整的流程:输入文件  -> Map -> 中间结果 ->Reduce -> 结果

Map的处理过程如下:第一步:把输入文件读进来。第二步:输出构造一个Key-Value文件。

Reduce的处理过程如下:第一步:把文件读进来。第二步:对一个Key的文本部分进行处理。不同的Key会被分给不同的Reduce程序实例。

 mapreduce的核心程序运行机制

     1、概述

一个完整的 mapreduce 程序在分布式运行时有两类实例进程:
 (1) MRAppMaster:负责整个程序的过程调度及状态协调  (该进程在yarn节点上)
 (2) Yarnchild:负责 map 阶段的整个数据处理流程         
 (3) Yarnchild:负责 reduce 阶段的整个数据处理流程
以上两个阶段 maptask 和 reducetask 的进程都是 yarnchild,并不是说这 maptask 和 reducetask 就跑在同一个 yarnchild 进行里
(Yarnchild进程在运行该命令的节点上)

      2、mapreduce程序的运行流程(经典面试题)

(1) 一个 mr 程序启动的时候,最先启动的是 MRAppMaster, MRAppMaster 启动后根据本次 job 的描述信息,计算出需要的 maptask 实例数量,然后向集群申请机器启动相应数量的 maptask 进程
(2) maptask 进程启动之后,根据给定的数据切片(哪个文件的哪个偏移量范围)范围进行数 据处理,主体流程为:
    A、 利用客户指定的 inputformat 来获取 RecordReader 读取数据,形成输入 KV 对
    B、 将输入 KV 对传递给客户定义的 map()方法,做逻辑运算,并将 map()方法输出的 KV 对收 集到缓存
    C、 将缓存中的 KV 对按照 K 分区排序后不断溢写到磁盘文件 (超过缓存内存写到磁盘临时文件,最后都写到该文件,ruduce 获取该文件后,删除 )
(3) MRAppMaster 监控到所有 maptask 进程任务完成之后(真实情况是,某些 maptask 进 程处理完成后,就会开始启动 reducetask 去已完成的 maptask 处 fetch 数据),会根据客户指 定的参数启动相应数量的 reducetask 进程,并告知 reducetask 进程要处理的数据范围(数据分区)
(4) Reducetask 进程启动之后,根据 MRAppMaster 告知的待处理数据所在位置,从若干台 maptask 运行所在机器上获取到若干个 maptask 输出结果文件,并在本地进行重新归并排序, 然后按照相同 key 的 KV 为一个组,调用客户定义的 reduce()方法进行逻辑运算,并收集运算输出的结果 KV,然后调用客户指定的 outputformat 将结果数据输出到外部存储


 

3.动手在centos里面搭一个hadoop伪分布式模式