这是我参与8月更文挑战的第14天,活动详情查看:8月更文挑战
三、服务端介绍
1. 硬件&部署建议
- 与 HDFS 部署在同一台机器上,其次部署在同一个局域网下;
- 与 HBase(低延迟存储) 分开部署;
- 配置 4-8 个磁盘,无RAID;
- Linux下选择 noatime 安装磁盘以减少不必要的写入;
- Spark 配置中 spark.local.dir 为本地磁盘的逗号分割列表;可与 HDFS 共用磁盘;
- 内存 >= 8GiB 且 <=200GiB,Spark 使用内存最多占比 75%;
- 万兆网卡;
- 至少 8-16 CPU核数;
2. 环境变量
环境变量 | 含义 |
---|---|
JAVA_HOME |
Java的安装位置(如果不是默认设置PATH )。 |
PYSPARK_PYTHON |
在驱动程序和工作程序中都可用于PySpark的Python二进制可执行文件(python2.7 如果可用,则为默认值,否则为python )。spark.pyspark.python 如果设置了属性,则优先 |
PYSPARK_DRIVER_PYTHON |
仅在驱动程序中用于PySpark的Python二进制可执行文件(默认为PYSPARK_PYTHON )。spark.pyspark.driver.python 如果设置了属性,则优先 |
SPARKR_DRIVER_R |
用于SparkR shell的R二进制可执行文件(默认为R )。spark.r.shell.command 如果设置了属性,则优先 |
SPARK_LOCAL_IP |
绑定机器的IP地址。 |
SPARK_PUBLIC_DNS |
您的Spark程序的主机名将播发到其他计算机。 |
SPARK_MASTER_HOST |
将主服务器绑定到特定的主机名或IP地址,例如公共主机名或IP地址。 |
SPARK_MASTER_PORT |
在其他端口上启动主服务器(默认:7077)。 |
SPARK_MASTER_WEBUI_PORT |
主Web UI的端口(默认值:8080)。 |
SPARK_MASTER_OPTS |
仅以“ -Dx = y”的形式应用于主服务器的配置属性(默认值:无)。请参阅下面的可能选项列表。 |
SPARK_LOCAL_DIRS |
用于Spark中“临时”空间的目录,包括映射输出文件和存储在磁盘上的RDD。它应该在系统中的快速本地磁盘上。它也可以是不同磁盘上多个目录的逗号分隔列表。 |
SPARK_WORKER_CORES |
允许Spark应用程序在计算机上使用的核心总数(默认值:所有可用的核心)。 |
SPARK_WORKER_MEMORY |
允许Spark应用程序在计算机上使用的内存总量,例如1000m ,2g (默认值:总内存减去1 GiB);请注意,每个应用程序的单独内存都是使用其spark.executor.memory 属性配置的。 |
SPARK_WORKER_PORT |
在特定端口上启动Spark worker(默认值:随机)。 |
SPARK_WORKER_WEBUI_PORT |
辅助Web UI的端口(默认值:8081)。 |
SPARK_WORKER_DIR |
要在其中运行应用程序的目录,其中将包括日志和临时空间(默认值:SPARK_HOME / work)。 |
SPARK_WORKER_OPTS |
仅以“ -Dx = y”的形式应用于工作程序的配置属性(默认值:无)。请参阅下面的可能选项列表。 |
SPARK_DAEMON_MEMORY |
分配给Spark主守护程序和辅助守护程序本身的内存(默认值:1g)。 |
SPARK_DAEMON_JAVA_OPTS |
Spark主服务器和辅助服务器守护程序的JVM选项本身以“ -Dx = y”的形式出现(默认值:无)。 |
SPARK_DAEMON_CLASSPATH |
Spark主守护程序和辅助守护程序本身的类路径(默认值:无)。 |
SPARK_PUBLIC_DNS |
Spark主服务器和辅助服务器的公共DNS名称(默认值:无)。 |
四、客户端介绍
1. 关键配置
val conf = new SparkConf()
.setMaster(...)
.setAppName(...)
.set("spark.cores.max", "10")
val sc = new SparkContext(conf)
复制代码
- spark.executor.cores 分配给每个应用程序的CPU核数;
- spark.cores.max 限制使用的CPU核数;
2. 提交作业
${SPARK_HOME}/bin/spark-submit \
--class <main-class> \
--master <master-url> \
--deploy-mode <deploy-mode> \
--conf <key>=<value> \
... # other options
<application-jar> \
[application-arguments]
# Run application locally on 8 cores
./bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master local[8] \
/path/to/examples.jar \
100
# Run on a Spark standalone cluster in client deploy mode
./bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://207.184.161.138:7077 \
--executor-memory 20G \
--total-executor-cores 100 \
/path/to/examples.jar \
1000
# Run on a Spark standalone cluster in cluster deploy mode with supervise
./bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://207.184.161.138:7077 \
--deploy-mode cluster \
--supervise \
--executor-memory 20G \
--total-executor-cores 100 \
/path/to/examples.jar \
1000
# Run on a YARN cluster
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
# Run a Python application on a Spark standalone cluster
./bin/spark-submit \
--master spark://207.184.161.138:7077 \
examples/src/main/python/pi.py \
1000
# Run on a Mesos cluster in cluster deploy mode with supervise
./bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master mesos://207.184.161.138:7077 \
--deploy-mode cluster \
--supervise \
--executor-memory 20G \
--total-executor-cores 100 \
http://path/to/examples.jar \
1000
# Run on a Kubernetes cluster in cluster deploy mode
./bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master k8s://xx.yy.zz.ww:443 \
--deploy-mode cluster \
--executor-memory 20G \
--num-executors 50 \
http://path/to/examples.jar \
1000
复制代码
近期评论