当前位置:   article > 正文

Spark on YARN环境部署(完整版)_spark on yarn安装配置

spark on yarn安装配置

前言

本篇的环境是干净的,事先没有安装过spark。节点共有node1,node2,node3三台,已完成各种集群化准备。

一、部署python环境

1)首先在node1上部署python环境,参考以下文章:
linux安装Anaconda——看里面的 三、Anaconda安装(Linux)

2)然后在node2 和 node3上同样执行以上步骤。

二、spark安装部署

前提条件

  • python推荐3.8版本
  • JDK1.8版本
  • hadoop3.x以上

下载网址:https://dlcdn.apache.org/spark
我目前使用的版本是spark-3.2.0-bin-hadoop3.2.tgz,下载链接为:
链接:https://pan.baidu.com/s/1ZmarnyvBzHESBMXRBnri4g?pwd=d094
提取码:d094

1、上传安装包

将文件上传到安装路径中,我这里是/export/servers

2、解压

在node1上执行

tar -zxvf spark-3.2.0-bin-hadoop3.2.tgz 
  • 1

名字有点长,我们设置个别名,当然你也可以用mv命令进行改名

#设置别名(快捷方式)
ln -s /export/servers/spark-3.2.0-bin-hadoop3.2 /export/servers/spark-3.2.0

#重命名
mv spark-3.2.0-bin-hadoop3.2 spark-3.2.0
  • 1
  • 2
  • 3
  • 4
  • 5

3、配置环境变量

Spark环境变量的内容就5个:

  • SPARK_HOME: 表示Spark安装路径在哪里
  • PYSPARK_PYTHON: 表示Spark想运行Python程序, 那么去哪里找python执行器
  • JAVA_HOME: 告知Spark Java在哪里
  • HADOOP_CONF_DIR: 告知Spark Hadoop的配置文件在哪里
  • HADOOP_HOME: 告知Spark Hadoop安装在哪里

1)修改配置文件

vi /etc/profile
  • 1

#添加以下内容,具体安装路径以及版本号以实际为准

export JAVA_HOME=/export/servers/jdk1.8.0_241
export HADOOP_HOME=/export/servers/hadoop-3.3.0
export SPARK_HOME=/export/servers/spark-3.2.0
export PYSPARK_PYTHON=/export/servers/anaconda3/envs/pyspark/bin/python3.8
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

#使文件生效

source /etc/profile
  • 1

2)修改Bash shell配置文件

vi /root/.bashrc
  • 1

#这里主要设置 java路径 和 python执行器路径。
在这里插入图片描述
#使文件生效

source /root/.bashrc
  • 1

4、同步环境变量

主要是/etc/profile 和 /root/.bashrc 这两个文件, 我们可以直接将node1上的同步过去。

scp /etc/profile root@node2:/etc/
scp /etc/profile root@node2:/etc/

scp /root/.bashrc root@node2:/root/
scp /root/.bashrc root@node3:/root/
  • 1
  • 2
  • 3
  • 4
  • 5

三、修改spark内部配置文件

cd /export/servers/spark-3.2.0/conf
  • 1

1、workers

mv workers.template workers
vi workers
  • 1
  • 2

#追加以下内容

node1
node2
node3
  • 1
  • 2
  • 3

2、spark-env.sh

mv spark-env.sh.template spark-env.sh
  • 1

#追加以下内容,注意你的安装路径、节点名 有没有和我的不同

## 设置JAVA安装目录
JAVA_HOME=/export/servers/jdk1.8.0_241

## HADOOP软件配置文件目录,读取HDFS上文件和运行YARN集群
HADOOP_CONF_DIR=/export/servers/hadoop-3.3.0/etc/hadoop
YARN_CONF_DIR=/export/servers/hadoop-3.3.0/etc/hadoop

## 指定spark老大MasterIP和提交任务的通信端口
# 告知Sparkmaster运行在哪个机器上
export SPARK_MASTER_HOST=node1
# 告知sparkmaster的通讯端口
export SPARK_MASTER_PORT=7077
# 告知spark masterweb ui端口
SPARK_MASTER_WEBUI_PORT=8080

# worker cpu可用核数
SPARK_WORKER_CORES=1
# worker可用内存
SPARK_WORKER_MEMORY=1g
# worker的工作通讯地址
SPARK_WORKER_PORT=7078
# workerwebui地址
SPARK_WORKER_WEBUI_PORT=8081

## 设置历史服务器
# 配置的意思是  将spark程序运行的历史日志 存到hdfs/sparklog文件夹中
SPARK_HISTORY_OPTS="-Dspark.history.fs.logDirectory=hdfs://node1:8020/sparklog/ -Dspark.history.fs.cleaner.enabled=true"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

3、创建历史记录存放目录

刚才配置信息里的hdfs://node1:8020/sparklog/,指定了用hdfs系统里的sparklog来存放spark程序运行日志信息,但这个目录还不存在,需要创建。

#启动hdfsyarn
start-all.sh

hadoop fs -mkdir /sparklog
hadoop fs -chmod 777 /sparklog

#查看生成结果
hadoop fs -ls /
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

4、spark-defaults.conf

mv spark-defaults.conf.template spark-defaults.conf
  • 1
vi spark-defaults.conf
  • 1

#追加如下内容

# 开启spark的日期记录功能
spark.eventLog.enabled     true
# 设置spark日志记录的路径
spark.eventLog.dir     hdfs://node1:8020/sparklog/ 
# 设置spark日志是否启动压缩
spark.eventLog.compress     true
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

5、log4j.properties

这一步是可选操作,但还是建议修改。因为Spark会疯狂输出日志, 设置级别为WARN时,就只输出警告和错误日志, 而不是一堆信息。

mv log4j.properties.template log4j.properties
vi log4j.properties
  • 1
  • 2

按照下图去修改内容
在这里插入图片描述

四、同步spark

cd /export/servers/
scp -r spark-3.2.0 root@node2:$PWD
scp -r spark-3.2.0 root@node3:$PWD
  • 1
  • 2
  • 3

五、启动历史服务

在node1上进行操作

cd spark-3.2.0
sbin/start-history-server.sh
  • 1
  • 2

六、测试集群

我们以启动客户端进程来检验Spark on YARN 集群是否可用。

在node1上执行

#以yarn模式启动pyspark
bin/pyspark --master yarn
  • 1
  • 2

提交一个子任务

sc.parallelize([1,2,3,4,5]).map(lambda x: x*10).collect()
  • 1

在这里插入图片描述
代码执行成功,说明集群可用。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/482747
推荐阅读
相关标签
  

闽ICP备14008679号