hadoop spark 总结

yarn  由,资源管理器rm,应用管理器am appMaster,节点管理器nm 组成!node

图侵删缓存

 

 

yarn 的设计,是为了代替hadoop 1.x的jobtracker 集中式一对多的资源管理「资源管理,任务监控,任务调度」,而yarn是 分而治之 ,使全局资源管理器减轻压力。架构

rm 监控每个applicationmaster就能够了,而每个applicationmaster则监控 本身node节点的全部任务「跟踪做业状态,进度,故障处理」,因此降低了压力。并发

    rm资源管理器由调度器和应用管理者appmanager 功能模块组成。以调度策略分容量调度器和公平调度器。前者是集群吞吐量利用率最大化,后者基于内存公平的调度。app

而应用管理者负责接收提交做业,申请,负责做业容器失败时的重启。分布式

 

hdfs oop

1 fsimgae,editlog 都是序列化文件,启动时会加载到内存学习

记录目录结构和crud等操做spa

 2块的概念,让其支持大规模存储,数据备份和管理。线程

 

map reduce VS rdd 技术

 

1 建立rdd对象;

2 sparkContext负责计算rdd之间的依赖关系,构建DAG;

3 DAGScheduler负责把DAG图分解成多个阶段,每一个阶段包含多个任务,每一个任务会被taskScheduler分发给各个工做节点worknode上的executor去执行。

「在DAG中进行反向解析,遇到宽依赖就断开,遇到窄依赖就把当前的rdd加入到当前的阶段中」 

rdd的窄依赖与宽依赖, 以  父rdd只被一个子rdd依赖  一对一,多对一,区分是窄依赖,不然是宽依赖!

由于这是内存块,若是是窄依赖,则能够彻底打包 分红一个线程并发执行! 而若是被其它多个子rdd依赖,即宽依赖,就可能rdd数据会变化,

等等,须要等待以前的阶段完成,才能继续执行!

这就是DAG的设计,比mapreduce快的缘由。mapreduce,的reduce业务须要等map 执行完才能开始,而没有并发!这是依赖的! 

还有一个缘由是,一个是内存,一个是磁盘io。

 

核心思想:分而治之!  把大的数据集分片而小多个 小数据集,对应多个map 并行处理。

结束后,以key value 中间结果,让reduce'减小' 整合,即具备相同的key 的结果分到同一个reduce任务!

整个过程,map输入文件,reduce任务处理结果都是保存到分布式文件系统中,而中间结果则保存到本地存储中,如磁盘。

只有当map处理所有结束后,reduce过程才能开始!

shuffle过程:map的结果,进行,分区,排序,合并等处理并交给reduce的过程,即上图。

map的shuffle:每一个map把结果首先写入缓存,当满了就溢写到磁盘,并清空缓存。 为了让不一样的reduce方便拿数据,会分好区,map结果会排序合并等操做处理。

reduce的shuffe: 从多个map中领回属于本身处理那部分数据,而后对数据合并merge后给reduce处理。

 

 

 从学习hadoop和spark 过程,yarn代替jobstracker,spark代替mapreduce,明白,原来高手们写代码,作产品架构设计一开始的时候,也不是完善完美的,

须要先作出来,在实际环境去调优,修正,发现问题,而后解决问题,不断完善甚至改掉原来的架构或思想。

相关文章
相关标签/搜索