前言
Spark 是一个开源的分布式计算系统。它提供了高效的数据处理能力,支持复杂的数据分析和处理任务,是一种基于内存的快速、通用、可扩展的大数据分析计算引擎。Spark Core:实现了Spark的基本功能,包含任务调度、内存管理、错误恢复、与存储系统交互等模块。Spark Core中还包含了对弹性分布式数据集(Resilient Distributed DataSet,简称RDD)的API定义。Spark SQL:是Spark用来操作结构化数据的程序包。通过Spark SQL,我们可以使用 SQL或者Apache Hive版本的HQL来查询数据。Spark SQL支持多种数据源,比如Hive表、Parquet以及JSON等。Spark Streaming:是Spark提供的对实时数据进行流式计算的组件。提供了用来操作数据流的API,并且与Spark Core中的 RDD API高度对应。Spark MLlib:提供常见的机器学习功能的程序库。包括分类、回归、聚类、协同过滤等,还提供了模型评估、数据 导入等额外的支持功能。Spark GraphX:主要用于图形并行计算和图挖掘系统的组件。
本节内容是关于spark的yarn模式生产环境部署,Spark使用Hadoop的YARN组件进行资源与任务调度。官方下载地址:Downloads | Apache Spark
正文
①上传spark安装包到hadoop101服务器
tar -zxvf spark-3.3.1-bin-hadoop3.tgz -C /opt/module/
②将spark安装包解压到/opt/module目录
tar -zxvf spark-3.3.1-bin-hadoop3.tgz -C /opt/module/
③修改spark安装包名称为spark-on-yarn
mv spark-3.3.1-bin-hadoop3/ spark-on-yarn
④ 由于测试环境虚拟机内存较少,防止进程被意味杀死,在yarn-site.xml中配置如下内容
<?xml version="1.0"?>
<!--
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License. See accompanying LICENSE file.
-->
<configuration>
<!-- Site specific YARN configuration properties -->
<!-- 指定 MR 走 shuffle -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定 ResourceManager 的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop102</value>
</property>
<!-- 环境变量的继承 -->
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
<!-- 开启日志聚集功能 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 设置日志聚集服务器地址 -->
<property>
<name>yarn.log.server.url</name>
<value>http://hadoop101:19888/jobhistory/logs</value>
</property>
<!-- 设置日志保留时间为 7 天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
<!--是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认是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>
<!-- yarn 地址配置 -->
<property>
<name>yarn.resourcemanager.address</name>
<value>hadoop102:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>hadoop102:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>hadoop102:8031</value>
</property>
</configuration>
⑤分发yarn的配置文件yarn-site.xml到其它服务器
⑥在spark的conf目录中根据模版拷贝一份spark的配置文件spark-env.sh
⑦ 在spark-env.sh配置文件中增加yarn的配置
YARN_CONF_DIR=/opt/module/hadoop-3.1.3/etc/hadoop
⑧ 启动hadoop集群的hdfs和yarn服务
⑨在spark安装目录下提交一个spark任务,验证环境是否已经可以使用
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
./examples/jars/spark-examples_2.12-3.3.1.jar \
10
参数:--master yarn,表示Yarn方式运行
⑩创建spark任务日志,在spark的conf目录下拷贝一份spark的配置文件spark-defaults.conf,添加如下配置
spark.eventLog.enabled true
spark.eventLog.dir hdfs://hadoop101:8020/spark-log
spark.yarn.historyServer.address=hadoop101:18080
spark.history.ui.port=18080
⑪在sprak的spark-env.sh配置文件中增加如下环境配置
export SPARK_HISTORY_OPTS="
-Dspark.history.ui.port=18080
-Dspark.history.fs.logDirectory=hdfs://hadoop101:8020/spark-log
-Dspark.history.retainedApplications=30"
⑫在hdfs中创建spark的日志目录spark-log
⑬启动spark的历史日志任务
命令:sbin/start-history-server.sh
⑭再次执行一个spark任务,查看历史任务配置是否生效,日志已经写入HDFS
⑮通过web界面查看spark的执行日志
结语
至此,关于yarn环境下的spark部署搭建就完成了,我们下期见。。。。。。