三、PySpark環境安裝
?
PySpark: 是Python的庫, 由Spark官方提供. 專供Python語言使用. 類似Pandas一樣,是一個庫
Spark: 是一個獨立的框架, 包含PySpark的全部功能, 除此之外, Spark框架還包含了對R語言\ Java語言\ Scala語言的支持. 功能更全. ?可以認為是通用Spark。
功能 | PySpark | Spark |
底層語言 | Scala(JVM) | Scala(JVM) |
上層語言支持 | Python | Python\Java\Scala\R |
集群化\分布式運行 | 支持 | 支持 |
定位 | Python庫 (客戶端) | 標準框架 (客戶端和服務端) |
是否可以Daemon運行 | No | Yes |
使用場景 | 生產環境集群化運行 | 生產環境集群化運行 |
若安裝PySpark需要首先具備Python環境,這里使用Anaconda環境,安裝過程如下:
?使用spark-shell方式可以進入spark的客戶端,但是這個客戶端編碼是需要scala代碼的,我們并不會。我們希望可以使用python代碼操作spark。所以可以使用pyspark的客戶端,但是一執行pyspark,就報出如下的錯誤:
原因: PySpark運行需要使用Python3.x的環境 解決辦法: Anaconda安裝Python3的環境。
通過Anaconda安裝Python3
Anaconda(水蟒): 是一個科學計算軟件發行版,集成了大量常用擴展包的環境,包含了 conda、Python 等 180 多個科學計算包及其依賴項,并且支持所有操作系統平臺。
anaconda是一個大集成者, 包含有python的環境. 同時還包含各種用于數據分析python庫, 一旦使用anaconda可以在一定程度上避免安裝各種Python的庫
anaconda提供一種虛擬化的測試, 可以基于anaconda虛擬出多個python的環境, 而且各個環境都是相對獨立的 我們稱為沙箱環境
為什么需要使用虛擬環境: 是因為python各個版本都是互相不兼容, 比如說python2 和python3 不兼容 甚至大家都是python3, 但是python3.8 無法兼容python3.7
1.下載Anaconda環境包
安裝版本:https://repo.anaconda.com/archive/
Python3.8.8版本:Anaconda3-2021.05-Linux-x86_64.sh
2.安裝Anaconda環境(三臺節點都是需要安裝)
此環境三臺節點都是需要安裝的,?以下演示在node1安裝,?其余兩臺也是需要安裝的
上傳軟件到/export/software目錄下
cd?/export/software rz 上傳Anaconda腳本環境 ![]() 執行腳本: sh Anaconda3-2021.05-Linux-x86_64.sh ![]() 不斷輸入空格,?直至出現以下解壓,?然后輸入yes ![]() 此時,?anaconda需要下載相關的依賴包,?時間比較長,?耐心等待即可...., 在等待中如果需要輸入yes/no, 直接輸入yes ![]() ![]() 配置anaconda的環境變量,三個節點都需要進行相同的操作: vim /etc/profile ##增加如下配置 #ANACONDA_HOME export ANACONDA_HOME=/root/anaconda3/bin export PATH=$PATH:$ANACONDA_HOME 修改bashrc文件,三個節點都需要進行相同的操作: vim ~/.bashrc 在文件最上面添加如下內容: export PATH=~/anaconda3/bin:$PATH 重新加載環境變量:?source /etc/profile ![]() |
說明:
profile 其實看名字就能了解大概了, profile 是某個用戶唯一的用來設置環境變量的地方, 因為用戶可以有多個 shell 比如 bash, sh, zsh 之類的, 但像環境變量這種其實只需要在統一的一個地方初始化就可以了, 而這就是 profile. bashrc bashrc 也是看名字就知道, 是專門用來給 bash 做初始化的比如用來初始化 bash 的設置, bash 的代碼補全, bash 的別名, bash 的顏色. 以此類推也就還會有 shrc, zshrc 這樣的文件存在了, 只是 bash 太常用了而已. 拷貝到其他節點:scp Anaconda3-2021.05-Linux-x86_64.sh node2:$PWD |
3.啟動anaconda并測試
注意:?請將當前連接node1的節點窗口關閉,然后重新打開,否則無法識別
輸入 Python啟動: ![]() |
如果大家發現命令行最前面出現了 (base)?信息, 可以通過以下方式, 退出Base環境
vim ~/.bashrc 拉到文件的最后面: 輸入 i 進入插入模式 將以下內容添加到最后面: conda deactivate |
4.Anaconda相關組件介紹
Anaconda(水蟒):是一個科學計算軟件發行版,集成了大量常用擴展包的環境,包含了 conda、Python 等 180 多個科學計算包及其依賴項,并且支持所有操作系統平臺。下載地址:https://www.continuum.io/downloads
- 安裝包:pip install xxx,conda install xxx
- 卸載包:pip uninstall xxx,conda uninstall xxx
- 升級包:pip install upgrade xxx,conda update xxx
Jupyter Notebook:啟動命令
jupyter notebook |
功能如下:
- Anaconda自帶,無需單獨安裝
- 實時查看運行過程
- 基本的web編輯器(本地)
- ipynb 文件分享
- 可交互式
- 記錄歷史運行結果
修改jupyter顯示的文件路徑:
通過jupyter notebook --generate-config命令創建配置文件,之后在進入用戶文件夾下面查看.jupyter隱藏文件夾,修改其中文件jupyter_notebook_config.py的202行為計算機本地存在的路徑。
IPython:
?????命令:ipython,其功能如下
?????1.Anaconda自帶,無需單獨安裝
?????2.Python的交互式命令行 Shell
?????3.可交互式
?????4.記錄歷史運行結果
?????5.及時驗證想法
Spyder:
?????命令:spyder,其功能如下
?????1.Anaconda自帶,無需單獨安裝
?????2.完全免費,適合熟悉Matlab的用戶
?????3.功能強大,使用簡單的圖形界面開發環境
下面就Anaconda中的conda命令做詳細介紹和配置。
(1)conda命令及pip命令
conda管理數據科學環境,conda和pip類似均為安裝、卸載或管理Python第三方包。
conda install ?包名 ???pip install 包名 conda uninstall 包名 ??pip uninstall 包名 conda install -U 包名 ??pip install -U 包名 |
(2) Anaconda設置為國內下載鏡像
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --set show_channel_urls yes |
(3)conda創建虛擬環境
#查看有哪些虛擬環境(沙箱環境) conda env list #創建python3.8.8環境 conda create -n py_env?python=3.8.8 #激活環境 conda?activate py_env ??? #退出環境 conda?deactivate |
5.PySpark安裝(只需要在node1安裝即可)
三個節點也是都需要安裝pySpark的,本質上只需要在node1安裝即可,后續主要基于node1來進行本地測試
6.1(推薦使用的方式)直接安裝PySpark(下載好的包)
安裝如下:
使用PyPI安裝PySpark如下:也可以指定版本安裝 pip install pyspark==3.1.2 或者指定清華鏡像(對于網絡較差的情況): pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyspark==3.1.2??# 指定清華鏡像源 教室網絡非常差怎么辦?提前下載到本地,然后直接本地安裝: 先將pyspark的jar包上傳到node1 /export/software cd /export/software pip install pyspark-3.1.2.tar.gz 如果要為特定組件安裝額外的依賴項,可以按如下方式安裝(此步驟暫不執行,后面Sparksql部分會執行): pip install pyspark[sql] |
截圖如下:
6.2[通用安裝]方式2:創建Conda環境安裝PySpark
#從終端創建新的虛擬環境,如下所示 conda create -n pyspark_env python=3.8 ![]() #創建虛擬環境后,它應該在 Conda 環境列表下可見,可以使用以下命令查看 conda env list ![]() #現在使用以下命令激活新創建的環境: source activate pyspark_env 或者 conda activate pyspark_env ![]() 如果報錯:?CommandNotFoundError: Your shell has not been properly configured to use 'conda deactivate'.切換使用 source?activate #您可以在新創建的環境中通過使用PyPI安裝PySpark來安裝pyspark,例如如下。它將pyspark_env在上面創建的新虛擬環境下安裝 PySpark。 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyspark==3.1.2 #或者,可以從 Conda 本身安裝 PySpark: conda install pyspark==3.1.2 ![]() |
6.3[不推薦]方式3:手動下載安裝
將spark對應版本下的python目錄下的pyspark復制到anaconda的
Library/Python3/site-packages/目錄下即可。
請注意,PySpark 需要JAVA_HOME正確設置的Java 8 或更高版本。如果使用 JDK 11,請設置-Dio.netty.tryReflectionSetAccessible=true,Arrow相關功能才可以使用。
擴展:
conda虛擬環境 命令 查看所有環境 conda info --envs 新建虛擬環境 conda create -n myenv python=3.6 刪除虛擬環境 conda remove -n myenv --all 激活虛擬環境 conda activate myenv source activate base 退出虛擬環境 conda deactivate myenv |
7.初體驗-PySpark?shell方式
前面的Spark Shell實際上使用的是Scala交互式Shell,實際上 Spark 也提供了一個用 Python 交互式Shell,即Pyspark。
bin/pyspark --master local[*] |
PySpark環境驗證計算圓周率
演示: 將spark提供的官方測試python腳本提交到spark的local上,檢測spark是否可以正常的運行
[root@node1 bin]#cd /export/server/spark/bin ? [root@node1 bin]#./spark-submit /export/server/spark/examples/src/main/python/pi.py 100
驗證成功截圖: