spark编译与onyarn的执行
版权声明:本文为博主原创文章。未经博主同意不得转载。
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的执行的更多相关文章
- Spark入门实战系列--2.Spark编译与部署(上)--基础环境搭建
[注] 1.该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取: 2.Spark编译与部署将以CentOS 64位操作系统为基础,主要是考虑到实际应用 ...
- Spark入门实战系列--2.Spark编译与部署(中)--Hadoop编译安装
[注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .编译Hadooop 1.1 搭建环境 1.1.1 安装并设置maven 1. 下载mave ...
- Spark入门实战系列--2.Spark编译与部署(下)--Spark编译安装
[注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .编译Spark .时间不一样,SBT是白天编译,Maven是深夜进行的,获取依赖包速度不同 ...
- Spark编译与部署
Spark入门实战系列--2.Spark编译与部署(上)--基础环境搭建 [注] 1.该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取: 2.S ...
- Spark编译及spark开发环境搭建
最近需要将生产环境的spark1.3版本升级到spark1.6(尽管spark2.0已经发布一段时间了,稳定可靠起见,还是选择了spark1.6),同时需要基于spark开发一些中间件,因此需要搭建一 ...
- Spark编译
Spark的运行版本使用mvn编译,已经集成在源码中.如果机器有外网或者配置了http代理,可以直接调用编译命令来进行编译. windows&Linux命令如下: ./build/mvn \ ...
- 使用阿里云的Maven仓库加速Spark编译过程
前言 在国内编译Spark项目需要从Maven源下载很多依赖包,官方源在国内大环境下的下载速度大家都懂得,那个煎熬啊,简直是浪费生命. 如果你的下载速度很快,你现在就可以无视这篇文章了. 阿里云给国内 ...
- spark编译报错信息简介
spark编译需要环境 git java1.+ maven R 报错信息1: [INFO] ------------------------------------------------------ ...
- java动态编译 (java在线执行代码后端实现原理)(二)
在上一篇java动态编译 (java在线执行代码后端实现原理(一))文章中实现了 字符串编译成字节码,然后通过反射来运行代码的demo.这一篇文章提供一个如何防止死循环的代码占用cpu的问题. 思路: ...
随机推荐
- spring-注解配置-junit整合测试-aop
1 使用注解配置spring 1.1 步骤 导包4+2+spring-aop 1.为主配置文件引入新的命名空间(约束) 2.开启使用注解代理配置文件 3.在类中使用注解完成配置 1.2 将对象注册到容 ...
- TZOJ 5963 Increasing Sequences(线性DP)
描述 Given a string of digits, insert commas to create a sequence of strictly increasing numbers so as ...
- Leetcode455.Assign Cookies分发饼干
假设你是一位很棒的家长,想要给你的孩子们一些小饼干.但是,每个孩子最多只能给一块饼干.对每个孩子 i ,都有一个胃口值 gi ,这是能让孩子们满足胃口的饼干的最小尺寸:并且每块饼干 j ,都有一个尺寸 ...
- 安装node/npm,通过express搭建node项目
nodejs软件的下载地址:https://nodejs.org/en/ (推荐下载稳定版) 1.只要安装好了nodejs,就自动安装好了npm包. 2.在cmd中通过命令node -version查 ...
- 直接在安装了redis的Linux机器上操作redis数据存储类型--hash类型
一.概述: 我们可以将Redis中的Hashes类型看成具有String Key和String Value的map容器.所以该类型非常适合于存储值对象的信息.如Username.Password和 ...
- C++/CLI 创建WinForm程序
本文演示下用CLR创建一个简单的winform程序,IDE:VS2015 可以参考另一篇文章:http://blog.csdn.net/wcc27857285/article/details/7813 ...
- 学习JDK1.8集合源码之--LinkedHashMap
1. LinkedHashMap简介 LinkedHashMap继承自HashMap,实现了Map接口. LinkedHashMap是HashMap的一种有序实现(多态,HashMap的有序态),可以 ...
- springMVC的功能和优点
spring MVC是一个分层的java web开发框架,MVC模式提供了一个分层的体系结构,其中每一层对其它层进行了抽象,具体如下: 1.模型(Model):应用程序所使用的特定域信息的表现形式 2 ...
- Leetcode11.Container With Most Water盛最多水的容器
给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) .在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0).找出其中的两条线, ...
- python的pip更改源,因为我们处于局域网中
很多时候,比如网络不给力,连接超时.防火墙阻挡等等各种原因,我们可能无法从Python官方的PyPi仓库进行pip安装,这时候可以选择国内的第三方源,推荐使用豆瓣源,速度不错. 使用方法: pip i ...