PySpark单机模式(local)的环境搭建
本文介绍如何在Windows操作系统(以win11为例)上配置一个可以运行PySpark程序的开发环境,如存在任何问题或纰漏,欢迎指正和交流。
主要涉及到以下工具包的安装
安装包版本JDKjdk-8u281AnacondaAnaconda3-2020.11Hadoop3.2.2Hive3.1.1 1.22 (3.1.1为运行版本,1.22版本提供Windows系统下的运行工具)Mysql8Mysql Connecter8.0.21
这里下载Hadoop时,清华镜像源没有提供3.2.2的版本,3.2.2版本的下载需要到apache官网下载
一、安装JDK
1.1 JDK的下载
https://www.oracle.com/java/technologies/javase/javase8u211-later-archive-downloads.html
打开链接,可以查看历史各个版本的Java,找到我们所需要的版本
初次在ORACLE下载资源会需要注册账号,可能会遇到网络问题,文章最后提供了所有工具包的安装包。如在登录时遇到表单请求错误,可尝试更换浏览器,推荐使用Edge,全程不需要网络代理。
1.2 安装到本地
双击准备好的文件,点击下一步,直到出现安装。
在这里根据自己的习惯更改安装路径(安装路径后续配置环境要用到),默认是安装在C盘下,注意路径不要有中文即可
等待下载后,会出现如下弹窗提示
这是要安装java的运行环境(jre),准备一个新的文件夹作为安装路径,路径还是不要出现中文,建议放在jdk安装路径的同一根路径下
设置好路径后,点击下一步继续安装,出现下图弹窗后,代表已经安装成功
1.3 配置环境变量
在电脑的开始搜索框中搜索环境变量,点击相关设置,或者找到桌面图标"此电脑",右键后点击"属性",再点击"环境变量"
点击后,会看到如下弹窗,我们点击环境变量
进来后,我们新建一个系统变量
变量名设置为 JAVA_HOME , 然后点击浏览目录,找到我们刚刚安装jdk的路径,作为变量值
然后再系统变量中,找到Path并点击
新建下面两个路径
%JAVA_HOME%\bin
%JAVA_HOME%\jre\bin
最后点击确定,总共需要点击三个确定,直到退出系统属性那个页面。
1.4 测试安装是否成功
win+R打开运行窗口,输入cmd打开命令行,之后输入 java -version,出现下图版本信息则安装成功,也可以看到版本信息正是我们安装的281
二、安装Anaconda
2.1 Anaconda的下载
https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/
在清华大学开源软件镜像站找到我们需要的Anaconda版本
2.2 Anaconda的安装
开始安装,出现下图弹窗时,这里我选择 All Users
之后就是选择安装路径,根据自己的使用习惯设置就好
重点是接下来的两个选项
第一个框选,会将Anaconda3自动添加到系统的环境变量中,我们可以在Windows命令行(即win+R唤出的操作台)进行conda命令,如果没有添加,我们需要打开anaconda自己提供的命令行或navigator里进行相关操作,这里我没有勾选,如果对Anaconda后续还有持续使用的需求,建议在这里勾选或者后续再去手动添加环境变量
第二个框选,如果你的电脑之前已经安装过python,这里也不建议勾选
之后等待安装结束就好了
2.3 Anaconda的基本介绍
我们还是在开始搜索栏中,进行搜索,会看到Spyder、Anaconda Prompt、Anaconda Navigator、Jupyter Notebook。这里我后面还有括号是因为我的电脑安装过其他版本的Anaconda,如果你之前没有安装过Anaconda,这里是不会有额外的内容的。
其中Spyder、Jupyter Notebook 是Anaconda提供的开发环境。
Anaconda Prompt、Anaconda Navigator都是管理环境的工具,只不过Navigator提供了图形菜单页面,便于操作,Prompt需要我们使用相关的conda命令进行操作
我们打开Anaconda Prompt,输入conda -V ,可以查看当前anaconda的版本
除了查看版本,我们也能查看我们当前已有的虚拟环境: conda env list , 其中 base 是我们的根环境。 注意,由于我之前使用过其他版本的Anaconda,可以看到除了base环境及其路径外,其他行还有别的的路径,这些路径存放的是我另一个版本anaconda创建的环境。如果第一次使用,只会有 base 环境及其路径。
除了在命令行进行管理,我们也可以使用Navigator进行管理,笔记本设备打开会有点慢,耐心等待一下。进来后是Anaconda的首页,我们点击 Environments 就可以进行环境的管理了
在这里,我们就可以管理我们的虚拟环境,进行增加、删除、克隆等操作。也可以管理每个虚拟环境中的包,十分方便。
就我目前使用的体验来说,笔记本设备在使用navigator会比较卡顿,大家可以根据自己的需求选择使用Prompt或者navigator。
这里附上常用conda命令的链接
三、安装Hadoop
3.1 Hadoop安装包的下载与解压
访问Hadoop官网需要网络代理,我们从清华镜像网站进行下载
https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/
这里我们原本的目标是要下载3.2.2版本,但在我本人进行环境下载时(2024年9月5日)已经没有提供3.2.2的安装包了,需要下载3.2.2版本需要到apache官网下载
https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-3.2.2/hadoop-3.2.2.tar.gz
这里如果没有网络代理是无法访问apache官网的,可以在清华镜像源下载3.2.4作为替代
点击进来后,我们下载这个文件
下载完成后,我们将会得到一个hadoop的 tar.gz 格式压缩包,这个压缩包,我们需要用到winrar压缩工具进行解压,同时为了避免权限问题,我们要用管理员身份打开winrar后进行解压
没有winrar可以在官网自行下载使用,下载和安装都比较简单,这里就不多赘述
https://www.winrar.com.cn/index.htm
找到我们需要解压的文件进行解压
3.1.1 工具文件下载
在windows系统中运行Hadoop,需要下载额外两个工具文件,winutils.exe 和hadoop.dll
下载链接(需要网络代理)
https://github.com/cdarlint/winutils/tree/master/hadoop-3.2.2/bin
下载后,进入解压后的hadoop目录的bin目录下,复制或替换windows下使用的两个文件
【注意】 这里有的教程会将这两个工具文件放在“C:\windows\System32”目录下,以下是个人的理解,仅提供想法,真实性不做保证
==> 如果你以管理员身份启动cmd命令行,会发现命令行的根目录刚好就是在C:\windows\System32,而windows正常启动Hadoop需要以管理员身份cmd来运行。所以这里的两个工具文件如果放在hadoop的bin目录下,相当于将工具封装在Hadoop里一起交给操作系统去运行,而直接将工具文件放在C:\windows\System32下,相当于给操作系统补充了两个工具。
3.2 配置环境变量
和之前配置java的环境变量一样,我们对hadoop也需要进行同样的操作,先新增系统变量 HADOOP_HOME,选择Hadoop解压后的所在地址作为变量值
新增Path变量 %HADOOP%\bin
3.3 修改配置文件
3.3.1 修改 hadoop-env.cmd文件
在hadoop目录下,进入 etc/hadoop 目录(后续所有需要修改的配置文件都在该目录中),找到 hadoop-env.cmd 文件,右键选择在记事本中编辑
在文件末尾添加 Java 的环境变量 ,这里引号内的内容是我们安装JDK的路径,根据自己的安装路径进行更改
@set JAVA_HOME="D:\jdk1.8.0_281"
如果安装路径过长,就要考虑使用8.3命名方法,用6位字母,然后添加“~”符号和1个数字,如下演示
@set JAVA_HOME="C:\Program Files\Java\jdk1.8.0_281"
::8.3命名法为
@set JAVA_HOME="C:\Progra~1\Java\jdk1.8.0_281"
3.3.2 修改 hdfs-site.html 文件
还是在 etc/hadoop 目录下,找到hdfs-site.html 文件,打开进行编辑,可以看到原始文件中的 configuration 配置信息是空的
我们进行修改,修改内容如下
【注意】这里的两个路径所指向的文件夹需要自己去对应创建,即需要在自己的hadoop目录下新建一个data文件夹,然后再data文件夹里再新建datanode和namenode文件夹
剩下的配置文件修改方式和前两个相同,并且不需要再做额外的路径修改,直接进行替换即可
3.3.3 修改 core-site.xml 文件
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
3.3.4 修改mapreduce-site.xml文件
【注意】在我下载到的hadoop版本里,对这里的mapreduce-site.xml文件进行了缩写,文件名变成了 mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
3.3.5 修改yarn-site.xml文件
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
</configuration>
3.4 格式化NameNode
以管理员身份打开cmd 命令提示符,进入hadoop目录下的bin文件目录
这里可能会提示文件名、目录名或卷标语法不正确。对后续没什么影响,具体原因暂时也不清楚。
后续会让你确认是否格式化,输入y之后回车确认就好
3.5 启动hadoop
还是通过cmd(管理员身份打开),我们进入hadoop目录下的sbin文件目录,然后执行start-all.cmd命令
启动后,会弹出四个窗口,启动了如下4个服务: Hadoop Namenode 、Hadoop datanode、 YARN Resourc Manager 、YARN Node Manager。仔细检查四个窗口的名称是否能够对应上,如果没有出现则说明该组件启动失败
打开浏览器,输入 http://localhost:9870,看到出现如下页面,即表示Hadoop配置正确并正常运行
四、安装MySQL
4.1 MySQL的下载与安装
下载链接
https://dev.mysql.com/downloads/installer/
点击后会看到8.0版本的最新版本,我这里下载的是8.0.21,下载下面的启动器
双击下载好的安装包,开始下载
等待一段时间后来到下面的安装页面,Developer Default 会安装所有组件,有的版本的mysql没有该选项,需要自己手动选择需要下载的组件,这里我们选择 custom ,自定义安装自己需要的组件
额外介绍一下各个组件的作用(来源博客 :http://t.csdnimg.cn/7gLzD):
- MySql Server:Mysql数据库的服务器,我们操作数据一般都是连接到该服务器进行操作
- MySql Workbench:可视化操作MySql数据库中的数据,说人话就是你可以用鼠标点击操作数据库
- MySql Shell:这个就是通过命令行操作MySql数据库中的数据,学习命令时,推荐用这个,可以快速熟悉各种命令
- MySql for visual studio:VS默认只显示自己的SQL Server源,所以要想MySql连接VS,就需要这个工具
- Connector/NET :MySQL官方的.NET驱动程序,用于结合MySql for visual studio工具连接VS的
- Connector/ODBC:该组件使用户可以用ODBC (Open Database Connectivity,开放数据库互联)数据库连接Mysql的服务器。比如说,用户可以使用Windows中的应用程序,如微软的 Access,Excel去连接数据库服务器。
- Connector/J: 连接java的包
- Connector/C++:c++接口组件
- Connector/Python:phthon接口组件
- MySql Router:连接数据库与应用程序的中间组件 MySql
- Documentation:MySql数据库的使用文档
- Samples and Examples:例子
这里MySQL Server 和 connector/J 是我们需要的核心组件, 注意版本,这里选择的都是8.0.21,选择好后点击next。这里默认会安装在C盘,如果要额外设置,点击需要设置安装路径的组件,下方会出现蓝色小子 advanced options,点击进行更改安装路径。
依次点击execute,到这里表明准备开始下载,点击next
进行配置
这里选择第一个 Standalone MySQL Server模式
该配置页面不需要额外配置
这里选择第二个验证方式,避免后续出现难以解决的问题
设置密码,密码可以简单点,但一定要记住
后面依次点击next,直到这里,配置完成,点击finish
后续没有需要再额外操作的地方,点击next到该页面,安装完成
4.2 验证安装是否成功
在开始菜单中,搜索MySQL,选择Command Line Client
点击后,输入安装时设置的密码,即可登录MySQL客户端
五、安装Hive
5.1 Hive的下载
下载链接,选择3.1.1的版本下载
https://archive.apache.org/dist/hive/
下载 apache-hive-3.1.1-bin.tar.gz 文件
5.2 配置环境变量
和配置Hadoop一样,我们依次解压,配置环境变量,新建Path环境变量
5.3 配置MySQL驱动
下载链接
https://downloads.mysql.com/archives/c-j/
选择相应的版本和操作系统
下载后,我们解压,找到文件夹中存放的驱动JAR包 mysql-connector-java-8.0.21.jar
将该JAR包复制到我们HIVE目录下的lib文件夹里
5.4 在HDFS中创建目录
首页我们先启动Hadoop,启动方法在本文3.5节中可以查看
在HDFS中创建tmp目录、user目录及其子目录,并设置组可写权限
hadoop fs -mkdir /tmp
hadoop fs -chmod g+w /tmp
hadoop fs -mkdir -p /user/hive
hadoop fs -mkdir /user/hive/warehouse
hadoop fs -chmod g+w /user/hive/warehouse
我们重新打开一个cmd命令提示符窗口,依次输入命令
全部输入后,我们可以在网页端查看我们的目录是否设置成功。如果没有成功仔细查看自己hadoop的四个服务是否全部正常启动,尝试重启Hadoop后再进行尝试
5.5 创建data目录及其子目录
在HIVE目录中,创建本地data目录,并在data目录中创建operation_logs、querylog、resources、scratch子目录用于存储Hive本地日志内容
5.6 修改hive-site.xml文件
复制 hive 目录的 conf 目录下的 hive-default.xml.template 文件,将其命名为 hive-site.xml 并修改内容,将文件中的内容替换为自己的本地路径
scratchdir 本地目录 : hive.exec.local.scratchdir
修改为本地路径
resources_dir 本地目录:hive.downloaded.resources.dir
修改为本地路径
querylog 本地目录:hive.querylog.location
修改为本地路径
operation_logs 本地目录:hive.server2.logging.operation.log.location
修改为本地路径
数据库连接地址配置:javax.jdo.option.ConnectionURL
修改为以下内容 jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true&serverTimezone=GMT&characterEncoding=UTF-8&allowPublicKeyRetrieval=true&useSSL=false
mysql默认端口号都是3306
数据库驱动配置 :javax.jdo.option.ConnectionDriverName
修改为以下内容:
com.mysql.cj.jdbc.Driver
数据库用户名:javax.jdo.option.ConnectionUserName
修改为自己的用户名(默认都是root)
数据库访问密码:javax.jdo.option.ConnectionPassword
修改为自己安装MySQL时设置的密码
解决 Caused by: MetaException(message:Version information not found in metastore. ):hive.metastore.schema.verification
修改为false
自动创建全部:datanucleus.schema.autoCreateAll
修改为true
HIVE 3.1.1 hive-site.xml 3210行 description有错误,删除
5.7 修改hive-env.sh文件
复制 hive 目录的 conf 目录下的 hive-env.sh.template 文件,将其命名为hive-env.sh并修改内容
# 将[HADOOP_HOME]替换为Hadoop的本地路径,[HIVE_HOME]替换为Hive的本地路径
HADOOP_HOME= [HADOOP_HOME]
export HIVE_CONF_DIR= [HIVE_HOME]\conf
export HIVE_AUX_JARS_PATH= [HIVE_HOME]\lib
5.8 复制Hive运行文件
Hive 1.2版本以后不再提供Windows系统下的命令行工具,该工具需要在hive.1.2.2-src源码包中找到
下载地址
https://archive.apache.org/dist/hive/hive-1.2.2/
下载完整后,我们将hive.1.2.2-src中bin目录复制到hive的根目录中,覆盖hive原有的bin目录
5.9 初始化Hive元数据并启动Hive
打开cmd,进入hive的bin目录中
输入并执行 hive --service schematool -dbType mysql -initSchema,出现Initialization script completed
schemaTool completed 表示成功
!!!首先要启动Hadoop!!!,然后我们在bin目录里执行 hive.cmd 命令,启动hive,出现 hive> 表示hive运行成功
六、 配置PySpark
6.1 安装PySpark模块
我们新建一个虚拟环境,名字就叫PySpark,点击create后耐心等它创建完,可能会有点慢
我们搜索pyspark包,但可能搜不出来,如果能搜出来,我们直接 appply 应用就好
如果发现搜不到pyspark包,我们就从Anaconda Prompt进去安装。
输入命令 pip install pyspark -i https://pypi.tuna.tsinghua.edu.cn/simple 从清华源镜像网站下载,注意是是用pip
下载完成后,再查看一下安装的包,可以看到PySpark已经安装上了
6.2 配置文件
找到我们安装Anaconda的目录,进入env目录,这里可以看到我们所创建的所有虚拟环境
进入PySpark目录下 Lib\site-packages\pyspark 目录,新建一个conf文件夹
将我们的Hive配置文件hive-site.xml 复制到 conf 文件夹中
找到我们PySpark环境中的python,将其路径设置为环境变量
变量名设置为 PYSPARK_PYTHON
七、运行 Jupyter Notebook
打开Anaconda navigator,Application On 选择 Spark,启动 Jupyter Notebook
我们启动Hadoop和hive,然后再jupyter notebook中编写程序测试,可以看到我们已经能配置并创建了一个支持 Hive 的 SparkSession 实例,但是在后续使用sql命令时还是出现了问题
【注意】 在网上搜寻了一下,发现有个重要的步骤遗漏了,我们需要将我们的驱动JAR包 mysql-connector-java-8.0.21.jar 在 Spark 包中的jars目录下
再次尝试后,问题解决,部署完成。
八、安装包资源
链接: https://pan.baidu.com/s/139FSAF4MYJyNQDHvn7Hlrg?pwd=zy4y 提取码: zy4y
版权归原作者 梅南雪 所有, 如有侵权,请联系我们删除。