spark第四篇:Running Spark on YARN
确保HADOOP_CONF_DIR或者YARN_CONF_DIR指向hadoop集群配置文件目录。这些配置用来写数据到hdfs以及连接yarn ResourceManager。(在$SPARK_HOME/conf/spark-env.sh中,添加export HADOOP_CONF_DIR=/home/koushengrui/app/hadoop/etc/hadoop)。The configuration contained in this directory will be distributed to the YARN cluster so that all containers used by the application use the same configuration. If the configuration references Java system properties or environment variables not managed by YARN, they should also be set in the Spark application’s configuration (driver, executors, and the AM when running in client mode).
spark on yarn 有两种部署模式。In cluster mode, the Spark driver runs inside an application master process which is managed by YARN on the cluster, and the client can go away after initiating the application. In client mode, the driver runs in the client process, and the application master is only used for requesting resources from YARN。cluster 模式,spark 驱动程序运行在应用主进程内。client 模式,驱动程序运行在客户端进程中,应用主进程只负责向yarn 请求资源。
不像spark standalone 和 mesos 模式,这两种模式下master 的地址由--master 参数指定,yarn 模式,ResourceManager 的地址从hadoop 配置中取。因此,--master 参数的值是yarn。
以cluster 模式启动应用:
./spark-submit --class class_name --master yarn --deploy-mode cluster [options] <app jar> [app options]
例如:
./spark-submit --class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode cluster \
--driver-memory 4g \
--executor-memory 2g \
--executor-cores 1 \
--queue queue_name \
/path/spark-example*.jar \
10
The above starts a YARN client program which starts the default Application Master. Then SparkPi will run as a child thread of Application Master. The client will periodically poll the Application Master for status updates and display them in the console. The client will exit once your application has finished running。
以client 模式启动应用:
和上面一样,除了--deploy-mode 参数值为client
./spark-submit --class class_name --master yarn --deploy-mode client [options] <app jar> [app options]
例如可以以client 模式运行spark-shell:
./spark-shell --master yarn --deploy-mode client
添加其他jar
利用spark把hive数据导到hbase:
spark-submit \
--class com.kou.spark.util.Hive2Hbase \
--master yarn \
--deploy-mode client \
--executor-memory 500m \
--driver-memory 500m \
--num-executors 2 \
--executor-cores 2 \
--queue ${spark_queuename} \
--conf spark.sql.autoBroadcastJoinThreshold=20971520 \
--conf spark.default.parallelism=40 \
--conf spark.sql.shuffle.partitions=40 \
--conf spark.speculation=false \
--conf spark.task.maxFailures=40 \
--conf spark.akka.timeout=300 \
--conf spark.network.timeout=300 \
--conf spark.yarn.max.executor.failures=40 \
--conf spark.executor.extraJavaOptions="-XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+ParallelRefProcEnabled -XX:+CMSClassUnloadingEnabled -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC -XX:+HeapDumpOnOutOfMemoryError -verbose:gc " \
spark-hive2Hbase.jar "${appName}" "${sql}" "${outputTable}" "${phoenix_jdbc_url}"
hiveContext.sql("use sx_ela_safe")
hiveContext.sql("set mapred.job.queue.name=" + HDP_QUEUE_NAME)
hiveContext.sql("set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat")
hiveContext.sql("set hive.merge.mapredfiles=true")
hiveContext.sql("set hive.merge.smallfiles.avgsize=100000000")
hiveContext.sql("set mapred.combine.input.format.local.only=false")
// 创建上下文
val sparkConf = new SparkConf().setAppName(s"${args(4)}")
.set("spark.serializer", "org.apache.spark.serializer.KryoSerializer")
.set("spark.kryoserializer.buffer.max", "300m")
.set("spark.sql.parquet.compression.codec", "snappy")
.set("spark.sql.parquet.mergeSchema", "true")
.set("spark.sql.parquet.binaryAsString", "true")
.set("spark.streaming.kafka.maxRatePerPartition", s"${args(2)}")
def InitEnvConfig(conf: SparkConf) = {
brokers = conf.get(KAFKA_METADATA_BROKER_LIST)
zkConnectString = conf.get(ZOOKEEPER_QUORUM)
phoenixZkUrl = conf.get(PHOENIX_JDBC_URL)
hdfsRootPath = conf.get(HDFS_ROOT_PATH)
spark_deploy_mode = conf.get(SPARK_MASTER_URL)
HDP_QUEUE_NAME = conf.get(HADOOP_QUEUE_NAME)
}
spark第四篇:Running Spark on YARN的更多相关文章
- spark第六篇:Spark Streaming Programming Guide
预览 Spark Streaming是Spark核心API的扩展,支持高扩展,高吞吐量,实时数据流的容错流处理.数据可以从Kafka,Flume或TCP socket等许多来源获取,并且可以使用复杂的 ...
- spark第十篇:Spark与Kafka整合
spark与kafka整合需要引入spark-streaming-kafka.jar,该jar根据kafka版本有2个分支,分别是spark-streaming-kafka-0-8和spark-str ...
- 第四篇:Spark SQL Catalyst源码分析之TreeNode Library
/** Spark SQL源码分析系列文章*/ 前几篇文章介绍了Spark SQL的Catalyst的核心运行流程.SqlParser,和Analyzer,本来打算直接写Optimizer的,但是发现 ...
- spark第七篇:Spark SQL, DataFrame and Dataset Guide
预览 Spark SQL是用来处理结构化数据的Spark模块.有几种与Spark SQL进行交互的方式,包括SQL和Dataset API. 本指南中的所有例子都可以在spark-shell,pysp ...
- Running Spark on YARN
Running Spark on YARN 对 YARN (Hadoop NextGen) 的支持是从Spark-0.6.0开始的,后续的版本也一直持续在改进. Launching Spark on ...
- Spark(四十九):Spark On YARN启动流程源码分析(一)
引导: 该篇章主要讲解执行spark-submit.sh提交到将任务提交给Yarn阶段代码分析. spark-submit的入口函数 一般提交一个spark作业的方式采用spark-submit来提交 ...
- spark调优篇-Spark ON Yarn 内存管理(汇总)
本文旨在解析 spark on Yarn 的内存管理,使得 spark 调优思路更加清晰 内存相关参数 spark 是基于内存的计算,spark 调优大部分是针对内存的,了解 spark 内存参数有也 ...
- spark调优篇-spark on yarn web UI
spark on yarn 的执行过程在 yarn RM 上无法直接查看,即 http://192.168.10.10:8088,这对于调试程序很不方便,所以需要手动配置 配置方法 1. 配置 spa ...
- Spark(四十四):使用Java调用spark-submit.sh(支持 --deploy-mode client和cluster两种方式)并获取applicationId
之前也介绍过使用yarn api来submit spark任务,通过提交接口返回applicationId的用法,具体参考<Spark2.3(四十):如何使用java通过yarn api调度sp ...
随机推荐
- 【Azure Active Directory】单一登录 (SAML 协议)
Azure Active Directory 支持 SAML 2.0 Web 浏览器单一登录 (SSO) 配置文件. 若要请求 Azure Active Directory 对用户进行身份验证时,云服 ...
- HYSBZ 1036 树的统计Count (水题树链剖分)
题意:中文题. 析:就是直接维护一个最大值和一个和,用线段树维护即可,这个题很简单,但是我卡了一晚上,就是在定位的时候,位置直接反过来了,但是样例全过了...真是... 代码如下: #pragma c ...
- Chrome浏览器控件安装方法
说明:只需要安装up6.exe即可,up6.exe为插件集成安装包. 1.以管理员身份运行up6.exe.up6.exe中已经集成Chrome插件.
- Java Java7处理异常新特性
- OM Responsibility Flow
- Android在一个app中启动另一个App
Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_LAUNCHER); Compon ...
- 随便写个bat存档
@echo off @COLOR @echo ------------切换Hosts环境--------------- :Again @set /p choice="切换模式:A:应用环境, ...
- "ServiceStack.Redis.RedisNativeClient”的方法“get_Db”没有实现。
解决办法: 1.首先通过nuget程序包管理器将相关依赖项卸载干净 2.检查各项目模块中的package.config里还有没有redis的节点,如果已经存在就删除掉 3.去别的正常的项目中看一下re ...
- webrowser卡死解决方案
webrowser 是由于有道词典造成 解决方案,关闭有道或卸载:
- 基于 cookie 的 node 中间层灰度流程的一些思考
此文已由作者申国骏授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 前言 关于灰度发布的意义此处就不进行介绍了,可以先读下这两篇文章 <微服务部署:蓝绿部署.滚动部署.灰 ...