当前位置: 首页 > news >正文

(四十一)大数据实战——spark的yarn模式生产环境部署

前言

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 athttp://www.apache.org/licenses/LICENSE-2.0Unless required by applicable law or agreed to in writing, softwaredistributed 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 andlimitations 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-logspark.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部署搭建就完成了,我们下期见。。。。。。

http://www.lryc.cn/news/415106.html

相关文章:

  • 【深度学习实战(53)】classification_report()
  • 计算机网络基础之网络套接字socket编程(初步认识UDP、TCP协议)
  • 手撕Python!模块、包、库,傻傻分不清?一分钟带你弄明白!
  • Linux--序列化与反序列化
  • 使用C#和 aspose.total 实现替换pdf中的文字(外语:捷克语言的pdf),并生成新的pdf导出到指定路径
  • 【Material-UI】Autocomplete中的高亮功能(Highlights)详解
  • Android 11(R)启动流程 初版
  • 从零安装pytorch
  • 2024.07.28 校招 实习 内推 面经
  • python实现小游戏——植物大战僵尸(魔改版本)
  • 基于K210智能人脸识别+车牌识别系统(完整工程资料源码)
  • 8.怎么配嵌套子路由,以及它的作用
  • 【海贼王航海日志:前端技术探索】HTML你学会了吗?(二)
  • 体系结构论文导读(三十一)(下):Soft errors in DNN accelerators: A comprehensive review
  • Python在指定文件夹下创建虚拟环境
  • 【SpringBoot】 定时任务之任务执行和调度及使用指南
  • 理解 Objective-C 中 +load 方法的执行顺序
  • 切面条问题算法的详解
  • JNDI注入
  • SQL Server数据库文件过大而无法直接导出解决方案
  • 学习日志8.4--DHCP攻击防范
  • 解决多个Jenkins Master实例共享Jenkins_home目录的问题(加锁解锁机制)
  • postgresql array 反向截取
  • 最新口型同步技术EchoMimic部署
  • 程序设计基础(c语言)_补充_1
  • 8.4 day bug
  • 【Material-UI】Autocomplete中的禁用选项:Disabled options
  • Pytest测试报告生成专题
  • QT 笔记
  • 【redis 第七篇章】动态字符串