spark简介

一 核心术语
----------------------------------------
Application : 运行在spark上的应用,包含了driver和executor
Application jar : 打包的可执行jar
Driver program : 运行main函数的类
Cluster manager :外部的资源调度,例如mesos,yarn
Deploy mode : 部署运行模式,例如local,client,yarn等
Worker node:具体的执行节点,例如yarn中的nodemanager
Executor : 在Worker node上运行的进程,例如yarn中的container
Task:最小可执行的单元
job:具体的某个操作行为,例如spark中的save,collector
Stage :每个作业的执行阶段,类似于mr中的map, reduce
二 整体架构图:
----------------------------------------
spark = 一个driver + 少量的executor + 大量的task组成
driver : 打的可执行spark包
executor : 一个独立的jvm进程,在spark on yarn中,executor = container
task : 独立jvm进程中的线程

三 目前支持的运行模式:
----------------------------------------
Standalone – 一个完全独立的spark运行环境,包涵了master和slave节点, http://spark.apache.org/docs/latest/spark-standalone.html
Apache Mesos – 资源调度通过 Mesos ,driver运行中
Hadoop YARN – 资源调度通过 YARN
Kubernetes (experimental) – 目前实验性质的资源调度。不建议生产环境使用
spark on yarn 支持两种方式:
cluster : driver运行在yarn中的application master。对应的参数就是 –master yarn
client : driver运行在本地,driver就是随同submit进程启动。application master用来向yarn申请资源。对应的参数就是 –master client
每个executor都是在yarn在容器里面运行。
四 spark任务的提交
----------------------------------------
标准的提交语法
./bin/spark-submit \
–class <main-class> \ #运行的主类,例如 org.apache.spark.examples.SparkPi
–master <master-url> \ #master节点 例如 spark://23.195.26.187:7077
–deploy-mode <deploy-mode> \ #运行模式
–conf <key>=<value> \ #配置文件
… # other options
<application-jar> \ #运行的jar 可以是本地文件,也可以是hdfs上的文件
[application-arguments] # jar自己的参数
提交jar任务到yarn
export HADOOP_CONF_DIR=XXX
./bin/spark-submit \
–class org.apache.spark.examples.SparkPi \
–master yarn \
–deploy-mode cluster \ # can be client for client mode
–executor-memory 20G \
–num-executors 50 \
/path/to/examples.jar \
1000

提交python任务到yarn
./bin/spark-submit \
–master yarn \
–deploy-mode cluster \ # can be client for client mode
–executor-memory 20G \
–num-executors 50 \
examples/src/main/python/pi.py \
1000

另外对于Python,可以使用spark-submit的–py-files参数来添加.py,.zip或.egg文件以与应用程序一起发布。如果您依赖多个Python文件,我们建议将它们打包成.zip或.egg。
支持多jar的提交
./bin/spark-submit –class my.main.Class \
–master yarn \
–deploy-mode cluster \
–jars my-other-jar.jar,my-other-other-jar.jar \ #依赖的jar,类似于hadoop的–libjars
my-main-jar.jar \
app_arg1 app_arg2
五 master详解.
----------------------------------------
master主要用于非yarn模式,支持的有
local : 本地单节点,单线程执行
local[K]:本地节点,启动K个线程
local[K,F]:本地节点,启动K个线程,最多运行F个失败次数,详细见 spark.task.maxFailures
local[*]:本地节点,启动本机器CPU核数的线程
local[*,F]:本地节点,启动本机器CPU核数的线程
spark://HOST:PORT : 独立运行的spark集群,默认端口是7070
spark://HOST1:PORT1,HOST2:PORT2 :独立运行的spark集群,同时加了zk的ha集群
mesos://HOST:PORT : mesos集群
yarn:yarn集群,需要痛 –deploy-mode 配合

六 配置文件加载
----------------------------------------
默认提交时候读取的是 : conf/spark-defaults.conf
配置覆盖:配置参数 > 本地配置文件 > 服务端配置文件

作者: inter12

在这苦短的人生中,追求点自己的简单快乐

发表评论

电子邮件地址不会被公开。 必填项已用*标注