最近项目需要用到spark大数据相关技术,周末有空spark环境搭起来...
目标
spark,python运行环境部署在linux服务器
个人通过vscode开发
通过远程python解释器执行代码
准备
腾讯云服务器一台
个人笔记本一台
vscode
spark3.2,anaconda3,jdk1.8
spark安装
# 下载spark安装包
wget https://dlcdn.apache.org/spark/spark-3.2.1/spark-3.2.1-bin-hadoop3.2.tgz
# 创建安装目录/export/server
mkdir /export/server
# 安装包解压
tar -zxvf spark-3.2.1-bin-hadoop3.2.tgz -C "/export/server"
# 创建spark安装目录软连接
ln -s /export/server/spark-3.2.1-bin-hadoop3.2/ /export/server/spark
# 进入spark可执行程序目录,执行pyspark
cd /export/server/spark/bin; ./pyspark => JAVA_HOME is not set
提示jdk未安装,下一步进行jdk安装...
jdk安装
# 将准备好的jdk安装包jdk-8u161-linux-x64.tar.gz解压至/export/server目录
tar -zxvf /home/dev/jdk-8u161-linux-x64.tar.gz -C /export/server
# 创建jdk安装目录软连接
ln -s jdk1.8.0_161/ jdk8
# 添加JAVA_HOME环境变量
vi /etc/profile,添加
export JAVA_HOME=/export/server/jdk8
export PATH=$PATH:$JAVA_HOME/bin
# 再次执行/export/server/spark>bin/pyspark => env: python3: No such file or directory
提示python3没有安装,下一步进行python3安装...
Anaconda3安装(即python)
# 下载anaconda3安装包
wget https://repo.anaconda.com/archive/Anaconda3-2022.05-Linux-x86_64.sh
# 安装anoconda3
sh Anaconda3-2022.05-Linux-x86_64.sh
在安装过程中的交互提示依次输入: enter => yes => /export/server/anaconda3 => yes
直到安装完成
# 重新登录终端看见(base)开头表示安装成功
# vi /etc/profile,添加
export PYSPARK_PYTHON=/export/server/anaconda3/bin/python
# 再次执行/export/server/spark>bin/pyspark => pyspark启动成功,进入交互页面
# 输入python测试代码:
>>>
>>> sc.parallelize([1,2,3,4,5]).map(lambda x: x+1).collect()
[2, 3, 4, 5, 6] #运行结果
# pyspark运行时,在新开的终端检查4040端口监听情况
netstat -anp|grep 4040
tcp6 0 0 :::4040 :::* LISTEN -
每一个Spark程序在运行的时候, 会绑定到Driver所在机器的4040端口上.
如果4040端口被占用, 会顺延到4041...,可通过浏览器访问 4040端口
验证
# 通过spark-submit执行.py脚本,执行官方sample:
/export/server/spark>bin/spark-submit \
/export/server/spark/examples/src/main/python/pi.py 10
# 自定义脚本helloworld.py:
print("hello,world!")
# 通过spark-submit执行
/export/server/spark>bin/spark-submit /export/demo/helloworld.py
hello,world! # 输出
PySpark库安装
conda create -n pyspark python=3.9 #创建虚拟环境pyspark
conda activate pyspark #切换虚拟环境为pyspark
# 检查虚拟环境pyspark的python解释器路径
type python => python is /export/server/anaconda3/envs/pyspark/bin/python
vi /etc/profile编辑
PYSPARK_PYTHON=/export/server/anaconda3/envs/pyspark/bin/python
pip install pyspark -i https://pypi.tuna.tsinghua.edu.cn/simple #安装PySpark
# 验证PySpark
/export/server>python
>>> import pyspark # import pyspark不报错,表示pyspark库安装成功
本地vscode开发远程代码、使用远程解释器执行配置
本地免密访问服务器配置:将本地的公钥(C:\\Users\\your account\\.ssh\\id_rsa.pub)内容
配置在需要免密访问的linux服务器用户的$HOME/.ssh/authorized_keys文件中
vscode安装remote development插件,重启vscode
vscode添加远程ssh targets:
a) 点击ssh targets "+"
b) 在弹出框输入 ssh username@ip 回车
c) 在弹出的下拉项中选择 C:\\Users\\your account\\.ssh\\config
d) 编辑config文件
Host xxx #无需编辑
HostName xxx #无需编辑
User xxx #无需编辑
ForwardAgent yes # 需要新增
IdentityFile C:\\Users\\your account\\.ssh\\id_rsa #需要新增
vscode安装python插件
vscode添加远程python解释器:
a) Ctrl + Shift + p打开命名面板
b) 输入Python: Select Interpreter选择解释器
c) 输入远程python解释器路径: /export/server/anaconda3/envs/pyspark/bin/python
vscode开发,远程执行验证
vscode选择远程服务器打开目录
vscode中新建helloworld.py文件,并录入print("hello,world!")
vscode中执行helloworld.py#使用的是远程解释器
vscode提升缺少package,linux服务安装python包:
pip install jupyter notebook -i https://pypi.tuna.tsinghua.edu.cn/simple
在vscode中重新运行helloworld.py运行成功
完成,以后就可以开心地编写pyspark代码了,再也不担心本机卡卡卡了(*_*),附完成图一张: