Spark on Yarn彻底解密(DT大数据梦工厂)

内容:

1、Hadoop Yarn的工作流程解密;

2、Spark on Yarn两种运行模式实战;

3、Spark on Yarn工作流程解密;

4、Spark on Yarn工作内幕解密;

5、Spark on Yarn最佳实践;

资源管理框架Yarn

Mesos是分布式集群的资源管理框架,和大数据没关系,但是可以管理大数据的资源

==========Hadoop Yarn解析============

1、Yarn是Hadoop推出的资源管理器,是负责分布式(大数据)集群计算的资源管理的,负责资源的管理和分配,基于Yarn我们可以在同一个大数据集群上同时运行多个计算框架,例如Spark、MapReduce、Storm等;

2、Yarn基本工作流程如下图所示:

Resource Manager管理整个集群的资源(主要内存、CPU,有可能包括磁盘IO和网络IO);

每台机器Node Manager管理每个几点资源,并向Resource Manager汇报当前机器的资源情况;

由于每台都会汇报,所以Resource Manager知道如何管理。

当客户端提交程序给Resource Manager的时候,Resource Manager会根据自己对集群资源状况掌握的情况,在具体机器上启动一个进程来运行客户端提交的程序,此时Resource Manager就是整个集群的Master。

Resource Manager不会到具体机器上启动进程,它只会命令Node Manager来启动相应的进程。

App Mstr就是当前提交程序的Driver,它启动的时候,就会跟Resource Manager申请资源,Resource Manager会根据资源情况给App Mstr返回资源情况。

Container是封装资源的容器。向NodeManager汇报资源信息,想App Mstr汇报计算信息。

=====>总结:

3、客户端向Resource Manager提交程序,Resource Manager接受应用程序,并根据集群资源的状况决定在具体某个node上来启动当前提交的应用程序的任务调度器driver(App Mstr),决定后会命令具体的某个node上的资源管理器(Node Manager)来启动一个新的JVM进程,运行程序的Drvier部分,当App Mstr启动的时候(会首先向Resource Manager 注册说明自己负责当前程序的运行),会下载当前App相关的jar等各种资源并基于此决定具体向Resource Manager申请资源的具体内容,Resource Manager接收到App Mastr的资源分配的请求之后会最大化的满足资源分配的请求,并把资源的元数据信息发送给App Mastr,App Mastr收到资源的元数据信息后,会根据元数据信息发指令给具体机器上的Node Manager,让Node Manager来启动具体的Container,Container在启动后必须向App Mastr注册,当App Mstr获得了用于计算的Containers后,开始进行任务的调度和计算,直到作业执行完成。需要补充说明的是,如果Resource Manager 第一次没有能够完全完成请求的资源分配,后续Resource Manager发现集群中有新的可用时,会主动向App Mastr发送新的可用资源的元数据信息以提供更多的资源用于当前程序的运行;

补充说明:

1)Container如果是Hadoop的MapReduce的计算的话,Container不可以复用,如果是Spark On Yarn,Container可以复用;

2)Container具体的销毁,是由Application Master来决定的;

==========Spark on Yarn两种运行模式实战 ============

启动yarn,start-yarn

master:8088 看yarn的控制台

启动hadoop的历史信息

mr-jobhistory-daemon.sh start historyserver --config $HADOOP_CONF_DIR

master:19888 看控制台

此时不需要启动Spark集群,只需要启动Yarn即可,Yarn的Resource Manager,就相当于Spark Standalone模式下Master!

1、Spark on Yarn两种运行模式,唯一的决定因素是,当前Applicatio的任务调度器Drvier运行在什么地方

1)Cluster:Driver运行在Yarn集群下的某台机器上的JVM进程中;

2)Client:Driver运行在当前提交程序的客户机器上;

需要说明的是:无论什么模式,只要当前机器运行了Spark代码,就必须安装Spark!

2、运行Pi

1)client模式:方便在命令终端直接看到运行的过程信息,尤其方便做测试使用;

./spark-submit  --class org.apache.spark.examples.SparkPi --master yarn --deploy-mode client ../lib/spark-examples-1.6.0-hadoop2.6.0.jar 50000

