1.Spark-Submit 源码剖析
2.大数据分析工具有哪些,码剖好用的有吗
3.Spark源码分析——yarn-cluster模式下Application提交源码实现
Spark-Submit 源码剖析
直奔主题吧:
常规Spark提交任务脚本如下:
其中几个关键的参数:
再看下cluster.conf配置参数,如下:
spark-submit提交一个job到spark集群中,码剖大致的码剖经历三个过程:
代码总Main入口如下:
Main支持两种模式CLI:SparkSubmit;SparkClass
首先是checkArgument做参数校验
而sparksubmit则是通过buildCommand来创建
buildCommand核心是AbstractCommandBuilder类
继续往下剥洋葱AbstractCommandBuilder如下:
定义Spark命令创建的方法一个抽象类,SparkSubmitCommandBuilder刚好是实现类如下
SparkSubmit种类可以分为以上6种。SparkSubmitCommandBuilder有两个构造方法有参数和无参数:
有参数中根据参数传入拆分三种方式,码剖然后通过OptionParser解析Args,码剖构造参数创建对象后核心方法是码剖滴血附图 指标源码通过buildCommand,而buildCommand又是码剖通过buildSparkSubmitCommand来生成具体提交。
buildSparkSubmitCommand会返回List的码剖命令集合,分为两个部分去创建此List,码剖
第一个如下加入Driver_memory参数
第二个是通过buildSparkSubmitArgs方法构建的具体参数是MASTER,DEPLOY_MODE,码剖FILES,码剖CLASS等等,码剖这些就和我们上面截图中是码剖对应上的。是码剖通过OptionParser方式获取到。
那么到这里的码剖话buildCommand就生成了一个完成sparksubmit参数的命令List
而生成命令之后执行的任务开启点在org.apache.spark.deploy.SparkSubmit.scala
继续往下剥洋葱SparkSubmit.scala代码入口如下:
SparkSubmit,kill,request都支持,后两个方法知识支持standalone和Mesos集群方式下。dosubmit作为函数入口,撬板公式源码其中第一步是初始化LOG,然后初始化解析参数涉及到类
SparkSubmitArguments作为参数初始化类,继承SparkSubmitArgumentsParser类
其中env是测试用的,参数解析如下,parse方法继承了SparkSubmitArgumentsParser解析函数查找 args 中设置的--选项和值并解析为 name 和 value ,如 --master yarn-client 会被解析为值为 --master 的 name 和值为 yarn-client 的 value 。
这之后调用SparkSubmitArguments#handle(MASTER, "yarn-client")进行处理。
这个函数也很简单,根据参数 opt 及 value,设置各个成员的值。接上例,parse 中调用 handle("--master", "yarn-client")后,在 handle 函数中,master 成员将被赋值为 yarn-client。
回到SparkSubmit.scala通过SparkSubmitArguments生成了args,然后调用action来匹配动作是submit,kill,request_status,print_version。
直接看submit的action,doRunMain执行入口
其中prepareSubmitEnvironment初始化环境变量该方法返回一个四元 Tuple ,分别表示子进程参数、旺旺客服弹窗源码子进程 classpath 列表、系统属性 map 、子进程 main 方法。完成了提交环境的准备工作之后,接下来就将启动子进程。
runMain则是执行入口,入参则是执行参数SparkSubmitArguments
Main执行非常的简单:几个核心步骤
先是打印一串日志(可忽略),然后是创建了loader是把依赖包jar全部导入到项目中
然后是MainClass的生成,异常处理是ClassNotFoundException和NoClassDeffoundError
再者是生成Application,根据MainClass生成APP,最后调用start执行
具体执行是SparkApplication.scala,那么继续往下剥~
仔细阅读下SparkApplication还是挺深的,所以打算另外写篇继续深入研读~
大数据分析工具有哪些,好用的有吗
大数据分析的前瞻性使得很多公司以及企业都开始使用大数据分析对公司的决策做出帮助,而大数据分析是去分析海量的数据,所以就不得不借助一些工具去分析大数据,。一般来说,数据分析工作中都是有很多层次的,这些层次分别是识客码源码数据存储层、数据报表层、数据分析层、数据展现层。对于不同的层次是有不同的工具进行工作的。下面小编就对大数据分析工具给大家好好介绍一下。
首先我们从数据存储来讲数据分析的工具。我们在分析数据的时候首先需要存储数据,数据的存储是一个非常重要的事情,如果懂得数据库技术,并且能够操作好数据库技术,这就能够提高数据分析的效率。而数据存储的工具主要是以下的工具。
1、MySQL数据库,这个对于部门级或者互联网的数据库应用是必要的,这个时候关键掌握数据库的库结构和SQL语言的数据查询能力。
2、SQL Server的地标优品源码最新版本,对中小企业,一些大型企业也可以采用SQL Server数据库,其实这个时候本身除了数据存储,也包括了数据报表和数据分析了,甚至数据挖掘工具都在其中了。
3、DB2,Oracle数据库都是大型数据库了,主要是企业级,特别是大型企业或者对数据海量存储需求的就是必须的了,一般大型数据库公司都提供非常好的数据整合应用平台;
接着说数据报表层。一般来说,当企业存储了数据后,首先要解决报表的问题。解决报表的问题才能够正确的分析好数据库。关于数据报表所用到的数据分析工具就是以下的工具。
1、Crystal Report水晶报表,Bill报表,这都是全球最流行的报表工具,非常规范的报表设计思想,早期商业智能其实大部分人的理解就是报表系统,不借助IT技术人员就可以获取企业各种信息——报表。
2、Tableau软件,这个软件是近年来非常棒的一个软件,当然它已经不是单纯的数据报表软件了,而是更为可视化的数据分析软件,因为很多人经常用它来从数据库中进行报表和可视化分析。
第三说的是数据分析层。这个层其实有很多分析工具,当然我们最常用的就是Excel,我经常用的就是统计分析和数据挖掘工具;
1、Excel软件,首先版本越高越好用这是肯定的;当然对Excel来讲很多人只是掌握了5%Excel功能,Excel功能非常强大,甚至可以完成所有的统计分析工作!但是我也常说,有能力把Excel玩成统计工具不如专门学会统计软件;
2、SPSS软件:当前版本是,名字也改成了PASW Statistics;我从3.0开始Dos环境下编程分析,到现在版本的变迁也可以看出SPSS社会科学统计软件包的变化,从重视医学、化学等开始越来越重视商业分析,现在已经成为了预测分析软件。
最后说表现层的软件。一般来说表现层的软件都是很实用的工具。表现层的软件就是下面提到的内容。
1、PowerPoint软件:大部分人都是用PPT写报告。
2、Visio、SmartDraw软件:这些都是非常好用的流程图、营销图表、地图等,而且从这里可以得到很多零件;
3、Swiff Chart软件:制作图表的软件,生成的是Flash。
Spark源码分析——yarn-cluster模式下Application提交源码实现
Spark源码深入解析:yarn-cluster模式下Application提交的详细流程 Spark客户端在yarn-cluster模式下的核心入口是org.apache.spark.deploy.yarn.Client,这个客户端主要职责是向ResourceManager提交并监控Application的运行。以下是对submit源码的深入剖析: 1. 客户端入口与主要方法: Client的main方法首先创建Client实例并执行run()方法,run()方法是核心操作。 2. submitApplication()核心实现: run()方法中的关键步骤是submitApplication(),它包含了以下内容:初始化Yarn客户端,通过org.apache.hadoop.yarn.client.api.YarnClient实现,向RM申请新应用,生成YarnClientApplication。
检查用户提交的资源(如executorMemory、driverMemory)是否合法,确保不超过单个container的最大资源。
创建ContainerLaunchContext,包括上传依赖资源到HDFS,设置Java执行命令(包含ApplicationMaster入口类)和环境变量。
设置application的详细信息,如名称、队列、资源需求等,然后提交至RM启动ApplicationMaster进程。
3. 资源验证与container创建: 验证用户设置的资源是否满足container限制,并创建执行环境,包括打包依赖文件到HDFS,构建启动ApplicationMaster的Java命令。 4. 监控与报告: 客户端通过monitorApplication()持续监控应用状态并报告给用户,如:Application report for $appId (state: $state)。 总结来说,yarn-cluster模式下,Client执行的步骤包括:创建Client实例,连接ResourceManager。
提交申请,获取applicationId和最大资源。
检查并确保资源请求合法。
构建ContainerLaunchContext,准备application的运行环境。
设置并提交application信息,启动ApplicationMaster。
持续监控并报告application状态。
这个过程完成后,ApplicationMaster的运行和Driver的控制将作为后续分析的重点。