【Spark集群部署系列二】Spark StandAlone模式介绍和搭建以及使用

【Spark集群部署系列一】Spark local模式介绍和搭建以及使用(内含Linux安装Anaconda)http://t.csdnimg.cn/0xmky

简介

注意:请先部署好Hadoop集群

在部署spark集群前,请部署好Hadoop集群,jdk8【当然Hadoop集群需要运行在jdk上】,需要注意hadoop,spark的版本,考虑兼容问题。比如hadoop3.0以上的才兼容spark3.0以上的。

下面是Hadoop集群部署的链接,个人笔记,已经成功部署两次了,实时更新,分【一】【二】两部分,需要的自己看。不懂欢迎问,看到了解答。(链接失效的话请参考个人主页)

hadoop集群部署【一】HDFS集群http://t.csdnimg.cn/g6w1u

hadoop集群部署【二】YARN,MapReduce集群http://t.csdnimg.cn/O7sVz

搭建准备工作(每一台机器都要):

注意:如果之前配置过Spark local模式(参考最开始链接),那么只需要在没有安装过anaconda的机器进行搭建准备工作。

安装Anaconda

需要python环境,上传Anaconda,找到放置的位置,切换到该目录下。

安装Anaconda(我的是Anaconda3-2021.05-Linux-x86_64.sh 版本python3.8)

tip:我没有试过分发,所以我不知道分发有没有问题,知道的可以说一下,但是不建议大家用,毕竟安装后要初始化anaconda

sh ./Anaconda3-2021.05-Linux-x86_64.sh

接下来步骤

然后一直空格,出现[yes|no] 就回答yes,懂?

出现这样的就填你要把anaconda安装到哪里。(路径)

完成后结果(退出终端,重新进来)

更改conda国内源
vim ~/.condarc # 如果以前没有该文件,新建的,里面没有东西很正常

channels:
  - defaults
show_channel_urls: true
default_channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
  conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

终端输入

python
创建spark运行的虚拟环境
conda create -n pyspark python=3.8
切换虚拟环境
conda activate pyspark


tip:输入python 版本变化很正常

Spark StandAlone部署

上传解压spark

如果之前配置过Spark local模式,那么下面的步骤看情况处理

(我的是 spark-3.2.0-bin-hadoop3.2.tgz)

通过什么工具不管,能上传就行。

找到spark上传的位置,cd 进到该目录,不进去也行,自己在前面加路径哈!解压。

  tar -zxvf spark-3.2.0-bin-hadoop3.2.tgz -C /export/server spark-3.2.0-bin-hadoop3.2/

-C 参数后跟解压到哪(路径)

cd /export/server    #填你自己解压的路径

建立软链接

 ln -s spark-3.2.0-bin-hadoop3.2/ spark

ll
配置环境变量(每一台都需要)

先在第一台配置

vim /etc/profile
export SPARK_HOME=/export/server/spark
export PYSPARK_PYTHON=/export/server/anaconda3/envs/pyspark/bin/python3.8
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

:wq

source /etc/profile

vim /root/.bashrc

添加

export JAVA_HOME=/export/server/jdk
export PYSPARK_PYTHON=/export/server/anaconda3/envs/pyspark/bin/python3.8

:wq

(可以在第一台机器配置好,然后分发到其他机器 两个文件 /etc/profile /root/.bashrc)

scp -r /etc/profile node2:/etc/profile

scp -r /root/.bashrc node2:/root/.bashrc

node3同node2 请先配置好node1之后再进行scp操作,然后其他机器

source /etc/profile
修改spark配置文件

记住权限不够就换用户,比如修改系统配置文件/etc/profile时就需要root用户,当然可以sudo,如何给用户配置sudo权限,这里不做教程

su - 用户名

如果是学习测试,可以不使用hadoop用户为spark最高权限用户,但请注意如果Hadoop集群给的最高权限是hadoop用户,建议使用hadoop用户为spark集群最高权限用户,不然很混乱,其他用户同理。本教程以hadoop用户为所有的大数据软件最高权限用户。

# 会使用hadoop用户的,一般都已经创建好了,当然这里还是提一下如何创建用户
useradd [-g -d] 用户名  


#选项:-g指定用户的组,不指定-g,会创建同名组并自动加入,指定-g需要组已经存在,如已存在同名组,必须#使用-g
#选项:-d指定用户HOME路径,不指定,HOME目录默认在:/home/用户名


 passwd hadoop  # hadoop为用户名,改代码作用是修改用户名密码,学习测试建议为12345678
授权hadoop用户为spark最高权限用户
# 切换到spark安装目录下
cd /export/server/

# 授权hadoop用户
chown -R hadoop:hadoop spark*

切换hadoop用户进行操作

su - hadoop
workers
cd /export/server/spark/conf    #注意路径

 mv workers.template workers

vim workers

删除localhost后填入

