配置安装
安装hadoop:需要安装HDFS模块和YARN模块,HDFS必须安装,spark运行时要把jar包存放到HDFS上。
安装Spark:解压Spark安装程序到一台服务器上,修改spark-env.sh配置文件,该spark将作为YARN的客户端用于提交任务
[root@hadoop1 conf]# vi spark-env.sh
#追加内容
export JAVA_HOME=/usr/java/jdk1.8.0_141
export HADOOP_CONF_DIR=/usr/hadoop/hadoop-2.7.3/etc/hadoop
启动HDFS和YARN
[root@hadoop1 conf]# start-all.sh
运行模式
cluster模式
./bin/spark-submit --class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode cluster \
--driver-memory 1g \
--executor-memory 1g \
--executor-cores 2 \
--queue default \
lib/spark-examples*.jar \
10
client模式
./bin/spark-submit --class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode client \
--driver-memory 1g \
--executor-memory 1g \
--executor-cores 2 \
--queue default \
lib/spark-examples*.jar \
10
注:"–class"表示执行程序的全类名,"–master"表示程序运行在那个环境,"–deploy-mode"表示指定那种模式,"–driver-memory"表示为driver分配内存,"–executor-memory"表示为executor分配内存,"–executor-cores"表示指定一个executor使用几个核,"–queue"表示指定使用那种资源调度器,"lib/spark-examples*.jar"表示架包所在的位置,“10"表示传递的参数,” "表示换行。
两种模式的区别
cluster模式:Driver程序在YARN中运行,应用的运行结果不能在客户端显示,所以最好运行那些将结果最终保存在外部存储介质(如HDFS、Redis、Mysql),而非stdout输出的应用程序,客户端的终端显示的仅是作为YARN的job的简单运行状况。
client模式:Driver运行在Client上,应用程序运行结果会在客户端显示,所有适合运行结果有输出的应用程序(如spark-shell)
所以spark-shell必须使用client模式
[root@hadoop1 conf]# ./bin/spark-shell --master yarn --deploy-mode client --driver-memory 1g --executor-memory g --executor-cores 1 --queue default
或
./bin/spark-shell --master yarn --deploy-mode client
注意:如果你配置spark-on-yarn的client模式,其实会报错。修改所有yarn节点的yarn-site.xml,在该文件中添加如下内容
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>