版权声明:本文为博主原创文章。未经博主同意不得转载。

https://blog.csdn.net/u014393917/article/details/24640715

Spark on yarn执行流程源码分析

眼下的分析主要基于spark0.9.0的cdh5的版本号进行分析,

源码下载地址:https://github.com/cloudera/spark.git

下载方式:gitclone url ./spark

进入spark文件夹。执行gitcheckout
cdh5-0.9.0_5.0.0

源码编译

使用sbt编译spark

执行sbt命令须要使用http代理。不然连接不上网络。进入sbt/文件夹,使用vimsbt改动里面的内容,

在最以下java命令的第二行加入-Dhttp.proxyHost=myserver-Dhttp.proxyPort=port
\

执行例如以下命令编译spark

SPARK_HADOOP_VERSION=2.3.0-cdh5.0.0SPARK_YARN=true sbt/sbt assembly

SPARK_HADOOP_VERSION后是hadoop的版本号号,

SPARK_HADOOP_VERSION=2.2.0sbt/sbt assembly

Inaddition, if you wish to run Spark on YARN,set SPARK_YARN to true:

SPARK_HADOOP_VERSION=2.0.5-alphaSPARK_YARN=true sbt/sbt assembly

http连接代理设置:

编辑spark_home/sbt/sbt文件,在文件最后的例如以下脚本部分:

printf"Launching sbt from ${JAR}\n"

java\

-Xmx1200m-XX:MaxPermSize=350m -XX:ReservedCodeCacheSize=256m \

-jar${JAR} \

"$@"

改动为

printf"Launching sbt from ${JAR}\n"

java\

-Dhttp.proxyHost=myserver-Dhttp.proxyPort=port \

-Xmx1200m-XX:MaxPermSize=350m -XX:ReservedCodeCacheSize=256m \

-jar${JAR} \

"$@"

通过例如以下命令通过sbt对spark进行编译

SPARK_HADOOP_VERSION=2.3.0-cdh5.0.0SPARK_YARN=true sbt/sbt assembly

sbt命令请參考http://www.scala-sbt.org/release/docs/Getting-Started/Running.html#common-commands

生成tar包

在spark_home的根文件夹下,执行例如以下命令,编译spark的分布式部署tar.gz包

改动make-distribution.sh文件,

在例如以下命令后

Makedirectories

rm-rf "$DISTDIR"

mkdir-p "$DISTDIR/jars"

echo"Spark $VERSION built for Hadoop $SPARK_HADOOP_VERSION" >"$DISTDIR/RELEASE"

#Copy jars

cp$FWDIR/assembly/target/scala*/*assembly*hadoop*.jar "$DISTDIR/jars/"

加入此信息,把examples加入到tar.gz包中(測试过程能够执行此操作,把演示样例的代码一起打包起来)。

#Make directories

mkdir-p "$DISTDIR/examples"

#Copy jars

cp$FWDIR/examples/target/scala*/*examples*assembly*.jar"$DISTDIR/examples/"

./make-distribution.sh--hadoop
2.3.0-cdh5.0.0--with-yarn --tgz

命令执行完毕后,在spark_home下会生成一个tar.gz包。spark-0.9.0-hadoop_2.3.0-cdh5.0.0-bin.tar.gz

通过Yarn执行spark演示样例程序

通过export命令设置yarn的conf环境变量,假设没有配置全局的yarnconf环境变量

exportYARN_CONF_DIR=/home/hadoop/test.spark.yang/hadoop-2.0.0-cdh4.3.0/etc/hadoop

exportSPARK_JAR=<spark_home>/jars/spark-assembly-0.9.0-incubating-hadoop2.0.0-cdh4.3.0.jar

exportYARN_CONF_DIR=/home/hadoop/test.spark.yang/hadoop-2.0.0-cdh4.3.0/etc/hadoop

exportHADOOP_CONF_DIR=/home/hadoop/test.spark.yang/hadoop-2.0.0-cdh4.3.0/etc/hadoop

SPARK_JAR=/home/hadoop/test.spark.yang/spark-0.9.0-incubating/jars/spark-assembly-0.9.0-incubating-hadoop2.0.0-cdh4.3.0.jar

./bin/spark-classorg.apache.spark.deploy.yarn.Client \

--jar./examples/spark-examples-assembly-0.9.0-incubating.jar \

--classorg.apache.spark.examples.SparkTC \

--argsyarn-standalone \

--num-workers3 \

--worker-cores1 \

--master-memory512M \

--worker-memory1g

通过java程序执行sparkon yarn的启动

1.编写一个java应用程序,把core-site/hdfs-site/yarn-site的配置文件加入到project中。

2.把spark的jar加入到project中。作用于当前project的class引用,

3.在project中环境变量设置SPARK_JAR,来引用sparkjar的位置,

4.在project中环境变量设置SPARK_LOG4J_CONF,来引用sparklog4j的位置

通过SPARK_YARN_USER_ENV配置其他用户定义的环境变量值。

通过SPARK_USE_CONC_INCR_GC配置是否使用默认的GC配置。,true/false

通过SPARK_JAVA_OPTS配置spark执行时的相关JAVA_OPTS.

通过JAVA_HOME配置java_home.

5.设置一些系统属性,共spark执行时的使用,当然这些个系统属性本身也有默认的值

a.属性名称QUEUE。默认值default。作用于am启动的队列名称,也能够在client调用进传入