node1
node2
node3
spark-env.sh
mv spark-env.sh.template spark-env.sh

 vim spark-env.sh

填入下面内容

## 设置JAVA安装目录
JAVA_HOME=/export/server/jdk

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

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

# worker cpu可用核数
SPARK_WORKER_CORES=1
# worker可用内存
SPARK_WORKER_MEMORY=1g
# worker的工作通讯地址
SPARK_WORKER_PORT=7078
# worker的 webui地址
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"
启动hadoop集群(注意安装Hadoop最高权限给的谁)
# 切换最高权限用户,这里以hadoop用户举例。
su - hadoop

(暂时只需要启动hdfs,如果不行就都启动,方正后面都要启动)

hdfs

启动:

start-dfs.sh

关闭:

stop-dfs.sh

yarn:

启动:

start-yarn.sh

关闭:

stop-yarn.sh

HistoryServer

启动:

$HADOOP_HOME/bin/mapred --daemon start historyserver

关闭的话

$HADOOP_HOME/bin/mapred --daemon stop historyserver

查看是否有sparklog文件夹

 hdfs dfs -ls /

没有创建

 hadoop fs -mkdir /sparklog

修改sparklog文件夹权限

 hadoop fs -chmod 777 /sparklog
spark-defaults.conf
 mv spark-defaults.conf.template spark-defaults.conf

vim spark-defaults.conf

:set paste   #底线模式,开启粘贴

填入

#park的日期记录功能
spark.eventLog.enabled  true
# 设置spark日志记录的路径
spark.eventLog.dir       hdfs://node1:8020/sparklog/
# 设置spark日志是否启动压缩
spark.eventLog.compress         true
log4j.properties [可选配置]
mv log4j.properties.template log4j.properties

vim log4j.properties

WARN

这个文件的修改不是必须的, 为什么修改为WARN. 因为Spark是个话痨

会疯狂输出日志, 设置级别为WARN 只输出警告和错误日志, 不要输出一堆废话,如果报错不好找错误的话可以调回INFO级别

分发spark(tab键补全,避免版本没写对)
scp -r spark-3.2.0-bin-hadoop3.2/ node2:$PWD

scp -r spark-3.2.0-bin-hadoop3.2/ node3:`pwd`/
在其他机器创建软链接
cd /export/server/   #注意路径

 ln -s spark-3.2.0-bin-hadoop3.2/ spark

启动spark集群

回到node1(master所在的机器)

cd /export/server/spark  # 注意路径
启动historyServer
 sbin/start-history-server.sh 

jps

能看到java进程HistoryServer则启动成功

请找到标题【启动Hadoop集群】启动hdfs,yarn,jobhistoryserver

启动Spark集群
sbin/start-all.sh

jps

游览器输入(windows系统上需要配置windows主机名映射,没有配置用maste所在机器的ip代替下面的node1)

http://node1:8080/

spark StandAlone模式客户端

pyspark交互式界面:(找到spark/bin目录)

 ./pyspark --master spark://node1:7077
 
# spark://node1:7077 具体填什么查看
# 游览器输入
node1:8080

spark-submit 提交应用程序

./spark-submit --master spark://node1:7077 文件位置
 
 
# spark://node1:7077 具体填什么查看上图
# 游览器输入
node1:8080
 
 
#示例 自带程序求圆周率,迭代100次
./spark-submit --master spark://node1:7077 /export/server/spark/examples/src/main/python/pi.py 100

查看

OK! 完毕。不懂请留言,注意到了,乐意解答。

相关推荐
流雨声5 分钟前
2024-09-01 - 分布式集群网关 - LoadBalancer - 阿里篇 - 流雨声
分布式
floret*40 分钟前
用pyspark把kafka主题数据经过etl导入另一个主题中的有关报错
分布式·kafka·etl
AI服务老曹1 小时前
不仅能够实现前后场的简单互动,而且能够实现人机结合,最终实现整个巡检流程的标准化的智慧园区开源了
大数据·人工智能·深度学习·物联网·开源
william8231 小时前
Information Server 中共享开源服务中 kafka 的__consumer_offsets目录过大清理
分布式·kafka·开源
P.H. Infinity2 小时前
【RabbitMQ】10-抽取MQ工具
数据库·分布式·rabbitmq
管理大亨2 小时前
大数据微服务方案
大数据
脸ル粉嘟嘟3 小时前
大数据CDP集群中Impala&Hive常见使用语法
大数据·hive·hadoop
宝哥大数据3 小时前
数据仓库面试题集&离线&实时
大数据·数据仓库·spark
八荒被注册了3 小时前
6.584-Lab1:MapReduce
大数据·mapreduce
寰宇视讯3 小时前
“津彩嘉年,洽通天下” 2024中国天津投资贸易洽谈会火热启动 首届津彩生活嘉年华重磅来袭!
大数据·人工智能·生活