19.spark集群运行模式的学习

1 spark的集中运行模式

image.png

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、原理

image.png

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

结果需要去监控页面上去看


image.png

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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容