大数据第二天 1.YARN(管理和调度集群中的各类资源)
1.1 产生的背景:
1.直接源于MR版本1的缺陷(如:单点故障、难以支持MR之外的计算框架等)
2.多计算框架各自为站,数据共享困难(如:MR离线计算框架 Storm实时计算框架 Spark内存计算框架)
1.2 架构(采用master-slave结构)
ResourceManager(管理和调配YARN集群的资源)
特性:整个集群只有一个
作用:
处理客户端请求
启动和监控ApplicationMaster
监控NodeManager
资源分配和调度
容错性:存在单点故障(正在实现HA 即主备架构 主一旦挂掉,备切换)
NodeManager(执行计算作业)
特性:可以多个
作用:
单个节点上的资源管理和任务管理
处理来自ResourceManager的命令
处理来自ApplicationMaster的命令
容错性:失败后,RM将失败任务告诉对应AM,由AM决定如何处理失败的任务
ApplicationMaster(负责应用程序的管理)
特性:每个应用有一个
作用:
数据切分
任务监控和容错
容错性:失败后由RM负责重启;AM需处理内部任务的容错问题;会自动保存已经运行完成的任务,重启后无需重新运行
Container(对任务运行环境的抽象)
系列信息:
任务启动命令
任务运行环境
任务运行资源
1.3 原理
1.客户端client发送任务请求给ResourceManager
2.ResourceManager收到请求后根据资源占用情况分配对应NodeManager
3.NodeManager收到ResourceManager的命令后开辟一个ApplicationMaster
4.ApplicationMaster对任务分析和数据切分后,将要占用的资源情况发送给ResourceManager
5.ResourceManager根据实时的资源占用情况进行动态分配资源
6.ApplicationMasterna拿到资源后再跟对应的NodeManager进行通信
7.NodeManager得到计算任务后,分配对应的Container容器来执行对应的Task任务
1.4 调度策略
a.双层调度策略
RM将资源分配给AM
AM将资源进一步分配给各个任务
b.基于资源预留的调度策略
当资源不够时,会为任务预留,直到资源充足
1.5 YARN与计算框架的关系
如果YARN是安卓系统的話,那么计算框架就是系统中的一个APP
其中计算框架有:
基于离线计算框架————MR
基于内存计算框架————Spark
基于流式计算框架————Storm 2.MapReduce(基于离线计算框架)
2.1 MapReduce特点:
易于编程
良好的扩展性
高容错性
适合海量数据的离线处理
2.2 基本过程
Map阶段-Shuffle-Reduce阶段
Map阶段:
输入数据格式解析————InputFormat
输入数据处理————Mapper
数据分组————Partitioner
Reduce阶段:
数据处理————Redecer
数据输出格式————OutputFormat
2.3 基本思想
大文件分为若干个小文件,计算各个小文件得到结果,然后再汇总输出
2.4 架构
采用YARN架构
2.5 应用场景
简单的数据统计 比如:网站的PV UV
搜索引擎建索引
海量数据查找
复杂的数据分析算法实现 比如:聚类、分类、推荐、图算法
2.6 Java编程
1.导jar包(旧包兼容2.0,新包不一定支持)
2.编写mapper
3.编写reduce
4.打包
5.发布