一、PySpark环境搭建与测试
1. PySpark交互式环境
PySpark提供了交互式Python shell,方便开发者快速测试和验证Spark功能。
安装与使用步骤:
# 安装指定版本的PySpark和py4j sudo pip install pyspark==2.4.8 py4j==0.10.7 # 启动Python交互环境 python # 在Python交互环境中 >>> from pyspark import SparkContext >>> sc = SparkContext('local[2]','pyspark lib') # 如果sc创建错误,输入sc.stop() >>> rdd = sc.parallelize([1,2,3,4,5]) >>> datas = rdd.collect() >>> print(datas) # 输出: [1, 2, 3, 4, 5] >>> rdd.collect() # 或使用 rdd.foreach(print)
2. Jupyter Notebook环境
Jupyter Notebook提供了更友好的交互式开发体验。
安装与配置:
# 安装Jupyter和findspark sudo pip install jupyter==1.0.0 sudo pip install findspark # 启动Jupyter Notebook jupyter notebook
在Notebook中使用PySpark:
import findspark findspark.init() # 初始化Spark环境 import pyspark from pyspark import SparkContext sc = SparkContext('local[1]','pyspark lib') rdd = sc.parallelize([1,2,3,4,5]) rdd.collect() # 收集所有数据 rdd.first() # 获取第一个元素 rdd.take(3) # 获取前3个元素
3. PyCharm开发环境
PyCharm是专业的Python IDE,适合大型Spark项目开发。
安装与配置:
# 解压安装PyCharm cd /usr/local sudo tar -zxf ~/Downloads/pycharm-community-2022.3.1.tar.gz cd pycharm-community-2022.3.1 bin/pycharm.sh
PyCharm中使用Spark:
from pyspark import SparkContext from pyspark.sql import SparkSession # 创建Spark会话 spark = SparkSession.builder.master("local[1]") \ .appName('SparkExample') \ .getOrCreate() sc = spark.sparkContext # 获取Spark上下文 rdd = sc.parallelize(range(1,5)) print(rdd.collect())
二、Spark伪分布式集群搭建
1. 修改主机名
# 查看当前主机名 hostname # 输出: ubuntu # 修改主机名为vm01 sudo hostnamectl set-hostname vm01 # 验证修改 hostname # 输出: vm01
2. 修改hosts文件
sudo vi /etc/hosts # 添加以下内容 127.0.0.1 localhost 127.0.1.1 vm01
3. 配置Spark环境
cd /usr/local/spark/conf # 配置spark-env.sh vi spark-env.sh # 添加以下内容 export JAVA_HOME=/usr/local/jdk export SPARK_MASTER_HOST=vm01 # 配置slaves文件 cp slaves.template slaves vi slaves # 将localhost修改为vm01
4. 启动Spark集群
# 启动集群 cd /usr/local/spark sbin/start-all.sh # 检查进程 jps # 应看到以下关键进程: # 14101 Worker # 13931 Master # 测试集群 cd examples/src/main/python spark-submit --master spark://vm01:7077 pi.py # 浏览器访问: http://vm01:8080 查看集群状态
5. 配置历史服务器
cd /usr/local/spark/conf cp spark-defaults.conf.template spark-defaults.conf vi spark-defaults.conf # 添加以下配置 spark.eventLog.enabled true spark.eventLog.dir hdfs://localhost:9000/spark-eventlog spark.history.fs.logDirectory hdfs://localhost:9000/spark-eventlog spark.yarn.historyServer.address=vm01:18080 spark.history.ui.port=18080 # 创建HDFS目录 hdfs dfs -mkdir /spark-eventlog # 重启集群 sbin/stop-all.sh sbin/start-all.sh sbin/start-history-server.sh # 验证历史服务器 jps # 应看到HistoryServer进程 # 浏览器访问: http://vm01:18080
三、Spark应用部署模式
1. Local模式
pyspark --master local jps # 会看到SparkSubmit进程
2. Standalone模式
# 停止YARN服务 /usr/local/hadoop/sbin/stop-yarn.sh # 停止历史服务器 /usr/local/spark/sbin/stop-history-server.sh # 启动Standalone集群 /usr/local/spark/sbin/start-all.sh jps # 应看到Master和Worker进程
3. Spark on YARN模式
# 停止Standalone服务 /usr/local/spark/sbin/stop-all.sh # 启动YARN服务 /usr/local/hadoop/sbin/start-all.sh jps # 应看到ResourceManager和NodeManager进程
总结
本文详细介绍了PySpark环境的三种搭建方式(交互式shell、Jupyter Notebook和PyCharm)以及Spark伪分布式集群的部署步骤。通过修改主机名、配置Spark环境文件和启动相关服务,我们成功搭建了一个Spark伪分布式集群,并验证了Local、Standalone和YARN三种部署模式。
在实际工作中,可以根据项目需求选择合适的开发环境和部署模式。对于学习和测试,Local模式最为简单;生产环境则推荐使用Standalone或YARN模式,特别是当需要与Hadoop生态系统集成时,YARN模式是更好的选择。
配置历史服务器可以帮助开发者监控和分析Spark应用的运行情况,对于性能调优和故障排查非常有价值。