1 spark的集中运行模式
local是基于本地运行的,例如上节课我们运行的jar就是通过本地
bin/spark-submit --master local[2] /opt/jars/sparkTest.jar hdfs://bigdata-pro01.kfk.com:8020/user/datas/stu.txt
Standalone用的不多,但是身为程序员必须得会
在YARN的平台运行,是大多数公司的首选
基于Mesos运行,可以spark对应的hadoop版本就不需要那么苛刻了
2、 Standalone运行模式的配置和测试
1、原理
sparkcontext向cluster提交任务。(任务被细分为task)
cluster为sparkcontext分配资源(资源就是work,包括了cpu,内存)
worker内有executor执行具体的task。
2、配置
1、把log4j.properties.template修改为log4j.properties,内容无需修改
2、把slaves.template修改为slaves。里面写上worker的ip,暂且写节点2
bigdata-pro02.kfk.com
3、把spark-env.sh.template改为spark-env.sh
JAVA_HOME=/opt/modules/jdk1.8.0_162
SCALA_HOME=/opt/modules/scala-2.11.8
SPARK_CONF_DIR=/opt/modules/spark-2.20-bin-custom/conf
#HADOOP_CONF_DIR 这个暂时不启动,因为还没配置好
SPARK_MASTER_HOST=bigdata-pro02.kfk.com
SPARK_MASTER_PORT=7077
SPARK_MASTER_WEBUI_PORT=8080
SPARK_WORKER_CORES=1
SPARK_WORKER_MEMORY=1g
SPARK_WORKER_PORT=7078
SPARK_WORKER_WEBUI_PORT=8081
4、启动服务
sbin/start-all.sh
启动成功 jps可看到2个进程
7363 Worker
7303 Master
可以查看监控页面http://bigdata-pro02.kfk.com:8080/
5、客户端模式启动测试stu.txt
bin/spark-shell --master spark://bigdata-pro02.kfk.com:7077
val dataset = spark.read.textFile("file:///opt/datas/stu.txt")
dataset.count()
6、集群模式下启动用stu.txt测试standalone
bin/spark-submit --master spark://bigdata-pro02.kfk.com:7077 --deploy-mode cluster /opt/jars/sparkTest.jar file:///opt/datas/stu.txt
结果需要去监控页面上去看
3、spark on yarn的运行模式
前提
所有节点上的java_home都需要改成1.8。hadoop上的env文件的javahome也需要改
在spark-env.sh配置HADOOP_CONF_DIR否则会报下面的错
Exception in thread "main" java.lang.Exception: When running with master 'yarn' either HADOOP_CONF_DIR or YARN_CONF_DIR must be set in the environment.
at org.apache.spark.deploy.SparkSubmitArguments.validateSubmitArguments(SparkSubmitArguments.scala:263)
at org.apache.spark.deploy.SparkSubmitArguments.validateArguments(SparkSubmitArguments.scala:240)
at org.apache.spark.deploy.SparkSubmitArguments.<init>(SparkSubmitArguments.scala:116)
at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:112)
at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
启动dfs
启动yarn
启动spark的服务
spark启动
客户端启动:一般用于测试,自测。企业的启动任务都用spark-submit
bin/spark-shell --master yarn --deploy-mode client
spark-submit
要保证虚拟机内存足够大
在spark2.0之后:yarn和spark通讯的时候,如果我们程序中sparkSession创建的时候设置了master("local"),也会报错, 因为spark不会主动和yarn通讯报错。报错信息是找不到hdfs://ns。。。
日志输出标准需要改为info,否则报错信息出不来
bin/spark-submit --class com.sparktest.test --master yarn --deploy-mode cluster /opt/jars/sparkTest.jar file:///opt/datas/stu.txt