所需檔案:
更新日期為2021/5/8:
WSL?WSL2?
WSL是適用於 Linux 的 Windows 子系統可讓開發人員按原樣執行 GNU/Linux 環境 - 包括大多數命令列工具、實用工具和應用程式 - 且不會產生傳統虛擬機器或雙啟動設定開銷。
您可以:
- 在 Microsoft Store 中選擇你偏好的 GNU/Linux 分發版。
- 執行常用的命令列軟體工具(例如
grep
、sed
、awk
)或其他 ELF-64 二進位制檔案。 - 執行 Bash shell 指令碼和 GNU/Linux 命令列應用程式,包括:
- 工具:vim、emacs、tmux
- 語言:NodeJS、Javascript、Python、Ruby、C/ C++、C# 與 F#、Rust、Go 等。
- 服務:SSHD、MySQL、Apache、lighttpd、MongoDB、PostgreSQL。
- 使用自己的 GNU/Linux 分發包管理器安裝其他軟體。
- 使用類似於 Unix 的命令列 shell 呼叫 Windows 應用程式。
- 在 Windows 上呼叫 GNU/Linux 應用程式。
WSL 2 是適用於 Linux 的 Windows 子系統體系結構的一個新版本,它支援適用於 Linux 的 Windows 子系統在 Windows 上執行 ELF64 Linux 二進位制檔案。 它的主要目標是 提高檔案系統效能,以及新增 完全的系統呼叫相容性。
這一新的體系結構改變了這些 Linux 二進位制檔案與Windows 和計算機硬體進行互動的方式,但仍然提供與 WSL 1(當前廣泛可用的版本)中相同的使用者體驗。
單個 Linux 分發版可以在 WSL 1 或 WSL 2 體系結構中執行。 每個分發版可隨時升級或降級,並且你可以並行執行 WSL 1 和 WSL 2 分發版。 WSL 2 使用全新的體系結構,該體系結構受益於執行真正的 Linux 核心。
簡而言之WSL類似於windows提供的虛擬機器,同時相比VMWare Workstation擁有更好的IO效能且支援硬體直通。
WSL的官方文件地址:https://docs.microsoft.com/zh-cn/windows/wsl/
安裝WSL和WSL2
參考官方文件:文件地址
執執行手動安裝步驟即可。
以管理員身份開啟 PowerShell 並執行如下程式碼安裝WSL:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
檢查系統是否支援WSL2:
- 對於 x64 系統:版本 1903 或更高版本,採用 內部版本 18362 或更高版本。
- 對於 ARM64 系統:版本 2004 或更高版本,採用 內部版本 19041 或更高版本。
- 低於 18362 的版本不支援 WSL 2。
若要檢查 Windows 版本及內部版本號,選擇 Windows 徽標鍵 + R,然後鍵入“winver”,選擇“確定”。
如果不支援WSL2,可以直接重啟電腦,安裝Linux發行版即可。
以管理員身份開啟 PowerShell 並執行如下程式碼啟用虛擬機器功能:
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
重啟計算機
下載安裝 Linux 核心更新包:點選下載
開啟 PowerShell,然後在安裝新的 Linux 發行版時執行以下命令,將 WSL 2 設定為預設版本:
wsl --set-default-version 2
安裝Linux發行版
安裝完成後點選啟動,首次啟動需要輸入使用者名稱和密碼。
子系統安裝java
首先描述一下如何進行Windows和Linux之間的檔案操作:
方法一:通過 \\wsl$
訪問 Linux 檔案時將使用 WSL 分發版的預設使用者。 因此,任何訪問 Linux 檔案的 Windows 應用都具有與預設使用者相同的許可權。
方法二:通過VS Code訪問Linux檔案
參考文件:CSDN部落格
正式安裝:
將所需的檔案複製到WSL的目錄中,我一般遵循實體機的習慣放置到下載目錄。
cd到存放目錄使用tar命令解壓壓縮檔案:
tar -zxvf jdk-8u291-linux-x64.tar.gz
使用cp命令修改檔名便於後續操作(jdk1.8.0_291為解壓後檔案)
cp -r jdk1.8.0_291 jdk8
將jdk移動到某個目錄,我放在了/usr/bin/java/。(通過mkdir建立java目錄並移動)
sudo mkdir /usr/bin/java/
sudo mv jdk8 /usr/bin/java/
新增java到環境中:
sudo vi /etc/profile
使用vi編輯器在最後面新增:請將JAVA_HOME路徑修改為你的jdk目錄,可以通過pwd檢視當前目錄,直接複製輸出即可。
export JAVA_HOME=/usr/bin/java/jdk8
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
新增完成後按ESC鍵輸入:wq!儲存並退出。
使用如下命令重新整理:
source /etc/profile
輸入 java -version和javac -version測試無異常即可。
子系統安裝Maven
安裝步驟與Java基本相同,解壓到制定目錄,新增到環境。
寫入:(同樣注意修改路徑)
# maven
export MAVEN_HOME=/usr/bin/maven
export PATH=$PATH:$MAVEN_HOME/bin
使用source /etc/profile重新整理後使用mvn -v檢查能否正常使用。
子系統安裝Hadoop
安裝ssh服務端:
sudo apt-get update
sudo apt-get install openssh-server -y
如果提示已經安裝請刪除後重新安裝。安裝完成後重啟ssh服務:
sudo service ssh --full-restart
使用如下命令測試ssh:
ssh localhost
執行該命令後會,會出現“yes/no”選擇提示,輸入“yes
”,然後按提示輸入密碼。如果出現以下提示:
修改/etc/ssh/sshd_config檔案中PasswordAuthentication為yes
重啟服務即可。
進入SSH後,輸入命令“exit
”退出剛才的SSH,就回到了原先的終端視窗;然後,可以利用ssh-keygen生成金鑰,並將金鑰加入到授權中,命令如下:
cd ~/.ssh/ # 若沒有該目錄,請先執行一次ssh localhost
ssh-keygen -t rsa # 會有提示,都按回車即可
cat ./id_rsa.pub >> ./authorized_keys # 加入授權
此時,再執行ssh localhost命令,無需輸入密碼就可以直接登入了。
下面安裝hadoop
Hadoop包括三種安裝模式:
單機模式:只在一臺機器上執行,儲存是採用本地檔案系統,沒有采用分散式檔案系統HDFS;
偽分散式模式:儲存採用分散式檔案系統HDFS,但是,HDFS的名稱節點和資料節點都在同一臺機器上;
分散式模式:儲存採用分散式檔案系統HDFS,而且,HDFS的名稱節點和資料節點位於不同機器上。
本文只介紹Hadoop的安裝方法
解壓hadoop到制定目錄:(我放在了/opt/hadoop)
配置環境
#Hadoop
export HADOOP_HOME=/opt/hadoop
export PATH=.:${JAVA_HOME}/bin:${HADOOP_HOME}/bin:$PATH
重新整理後使用hadoop verson命令檢查:
子系統安裝Spark
解壓spark到制定目錄:(我放在了/opt/spark)
關聯使用者:
sudo chown -R pteromyini ./spark #pteromyini是你的使用者名稱
修改Spark的配置檔案spark-env.sh模板檔案
cd /opt/spark/
cp ./conf/spark-env.sh.template ./conf/spark-env.sh
修改配置檔案
sudo vi /opt/spark/conf/spark-env.sh
新增以下資訊:(修改hadoop目錄為你的目錄)
export SPARK_DIST_CLASSPATH=$(/opt/hadoop/bin/hadoop classpath)
有了上面的配置資訊以後,Spark就可以把資料儲存到Hadoop分散式檔案系統HDFS中,也可以從HDFS中讀取資料。如果沒有配置上面資訊,Spark就只能讀寫本地資料,無法讀寫HDFS資料。
配置環境:
#Spark
export SPARK_HOME=/opt/spark
export PATH=$HADOOP_HOME/bin:$SPARK_HOME/bin:$PATH
export PYTHONPATH=$SPARK_HOME/python:$SPARK_HOME/python/lib/py4j-0.10.9-src.zip:$PYTHONPATH
export PYSPARK_PYTHON=python3
PYTHONPATH環境變數主要是為了在Python3中引入pyspark庫,PYSPARK_PYTHON變數主要是設定pyspark執行的python版本。
.bashrc中必須包含JAVA_HOME,HADOOP_HOME,SPARK_HOME,PYTHONPATH,PYSPARK_PYTHON,PATH這些環境變數。如果已經設定了這些變數則不需要重新新增設定。另外需要注意,上面的配置項中,PYTHONPATH這一行有個py4j-0.10.4-src.zip,這個zip檔案的版本號一定要和“/usr/local/spark/python/lib”目錄下的py4j-0.10.4-src.zip檔案保持版本一致。比如,如果“/usr/local/spark/python/lib”目錄下是py4j-0.10.7-src.zip,那麼,PYTHONPATH這一行後面也要寫py4j-0.10.7-src.zip,從而使二者版本一致。
執行自帶例項檢查是否正常:
run-example SparkPi 2>&1 | grep "Pi is"
如果正常則安裝完成。