b.属性名称。app执行监控的间隔时间ms。

c.属性名称。上传给yarn上执行的资源的复制份数,包含sparkjar,appjar

d.属性名称或numworker传入參数的值*2取最大值。

作用于app失败的重试次数,假设重试次数超过了指定的值。表示app执行失败。

e.属性名称。

等待SparkContext初始化完毕的等待次数,

每次的等待时。让ApplicationMaster.sparkContextRef.wait=10000ms

f.属性名称,

通过此配置向RM设置am向其报告的时间间隔。

spark编译与onyarn的执行的更多相关文章

  1. Spark入门实战系列--2.Spark编译与部署(上)--基础环境搭建

    [注] 1.该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取: 2.Spark编译与部署将以CentOS 64位操作系统为基础,主要是考虑到实际应用 ...

  2. Spark入门实战系列--2.Spark编译与部署(中)--Hadoop编译安装

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .编译Hadooop 1.1 搭建环境 1.1.1 安装并设置maven 1. 下载mave ...

  3. Spark入门实战系列--2.Spark编译与部署(下)--Spark编译安装

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .编译Spark .时间不一样,SBT是白天编译,Maven是深夜进行的,获取依赖包速度不同 ...

  4. Spark编译与部署

    Spark入门实战系列--2.Spark编译与部署(上)--基础环境搭建   [注] 1.该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取: 2.S ...

  5. Spark编译及spark开发环境搭建

    最近需要将生产环境的spark1.3版本升级到spark1.6(尽管spark2.0已经发布一段时间了,稳定可靠起见,还是选择了spark1.6),同时需要基于spark开发一些中间件,因此需要搭建一 ...

  6. Spark编译

    Spark的运行版本使用mvn编译,已经集成在源码中.如果机器有外网或者配置了http代理,可以直接调用编译命令来进行编译. windows&Linux命令如下: ./build/mvn \ ...

  7. 使用阿里云的Maven仓库加速Spark编译过程

    前言 在国内编译Spark项目需要从Maven源下载很多依赖包,官方源在国内大环境下的下载速度大家都懂得,那个煎熬啊,简直是浪费生命. 如果你的下载速度很快,你现在就可以无视这篇文章了. 阿里云给国内 ...

  8. spark编译报错信息简介

    spark编译需要环境 git java1.+ maven R 报错信息1: [INFO] ------------------------------------------------------ ...

  9. java动态编译 (java在线执行代码后端实现原理)(二)

    在上一篇java动态编译 (java在线执行代码后端实现原理(一))文章中实现了 字符串编译成字节码,然后通过反射来运行代码的demo.这一篇文章提供一个如何防止死循环的代码占用cpu的问题. 思路: ...

随机推荐

  1. 通过url方式传递中文参数时出现的中文乱码问题的处理

    1.通过url将参数[会有中文的情况]传递到另外一个页面: window.location.href = "/XXXX/XXXX?searchcontent=" + Content ...

  2. tensorflow/model下的各个参数的理解

    首先,这个对应的proto就是 然后config里面的image_resizer等等 就是proto里面的image_resizer 等等,对应的参数可以在proto里面寻找解释和默认值以及类型 再比 ...

  3. java异常处理throw和throws的区别

    throws和throw区别 throws是用来声明一个方法可能抛出的所有异常信息,throws是将异常声明但是不处理,而是将异常往上传,谁调用我就交给谁处理. 而throw则是指抛出的一个具体的异常 ...

  4. 扫描线矩形周长的并 POJ1177

    //扫描线矩形周长的并 POJ1177 // 我是按x轴 #include <iostream> #include <cstdio> #include <cstdlib& ...

  5. Leetcode200. Number of Islands岛屿的个数

    给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量.一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的.你可以假设网格的四个边均被水包围. 示例 1: 输入: ...

  6. 跟我一起了解koa(一)

    安装koa2 1.初始化package.json npm init 2.新建app.js,并且安装koa cnpm install --save koa //app.js const koa = re ...

  7. php学习知识点框架

    图片来源于知乎,感觉挺全面,通过查看可以更好的了解自己的薄弱知识点,大家共勉.

  8. jmeter的组件介绍--框架

    测试计划(test plan):用于存放测试脚本的容器. 线程(threads):通过java多线程来实现模拟多用户操作,只有在线程组下才能添加sample(各种协议的请求),因此线程是必须的. 取样 ...

  9. SPSS正交设计的操作

    SPSS正交设计的操作 设要做二因素的正交设计,A因素有三个水平,B因素有两个水平.则选择Data-->Orthogonal Design-->generate,弹出的就是正交设计窗口: ...

  10. CesiumLab V1.4 分类3dtiles生成(倾斜单体化、楼层房间交互)我记得我是写过一篇关于倾斜单体化的简书文章的,但是现在找不到了。不过找不到也好,就让他随风逝去吧,因为当时我写那篇文章的时候,就发现了cesium实际是有另一种更高效的单体化。就下面这个示例https://cesiumjs.org/Cesium/Build/Apps/Sandcastle/index.html?src=

    我记得我是写过一篇关于倾斜单体化的简书文章的,但是现在找不到了.不过找不到也好,就让他随风逝去吧,因为当时我写那篇文章的时候,就发现了cesium实际是有另一种更高效的单体化.就下面这个示例 http ...