PySpark是Python中的一个库, 由Spark官方提供. 专供用户使用Python语言操作Spark
1. 首先安装python环境
基于anaconda的虚拟环境方案,来安装python。因为anaconda可以虚拟出多个Python环境, 且各个环境相对独立,能够解决python版本的兼容性问题
1.1 anaconda版本选择
https://www.anaconda.com/download#downloads
1.2 anaconda安装
anaconda三台机器都需要安装, 以下演示在node1安装, 其余两台机器安装和配置一样
cd /export/software
上传Anaconda脚本到Linux
执行脚本:
bash Anaconda3-2021.05-Linux-x86_64.sh
不断输入空格, 直至出现以下解压, 然后输入yes
此时, anaconda需要下载相关的依赖包, 时间比较长, 耐心等待即可…,不要输入多次回车, 在等待中如果需要输入yes/no, 直接输入yes
1.3 配置anaconda的环境变量:
vim /etc/profile
##增加如下配置
export ANACONDA_HOME=/root/anaconda3/bin
export PATH=$PATH:$ANACONDA_HOME/bin
重新加载环境变量: source /etc/profile
修改bashrc文件
sudo vim ~/.bashrc
添加如下内容:
export PATH=~/anaconda3/bin:$PATH
1.4 启动anaconda并测试
注意: 请将当前连接node1的节点窗口关闭,然后重新打开,否则无法识别,输入 Python启动:
如果命令行最前面出现了 (base) 信息, 可以通过以下方式, 退出Base环境
vim ~/.bashrc
添加: conda deactivate
1.5 基于python环境启动spark
2. pyspark库的安装
./pyspark客户端启动后,即使没有安装pyspark,也可以用使用python语言操作spark,这是因为Spark安装环境中集成了pyspark
但我们利用pycharm工具使用python环境在本地编码时,需要在linux-node1的python环境中安装pyspark库。(pycharm工具连接远端python环境完成编码工作)
2.1 直接安装PySpark
使用PyPI安装PySpark如下:也可以指定版本安装
pip install pyspark==3.1.2
或者指定清华镜像(对于网络较差的情况):
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyspark==3.1.2 # 指定清华镜像源
2.2 本地安装包安装pyspark
先将pyspark上传到node1 /export/software
cd /export/software
pip install pyspark-3.1.2.tar.gz
2.3 基于Anaconda安装pyspark
#从终端创建新的虚拟环境pyspark_env
conda create -n pyspark_env python=3.8
#创建虚拟环境后,它应该在 anaconda 环境列表下不可见,可以使用以下命令查看
conda env list
#使用以下命令激活新创建的环境:
source activate pyspark_env
或者
conda activate pyspark_env
在新创建的环境中通过使用pip安装pyspark。
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyspark==3.1.2
或者,可以从 Conda 本身安装 PySpark
conda install pyspark==3.1.2
3. Spark Standalone集群环境
Standalone模式是Spark自带的一种集群模式,不同于前面Local模式,单机启动多线程来模拟集群环境,Standalone模式是真实地在多个机器之间搭建Spark集群的环境,完全可以利用该模式搭建多机器集群,用于实际的大数据处理。
3.1 workers配置
cd /export/server/spark/conf/
cp workers.template workers
vim workers
3.2 Spark-env环境配置
cd /export/server/spark/conf
cp spark-env.sh.template spark-env.sh
vim spark-env.sh
Jdk,hadoop, yarn的路径, 需要配置为自己的路径.History配置中, 需要指定hdfs的地址, 其中端口号为8020或者9820, 需要参考hdfs上对应namenode的通信端口号
3.3 spark应用日志配置
第一步: 在HDFS上创建应用运行事件日志目录:
hdfs dfs -mkdir -p /sparklog/
第二步: 配置spark-defaults.conf
cd /export/server/spark/conf
cp spark-defaults.conf.template spark-defaults.conf
vim spark-defaults.conf
cd /export/server/spark/conf
cp log4j.properties.template log4j.properties
vim log4j.properties
3.4 分发配置到其它机器
cd /export/server/conf
scp -r spark-3.1.2-bin-hadoop3.2/conf/ node2:$PWD
scp -r spark-3.1.2-bin-hadoop3.2/conf/ node3:$PWD
3.6 启动和关闭集群
主节点上启动集群
/export/server/spark/sbin
start-all.sh
主节点上停止集群
/export/server/spark/sbin
stop-all.sh
3.7 WEBUI界面
http://node1.itcast.cn:8080/
3.8 连接集群
[root@node1 bin]# pyspark --master spark://node1:7077
4. Spark高可用集群
多Master模式,其中一个结点为Active,其它结点为Standby。集群需要依赖zookeeper实现Master动态结点的切换
4.1 spark-env.sh配置
node1、node2、node3三台机器配置
vim spark-env.sh
注释或删除MASTER_HOST内容:
SPARK_MASTER_HOST=node1
增加以下配置:
SPARK_DAEMON_JAVA_OPTS="
-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=node1:2181,node2:2181,node3:2181
-Dspark.deploy.zookeeper.dir=/spark-ha"
spark.deploy.recoveryMode:恢复模式
spark.deploy.zookeeper.url:ZooKeeper的Server地址
spark.deploy.zookeeper.dir:保存集群元数据信息的文件、目录。包括Worker、Driver、Application信息。
4.2启动集群
/export/server/spark/sbin
start-all.sh
先启动集群的结点Master为活跃状态,再单独启动一个master为standby状态
/export/server/spark/sbin
start-master.sh
4.3 WEBUI界面
http://node1.itcast.cn:8080/
http://node2.itcast.cn:8080/