如果没启动yarn

会报尝试连接yarn,说明根本不用启动Spark集群,Spark集群本身启动的就是Master和Worker,其实它本身就是资源管理框架,而yarn就是替代了它的作用。

16/02/13 21:04:07 INFO ipc.Client: Retrying connect to server: Master/192.168.145.131:8032. Already tried 0 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1000 MILLISECONDS)

16/02/13 21:04:08 INFO ipc.Client: Retrying connect to server: Master/192.168.145.131:8032. Already tried 1 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1000 MILLISECONDS)

16/02/13 21:04:09 INFO ipc.Client: Retrying connect to server: Master/192.168.145.131:8032. Already tried 2 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1000 MILLISECONDS)

16/02/13 21:04:10 INFO ipc.Client: Retrying connect to server: Master/192.168.145.131:8032. Already tried 3 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1000 MILLISECONDS)

16/02/13 21:04:11 INFO ipc.Client: Retrying connect to server: Master/192.168.145.131:8032. Already tried 4 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1000 MILLISECONDS)

16/02/13 21:04:12 INFO ipc.Client: Retrying connect to server: Master/192.168.145.131:8032. Already tried 5 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1000 MILLISECONDS)

16/02/13 21:04:13 INFO ipc.Client: Retrying connect to server: Master/192.168.145.131:8032. Already tried 6 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1000 MILLISECONDS)

天机解密:Standalone模式下,启动Spark集群也就是启动Master和Worker,其实启动的是资源管理器。真正作业计算的时候和集群资源管理器没有任何关系。所以Spark的Job不是真正执行作业的时候不是运行在你启动的Spark集群中的,而是运行在一个个JVM中的,只要你在JVM所在的机器上安装配置了Spark即可!!!

2)cluster模式:方便在命令终端直接看到运行的过程信息,尤其方便做测试使用;

./spark-submit  --class org.apache.spark.examples.SparkPi --master yarn --deploy-mode cluster../lib/spark-examples-1.6.0-hadoop2.6.0.jar 50000

3、Spark on Yarn模式下Driver和Application Master的关系:

1)Cluster:Drvier位于Appliation Master进程中,我们需要通过Hadoop默认指定的8088端口来通过Web控制台查看当前的Spark程序运行的信息;

2)Client:Drvier位于提交代码的机器上,此时Application Master依旧位于集群中,且只负责资源的申请,和launch executor,此时启动后的Executor并不会向Application Master注册,只是向Drvier注册!!!

==========Spark on Yarn最佳实践 ============

1、在Spark on Yarn模式下,Hadoop Yarn的配置yarn.nodemanager.local-dir会覆盖Spark的spark.local.dir!!!

2、在实际上产环境下,一般都是采用Cluster模式,我们会通过historyServer来获取最终全部的运行信息;

3、如果想直接看运行的日志信息,可以使用以下命令:

yarn logs -applicationID <app ID>

王家林老师名片:

中国Spark第一人

新浪微博:http://weibo.com/ilovepains

微信公众号:DT_Spark

博客:http://blog.sina.com.cn/ilovepains

手机:18610086859

QQ:1740415547

邮箱:[email protected]

时间: 2024-10-12 17:41:02

Spark on Yarn彻底解密(DT大数据梦工厂)的相关文章

Spark高级排序彻底解密(DT大数据梦工厂)

