军队信息化建设网站,做网站搜索推广点击率太低怎么办,官方网站 优帮云,微信公众平台2次开发1.Spark的提交过程(YarnCluster)
1.命令输入脚本启动,启动submit任务 2.解析参数 看是cluster还是yarn单点模式
3.创建客户端YarnClusterApplication 4.封装提交命令交给RM 5.RM在NM上启动ApplicationMaster(AM) 注意AM消耗的资源都是container的 6.AM根据参数启动Driver并且…1.Spark的提交过程(YarnCluster)
1.命令输入脚本启动,启动submit任务 2.解析参数 看是cluster还是yarn单点模式
3.创建客户端YarnClusterApplication 4.封装提交命令交给RM 5.RM在NM上启动ApplicationMaster(AM) 注意AM消耗的资源都是container的 6.AM根据参数启动Driver并且初始化SparkContext 7.Driver向RM申请资源,(YarnRM Client) 8.RM返回资源可用列表 9.Driver调用资源,找到空闲的NM,进行Executor注册,然后进行任务的切分和分配. 10.Executor 启动线程池,根据优先算法依次启动task线程. 2.任务的调度
如果是Client模式,则Driver就是本机了,Executor 会直接交互本机,远程访问提交,不能停止,同时所有Executor会交互本机,而本机资源不足,会导致系统和网络崩溃. 根据宽依赖进行Stage划分,根据分区做Task划分 关于本地化调度 其实就是由近到远,依次尝试 如何由近到远?按照等级进行尝试,从高等级到低等级,降级机制.如何避免多次访问通一个节点? 黑名单机制 同一个进程-同一个节点-同一个机架-无所谓-任意地方,不在一个机架
3. Shuffle的原理 1. shuffle为什么那么慢?
因为shuffle要进行排序聚合操作,而且还要落盘
2.针对问题,如何优化?
针对排序聚合操作 在shuffle之前进行提前聚合,减少shuffle聚合的数据量,达到加速落盘操作 增大缓冲区大小和溢出占比,减少溢写次数.直接不排序
3.1 HashShuffle
一个task的一个分区一个文件
3.2HashShuffle的第二版流程
一个核按分区数划分文件数
3.3 SortShuffle
全部写入到一个文件中,保证文件内容有序,同时,使用稀疏索引来确定数据的位置
3.4bypassShuffle
对比3.3直接忽略排序 要求
当reducetask数量小于等于200才能使用不是聚合类的shuffle(reduceByKey) groupby可以 通过hash不进行排序,存入
4.内存
堆内内存: JVM管理的内存 堆外内存: 操作系统管理的内存
JVM默认站 1/64 最大 1/4 超出则内存溢出
1.JVM三大块:
堆:存储程序运行时构建的对象(引用) 栈: 存储方法执行的内容(压栈,栈帧), 与JAVA的栈一致 方法区: 存储类的全部信息
2.关于堆的考虑
根据存活时长存储在不同的 新生代: 老年代 轻量级 Minor GC 对应新生代 重量级 Major GC 对应老年代
当新生代满了后,触发Minor GC,按时间排序,将旧对象放入老年代 老年代满了之后,触发Major GC,如果还不能解决问题,就出现堆内存溢出
3.Spark的内存分块
Storange 存储 广播变量 Execution 执行 shuffle sort Other 其他 元数据 SparkContest 框架中的类对象
Yarn是将资源分配给节点(Driver,Executor),然后每个节点中资源的调配,就是由Spark自己决定