返回文章列表

數據工程本地環境設定:Spark與MySQL安裝詳解

本文為數據工程本地開發環境建置的實務指南,詳細闡述如何在 Windows、macOS 與 Linux 系統上安裝與設定 Apache Spark。內容涵蓋 Windows 環境中 HADOOP_HOME 變數的設定、macOS 透過 Homebrew 的安裝流程,以及驗證 spark-submit 與 spark-shell 功能的關鍵步驟。此外,文章亦說明在 Windows 系統上使用 MySQL Installer 安裝資料庫的過程,為後續的數據處理與分析專案奠定穩固的基礎。

數據工程 技術實踐

在數據工程的實踐領域中,建立一個穩定且功能完整的本地開發環境是專案成功的第一步。此舉不僅能讓開發者在不受網路延遲或遠端資源限制的情況下,進行高效的程式碼撰寫、測試與除錯,更能深刻理解底層工具的運作原理。本文接續前章,聚焦於兩大核心組件:分散式運算框架 Apache Spark 與關聯式資料庫 MySQL 的本地部署。透過對 Windows、macOS 等主流作業系統的詳細步驟拆解,旨在協助數據工程師掌握環境配置的關鍵細節,從而為後續複雜的數據管道(Data Pipeline)開發與數據分析任務,打下堅實且可控的技術根基。

數據工程高科技養成:從理論到實踐的玄貓指引

本地環境建置:掌控開發細節

Spark

Windows
  1. 運行spark-shell以確保其正常工作。以下顯示了成功運行的情況:
>spark-shell
22/12/21 19:48:30 WARN Shell: Did not find winutils.exe: java.
io.FileNotFoundException: Could not locate Hadoop executable:
WindowsProblems
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For
SparkR, use setLogLevel(newLevel).
22/12/21 19:48:36 WARN NativeCodeLoader: Unable to load native-
hadoop library for your platform... using builtin-java classes
where applicable
default:4040
Spark context available as 'sc' (master = local[*], app id =
local-1671632317752).
Spark session available as 'spark'.
Welcome to
____ __
/ __/__ ___ _____/ /__
_\ \/ _ \/ _ `/ __/ '_/
/___/ .__/\_,_/_/ /_/\_\ version 3.3.1
/_/
Using Scala version 2.12.15 (OpenJDK Client VM, Java 1.8.0_352)
Type in expressions to have them evaluated.
Type :help for more information.
scala>

為了運行spark-submit,讀者需要創建一個C:\hadoop\bin目錄,下載winutils.exe,並將其放入該目錄。最後,創建一個HADOOP_HOME環境變數並將其設定為C:\hadoop

此圖示:設定HADOOP_HOME環境變數

@startuml
!define DISABLE_LINK
!define PLANTUML_FORMAT svg
!theme _none_

skinparam dpi auto
skinparam shadowing false
skinparam linetype ortho
skinparam roundcorner 5
skinparam defaultFontName "Microsoft JhengHei UI"
skinparam defaultFontSize 16
skinparam minClassWidth 100

rectangle "系統內容" as SystemProperties {
rectangle "環境變數" as EnvironmentVariables {
component "新增系統變數" as NewSystemVarBtn
component "變數名稱: HADOOP_HOME" as VarName
component "變數值: C:\hadoop" as VarValue
component "確定按鈕" as OKBtn
}
NewSystemVarBtn -down-> VarName
VarName -down-> VarValue
VarValue -down-> OKBtn
}
@enduml

看圖說話:

此圖示展示了在Windows系統中設定HADOOP_HOME環境變數的過程。為了讓Apache Spark在Windows上能夠完全正常運行,特別是執行spark-submit等命令時,需要模擬Hadoop環境。這涉及到創建一個C:\hadoop\bin目錄並將winutils.exe放入其中。隨後,使用者需要在「環境變數」設定中,新增一個系統變數HADOOP_HOME,並將其值設定為C:\hadoop。這個變數的設定對於Spark與Hadoop檔案系統的互動至關重要,確保Spark能夠找到必要的Hadoop工具。

現在讀者可以啟動spark-submit以確保其正常工作,如下所示:

>spark-submit ^
--class org.apache.spark.examples.SparkPi ^
--master local[*] ^
%SPARK_HOME%\examples\jars\spark-examples_2.12-3.3.1.jar ^
100

讀者應該會在輸出中看到Pi is roughly 3.1412963141296313

Mac

macOS的安裝步驟概述如下:

  1. 透過以下方式安裝Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

以下是命令輸出:

此圖示:Homebrew安裝過程

@startuml
!define DISABLE_LINK
!define PLANTUML_FORMAT svg
!theme _none_

skinparam dpi auto
skinparam shadowing false
skinparam linetype ortho
skinparam roundcorner 5
skinparam defaultFontName "Microsoft JhengHei UI"
skinparam defaultFontSize 16
skinparam minClassWidth 100

actor User as U
participant Terminal as T
box "Homebrew 安裝腳本" as Script {
participant "下載器 (curl)" as Curl
participant "安裝器 (bash)" as Bash
}

U -> T : 執行安裝命令
T -> Curl : 請求安裝腳本
Curl --> T : 返回安裝腳本
T -> Bash : 執行安裝腳本
Bash -> T : 顯示安裝進度/提示
T --> U : 顯示安裝完成訊息
@enduml

看圖說話:

此圖示描繪了在macOS系統上安裝Homebrew的互動過程。使用者首先在終端機中執行特定的安裝命令。這個命令會透過curl工具從GitHub下載Homebrew的安裝腳本,然後將其傳遞給bash解釋器執行。在執行過程中,終端機會顯示安裝進度、提示使用者輸入密碼或確認操作。一旦安裝完成,終端機將顯示成功訊息,表明Homebrew這個macOS上流行的套件管理器已成功部署,為後續安裝Scala和Spark等工具奠定基礎。

  1. 使用brew,玄貓現在將透過以下方式安裝Scala:
brew install scala

以下是運行命令時的結果:

此圖示:使用Homebrew安裝Scala

@startuml
!define DISABLE_LINK
!define PLANTUML_FORMAT svg
!theme _none_

skinparam dpi auto
skinparam shadowing false
skinparam linetype ortho
skinparam roundcorner 5
skinparam defaultFontName "Microsoft JhengHei UI"
skinparam defaultFontSize 16
skinparam minClassWidth 100

actor User as U
participant Terminal as T
participant Homebrew as HB
participant ScalaRepo as SR

U -> T : 執行 "brew install scala"
T -> HB : 請求安裝 Scala
HB -> SR : 檢查 Scala 版本與依賴
SR --> HB : 返回 Scala 套件資訊
HB -> T : 下載並安裝 Scala
T --> U : 顯示安裝成功訊息
@enduml

看圖說話:

此圖示展示了在macOS上使用Homebrew安裝Scala的簡潔流程。使用者在終端機中輸入brew install scala命令。Homebrew作為套件管理器,會接收到這個請求,然後從其軟體庫中檢查Scala的最新版本及其所有必要的依賴項。確認無誤後,Homebrew會自動下載並安裝Scala到系統中。最終,終端機將顯示安裝成功的訊息,表明Scala編程語言環境已準備就緒,使用者可以開始進行Scala開發。

  1. 接下來,玄貓將安裝Apache Spark:
brew install apache-spark

以下是輸出:

此圖示:使用Homebrew安裝Apache Spark

@startuml
!define DISABLE_LINK
!define PLANTUML_FORMAT svg
!theme _none_

skinparam dpi auto
skinparam shadowing false
skinparam linetype ortho
skinparam roundcorner 5
skinparam defaultFontName "Microsoft JhengHei UI"
skinparam defaultFontSize 16
skinparam minClassWidth 100

actor User as U
participant Terminal as T
participant Homebrew as HB
participant SparkRepo as SpR

U -> T : 執行 "brew install apache-spark"
T -> HB : 請求安裝 Apache Spark
HB -> SpR : 檢查 Spark 版本與依賴
SpR --> HB : 返回 Spark 套件資訊
HB -> T : 下載並安裝 Apache Spark
T --> U : 顯示安裝成功訊息
@enduml

看圖說話:

此圖示描繪了在macOS上透過Homebrew安裝Apache Spark的過程。使用者在終端機中執行brew install apache-spark命令。Homebrew會處理這個請求,從其軟體庫中檢索Apache Spark的套件資訊,包括其版本和所有必要的運行時依賴。一旦確認,Homebrew會自動下載並將Apache Spark安裝到系統中。安裝成功後,終端機將顯示相應的訊息,標誌著本地Spark環境的建立,使用者可以開始進行大數據處理和分析的開發工作。

Linux

關於在RHEL8上安裝Spark叢集的詳細步驟,讀者可以參考特定的指南。為簡潔起見,玄貓在此不重複這些步驟,建議讀者自行查閱。如果讀者使用的是其他Linux發行版,步驟應該非常相似,甚至完全相同。

安裝完成後,檢查spark-submitspark-shell是否正常工作:

# 使用我們剛剛設定的獨立叢集
# 將 <hostname> 替換為你的主機名
# 輸出中應該會看到 Pi is roughly 3.1399691139969113

spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://<hostname>:7077 \
/opt/spark/examples/jars/spark-examples_2.12-3.2.1.jar \
100

# 使用我們剛剛設定的獨立叢集
# 將 <hostname> 替換為你的主機名
spark-shell --master spark://<hostname>:7077

此圖示:Spark UI介面

@startuml
!define DISABLE_LINK
!define PLANTUML_FORMAT svg
!theme _none_

skinparam dpi auto
skinparam shadowing false
skinparam linetype ortho
skinparam roundcorner 5
skinparam defaultFontName "Microsoft JhengHei UI"
skinparam defaultFontSize 16
skinparam minClassWidth 100

rectangle "Spark Web UI" as SparkUI {
component "應用程式列表" as Applications
component "工作列表" as Jobs
component "階段列表" as Stages
component "執行器列表" as Executors
component "儲存" as Storage
component "環境" as Environment
component "日誌" as Logs
component "叢集資訊" as ClusterInfo
component "導航欄" as Nav
component "主內容區" as MainContent

Nav -right-> MainContent
Nav --> Applications
Nav --> Jobs
Nav --> Stages
Nav --> Executors
Nav --> Storage
Nav --> Environment
Nav --> Logs
Nav --> ClusterInfo
}
@enduml

看圖說話:

此圖示展示了Spark Web UI的整體架構,這是監控和管理Spark應用程式的重要工具。Spark UI提供了一個直觀的介面,使用者可以透過導航欄訪問不同的視圖,包括應用程式列表(查看所有正在運行或已完成的Spark應用程式)、工作列表(監控每個應用程式中的高層次工作)、階段列表(深入了解每個工作的執行階段)、執行器列表(查看叢集中所有執行器的狀態和資源使用情況)、儲存(監控緩存數據)、環境(查看Spark配置)、日誌(訪問驅動程式和執行器的日誌)以及叢集資訊。這個Web UI對於調試、性能優化和理解Spark應用程式的運行行為至關重要。

在本節中,玄貓介紹了在本地安裝Spark的步驟。讀者也可以選擇使用Docker容器創建Spark叢集。如果讀者選擇這樣做,請參考相關文檔。

MySQL

在接下來的章節中,玄貓將使用MySQL作為資料庫實例。如果讀者的機器尚未安裝MySQL,玄貓建議讀者安裝。

Windows

最簡單且推薦的方法是下載MySQL Installer (for Windows),讓它自動安裝和配置特定版本的MySQL Server。執行以下步驟在機器上安裝MySQL:

  1. 前往MySQL官方下載頁面:

此圖示:MySQL Installer下載頁面

@startuml
!define DISABLE_LINK
!define PLANTUML_FORMAT svg
!theme _none_

skinparam dpi auto
skinparam shadowing false
skinparam linetype ortho
skinparam roundcorner 5
skinparam defaultFontName "Microsoft JhengHei UI"
skinparam defaultFontSize 16
skinparam minClassWidth 100

rectangle "MySQL 下載頁面" as MySQLDownloadPage {
component "MySQL Installer for Windows" as InstallerLink
component "下載按鈕" as DownloadBtn
component "版本選擇" as VersionSelect
component "作業系統選擇" as OSOption
component "產品選擇" as ProductSelect

VersionSelect -down-> OSOption
OSOption -down-> ProductSelect
ProductSelect -down-> InstallerLink
InstallerLink -down-> DownloadBtn
}
@enduml

看圖說話:

此圖示展示了MySQL Installer的下載頁面。使用者通常需要首先選擇所需的MySQL版本,然後確認作業系統選項為Windows。頁面會提供不同版本的MySQL產品,其中「MySQL Installer for Windows」是推薦的安裝方式,它整合了多個MySQL產品組件,簡化了安裝過程。使用者點擊相應的下載按鈕即可獲取安裝程式。這個Installer能夠自動引導使用者完成MySQL Server及其相關工具的安裝和配置。

  1. 運行安裝程式,它會提示讀者選擇「僅伺服器 (Server only)」,然後按照提示操作。玄貓建議保留預設設定:

此圖示:MySQL安裝精靈

@startuml
!define DISABLE_LINK
!define PLANTUML_FORMAT svg
!theme _none_

skinparam dpi auto
skinparam shadowing false
skinparam linetype ortho
skinparam roundcorner 5
skinparam defaultFontName "Microsoft JhengHei UI"
skinparam defaultFontSize 16
skinparam minClassWidth 100

rectangle "MySQL 安裝精靈" as MySQLWizard {
component "歡迎頁面" as Welcome
component "選擇安裝類型" as SetupType {
component "開發者預設" as DevDefault
component "僅伺服器" as ServerOnly
component "僅客戶端" as ClientOnly
component "完整" as Full
component "自訂" as Custom
}
component "產品配置" as ProductConfig
component "根密碼設定" as RootPassword
component "服務配置" as ServiceConfig
component "完成" as Finish
component "下一步按鈕" as NextBtn
component "返回按鈕" as BackBtn
}

Welcome -down-> SetupType
SetupType -down-> ProductConfig : 選擇 "僅伺服器"
ProductConfig -down-> RootPassword
RootPassword -down-> ServiceConfig
ServiceConfig -down-> Finish
Finish -down-> NextBtn
NextBtn -right-> BackBtn
@enduml

看圖說話:

此圖示描繪了MySQL安裝精靈的典型流程。安裝過程從一個歡迎頁面開始,然後引導使用者選擇安裝類型。對於數據工程應用,通常建議選擇「僅伺服器」(Server Only),以安裝核心的MySQL資料庫伺服器。隨後,精靈會進入產品配置階段,允許使用者進行更細緻的設定。一個關鍵步驟是設定根密碼,這對於資料庫的安全性至關重要。接著是服務配置,例如設定MySQL服務的名稱和啟動選項。最後,精靈會顯示完成頁面,表明安裝已成功。整個過程透過「下一步」和「返回」按鈕引導使用者逐步完成。

  1. 安裝MySQL Server後,在Windows搜尋欄中輸入mysql 8.0 command line client並啟動命令列工具。它會要求輸入在設定步驟中創建的根密碼:
Enter password: ********************
Welcome to the MySQL monitor. Commands end with ; or \g.

結論

從職涯發展視角評估,親手完成本地開發環境的建置,其價值遠不止於成功安裝工具。相較於直接使用雲端平台或預設容器,這個從零到一的過程,本身就是一場深刻的實務修養。從處理HADOOP_HOME環境變數到解決跨作業系統的依賴差異,每一次除錯與設定,都在鍛鍊工程師對系統底層的掌控力與解決問題的韌性,並將零散的理論知識強制整合為一套可運作的個人技術資產。

未來,即便容器化與雲端原生技術成為主流,這種底層建置能力依然是區分資深與初階工程師的護城河,直接影響其面對複雜部署與效能瓶頸時的診斷深度。

玄貓認為,紮實走過這段建置旅程,是奠定數據工程師專業成熟度的必要投資,其磨練出的核心素養,將成為個人長期發展中最穩固的基石。