内容: 1.基础排序算法实战: 2.二次排序算法实战: 3.更高局级别排序算法: 4.排序算法内幕解密: 为啥讲排序?因为在应用的时候都有排序要求. 海量数据经常排序之后要我们想要的内容. ==========基础排序算法============ scala> sc.setLogLevel("WARN") scala> val x = sc.textFile("/historyserverforSpark/README.md", 3).flatMap(_

Spark Executor内幕彻底解密(DT大数据梦工厂)

内容: 1.Spark Executor工作原理图: 2.ExecutorBackend注册源码解密: 3.Executor实例化内幕: 4.Executor具体是如何工作的? 1.Master发指令给Worker启动Executor: 2.Worker接受到Master发送来的指令,通过ExecutorRunner启动另外一个进程来运行Executor: 3.此时会启动粗粒度的ExecutorBackend(CoarseGrainedExecutorBackend): 4.CoarseGrai

Spark内核架构解密(DT大数据梦工厂)

只有知道内核架构的基础上,才知道为什么要这样写程序? 手工绘图来解密Spark内核架构 通过案例来验证Spark内核架构 Spark架构思考 ==========Spark Runtime的几个概念============ 下载下来运行,基本都是standalone模式,如果掌握了standalone,则yarn和mesos,以后不做特别说明,一律是standalone模式 application=driver+executor,executor是具体处理数据分片,里面是线程池并发的处理数据分片

Spark Sort-Based Shuffle内幕彻底解密(DT大数据梦工厂)

内容: 1.为什么使用Sorted-Based Shuffle: 2.Sorted-Based Shuffle实战: 3.Sorted-Based Shuffle内幕: 4.Sorted-Based Shuffle的不足: 最常用的Shuffle方式,Sorted-Based Shuffle涉及了大规模Spark开发.运维时核心问题,以及答案的要害所在. 必须掌握这一讲内容. 本课是从Spark初级人才成功升级为Spark中级人才的通道. 稍有水平的大公司,面试内容本讲肯定会涉及. ======

SparkRDD解密(DT大数据梦工厂)

第一阶段,彻底精通Spark 第二阶段,从0起步,操作项目 Hadoop是大数据的基础设施,存储等等 Spark是计算核心所在 1.RDD:基于工作集的应用抽象 2.RDD内幕解密 3.RDD思考 不掌握RDD的人,不可能成为Spark的高手 绝对精通RDD,解决问题的能力大大提高 各种框架底层封装的都是RDD,RDD提供了通用框架 RDD是Spark的通用抽象基石 顶级SPark高手, 1.能解决问题.性能调优: 2.Spark高手拿Spark过来就是修改的 ==========基于工作集的应

Spark Runtime(Driver、Masster、Worker、Executor)内幕解密(DT大数据梦工厂)

内容: 1.再论Spark集群部署: 2.Job提交解密: 3.Job的生成和接受: 4.Task的运行: 5.再论Shuffle: 从一个作业视角,透过Master.Drvier.Executor来透视Spark Runtime ==========再论Spark集群部署============ 官网中关于集群的部署: 默认情况下,每个Worker下有一个Executor,会最大化的使用内存和CPU. Master发指令给Worker来分配资源,不关心Worker能不能分配到这个资源,他发给多

Spark天堂之门(SparkContext)解密(DT大数据梦工厂)

内容: 1.Spark天堂之门: 2.SparkContext使用案例鉴赏: 3.SparkContext内幕: 4.SparkContext源码解密: SparkContext是编写任意Spark程序的第一个对象,用SparkConf为传入的参数 ==========Spark天堂之门:SparkContext !!!============ 1.Spark程序在运行的时候分为Driver和Executors: 2.Spark程序编写是基于SparkContext的,具体来说包含两个方面: 1

从Spark架构中透视Job(DT大数据梦工厂)

内容: 1.通过案例观察Spark架构: 2.手动绘制Spark内部架构: 3.Spark Job的逻辑视图解析: 4.Spark Job的物理视图解析: Action触发的Job或者checkpoint触发Job ==========通过案例观察Spark架构 ============ jps看到的master,作用:管理集群的计算资源,主要指内存.CPU,也会考虑磁盘或者网络:还做接受客户端提交的作业请求,分配资源.说明:作业粗粒度,提交的时候就分配资源,作业运行的过程时候,一般用已分配的资

Master HA彻底解密(DT大数据梦工厂)

内容: 1.Master HA解析: 2.Master HA的四种方式: 3.Master HA的内部工作机制: 4.Master HA的源码解密: 本讲主要源码角度分析Master HA,因为在生产环境必然要做的 ==========Master HA解析============ Spark是Master-Slave的结构 现在业界是1个Master Active,2个以上standby 如果有HA的话,切换active的时候,会在上次运行的基础上继续运行 Drvier提交程序.申请资源,是跟