Spark 分布式部署

一、Yarn 部署简介

  Spark自身提供计算资源,无需其他框架提供资源。But 这种方式降低了和其他第三方资源框架的耦合性,独立性非常强。请注意:Spark主要是计算框架,而不是资源调度框架,所以本身提供的资源调度并不是它的强项,所以还是和其他专业的资源调度框架集成会更靠谱一些。接下来我们看一下在强大的Yarn环境下Spark是如何工作的(其实是因为在国内工作中,Yarn使用的非常多)。

二、配置 yarn 模式 

1、环境准备

hui@hadoop302 spark_yarn]$ cp -r spark_bak/ spark_yarn

2、修改配置

修改hadoop配置文件/opt/module/hadoop-3.1.3/etc/hadoop/yarn-site.xml, 并分发

[hui@hadoop302 hadoop]$ cp yarn-site.xml yarn-site.xml_bak #备份原有配置
[hui@hadoop302 hadoop]$ vim yarn-site.xml
<!--是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认是true -->
<property>
    <name>yarn.nodemanager.pmem-check-enabled</name>
    <value>false</value>
</property>
<!--是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是true -->
<property>
    <name>yarn.nodemanager.vmem-check-enabled</name>
    <value>false</value>
</property>
[hui@hadoop302 hadoop]$ sxync yarn-site.xml
修改conf/spark-env.sh,添加JAVA_HOME和YARN_CONF_DIR配置
export JAVA_HOME=/opt/module/jdk1.8.0_212
YARN_CONF_DIR=/opt/module/hadoop-3.1.3/etc/hadoop

3、启动hadoop

[hui@hadoop302 conf]$ super.sh start

4、提交测试应用

bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode cluster \
./examples/jars/spark-examples_2.12-3.0.0.jar \
10
以集群方式提交 --deploy-mode cluster \
注意:yarn \ yarn 后面有个空格否则报错:
Exception in thread "main" org.apache.spark.SparkException: Master must either be yarn or start with spark, mesos, k8s, or local
        at org.apache.spark.deploy.SparkSubmit.error(SparkSubmit.scala:936)
        at org.apache.spark.deploy.SparkSubmit.prepareSubmitEnvironment(SparkSubmit.scala:238)
        at org.apache.spark.deploy.SparkSubmit.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:871)
        at org.apache.spark.deploy.SparkSubmit.doRunMain$1(SparkSubmit.scala:180)
        at org.apache.spark.deploy.SparkSubmit.submit(SparkSubmit.scala:203)
        at org.apache.spark.deploy.SparkSubmit.doSubmit(SparkSubmit.scala:90)
        at org.apache.spark.deploy.SparkSubmit$$anon$2.doSubmit(SparkSubmit.scala:1007)
        at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:1016)
        at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)

 三、yarn模式配置历史服务器

1、修改spark-default.conf文件,配置日志存储路径

[hui@hadoop302 conf]$ cp spark-defaults.conf.template spark-defaults.conf
[hui@hadoop302 conf]$ vim spark-defaults.conf
spark.eventLog.enabled          true
spark.eventLog.dir              hdfs://hadoop302:8020/spark_logs
spark.yarn.historyServer.address=hadoop302:18080
spark.history.ui.port=18080
注意 日志存储在 hdfs 上,配置路径必须存在 
hui@hadoop302 conf]$ hadoop fs -mkdir /spark_logs
[hui@hadoop302 conf]$ hadoop fs -ls /
Found 8 items
drwxr-xr-x   - hui supergroup          0 2021-11-24 22:44 /spark_logs
2、编辑spark-env.sh文件, 添加日志配置
#spark_log conf
export SPARK_HISTORY_OPTS="
-Dspark.history.ui.port=18080
-Dspark.history.fs.logDirectory=hdfs://hadoop302:8020/spark_logs
参数含义:
  1. 18080:WEBUI访问的端口号为18080
  2. hdfs://hadoop302:8020/spark_logs指定历史服务器日志存储路径
  3. 30:指定保存Application历史记录的个数,如果超过这个值,旧的应用程序信息将被删除,这个是内存中的应用数,而不是页面上显示的应用数

分发配置

[hui@hadoop302 conf]$ sxync spark-env.sh
[hui@hadoop302 conf]$ sxync spark-defaults.conf

3、启动历史服务进程

hui@hadoop302 spark_yarn]$ sbin/start-history-server.sh
提交应用
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode client \
./examples/jars/spark-examples_2.12-3.0.0.jar \
10

posted @ 2022-03-13 20:49  晓枫的春天  阅读(732)  评论(0编辑  收藏  举报