使用Docekr快速架設PySpark環境

閱讀時間約 8 分鐘

Docker 安裝 請參考下列網址

Ubuntu · 《Docker -- 從入門到實踐­》正體中文版
Edit descriptionphilipzheng.gitbooks.io

引言

在數據分析和機器學習的世界中,Apache Spark已成為不可或缺的工具,其強大的分散式處理能力使其成為處理大數據的首選框架。然而,配置一個Spark環境往往是一個複雜且耗時的任務,尤其是對於初學者而言。此時,Docker應運而生,提供了一個簡單、快捷的解決方案。

Docker是一種容器化技術,允許用戶將應用及其依賴項打包成一個隔離的容器中。這種隔離不僅保證了運行環境的一致性,還大大簡化了部署和管理的過程。相較於傳統的虛擬機,Docker容器更輕量級,啟動更迅速,且更容易擴展和遷移。

選擇Docker來部署PySpark環境的理由不僅僅是因為它的便利性。它還能保證不同開發者和數據科學家之間環境的一致性,從而消除了“在我的機器上可以運行”的問題。

以往要建立一個Spark測試或是練習環境 ,都是開一個VM ,然後按照google來的教學網頁來安裝 ,不過軟體版本更新快 ,加上每個作者安裝的步驟不盡相同 ,很容易卡關 ,有了Docker後就方便許多 ,相較VM不占資源

Docker 的介紹

Docker是一種開源容器化平台,它使得開發者可以將應用與其運行環境一同打包,這種打包稱為容器。容器是完全隔離的環境,擁有自己的文件系統,確保了運行一致性和安全性。

相比於虛擬機,Docker容器不需要完整的操作系統,因此它們啟動更快,占用的系統資源更少。此外,Docker容器的輕量化特性也使得它們更易於分發和擴展,這對於需要快速迭代和部署的現代軟體開發周期是一大福音。

安裝Docker是一個簡單的過程,可以通過各種操作系統的包管理工具進行安裝。對於Ubuntu系統,Docker提供了詳細的安裝指南,您可以在Docker官方文檔中找到相應的指令和步驟。

Docker Hub
Edit descriptionhub.docker.com

raw-image

PySpark 環境需求

PySpark是Apache Spark的Python API,它結合了Python的簡潔性和Spark的高性能,使得大數據分析和處理變得輕而易舉。要運行PySpark,您需要配置包含Python、Scala、R等語言的環境,以及安裝Spark本身。

在過去,構建這樣一個環境往往意味著需要在虛擬機上進行繁瑣的手動配置,這不僅耗時而且容易因為軟件版本不匹配等問題而失敗。但現在,有了Docker,我們可以使用像是jupyter/all-spark-notebook這樣的Docker映像,這個映像已經預先配置了包括PySpark在內的所有必要組件。

此外,這個Docker映像還包含了Apache Mesos。Apache Mesos是一個開源集群管理框架,它抽象化了CPU、記憶體、儲存和其他計算資源。這使得開發容錯和高可用性的分布式系統變得更為簡單和高效。

在接下來的部分,我們將探討如何使用Docker映像來快速啟動一個完整的PySpark環境,並進行一些基本的操作來驗證環境的配置。

使用Docker搭建PySpark環境

當你的系統已安裝好Docker後,搭建PySpark環境就變得異常簡單。以下是如何操作的步驟:

步驟一:獲取Docker映像

首先,我們需要從Docker Hub下載jupyter/all-spark-notebook映像。這個映像不僅包含了Jupyter Notebook和PySpark,還包括了Scala、R語言支持以及Apache Mesos。你可以通過下面的命令來下載這個映像:

docker pull jupyter/all-spark-notebook

這個命令會從Docker Hub拉取最新的映像到你的機器上。

步驟二:啟動Docker容器

一旦映像下載完成,你就可以使用以下命令來啟動一個容器:

docker run -p 8888:8888 jupyter/all-spark-notebook

這個命令會啟動一個新的容器,將容器的8888端口映射到你的主機的8888端口,這樣你就可以通過瀏覽器來訪問Jupyter Notebook了。

步驟三:訪問Jupyter Notebook

當容器啟動後,你會在終端看到一個URL,包含一個token。將這個URL複製到瀏覽器中,你將能夠看到Jupyter Notebook的界面。這時,你就可以開始使用Spark進行數據分析了。

運行PySpark測試程式

在Jupyter Notebook中,你可以創建一個新的筆記本來測試PySpark環境。以下是一個基本的例子,用於驗證SparkContext的配置並打印出Spark版本:

from pyspark import SparkConf
from pyspark.context import SparkContext
# 建立SparkContext
sc = SparkContext.getOrCreate(SparkConf().setAppName("MyApp"))
# 驗證SparkContext
print(sc)
# 打印Spark版本
print(sc.version)
# 停止SparkContext
sc.stop()

當你執行上述代碼時,它應該會顯示出SparkContext的配置資訊以及當前的Spark版本。

Apache Mesos的角色

在這個jupyter/all-spark-notebook映像中,還內嵌了Apache Mesos。Mesos是一種集群管理技術,能夠將資源從物理或虛擬機器中抽象化出來。這意味著你可以更加輕鬆地在多個機器上分布和管理你的Spark任務。儘管對於初學者來說,Mesos不是必須的,但了解它如何與Spark協同工作將有助於你在未來構建更加複雜的分布式系統。

實踐練習

現在你已經有了一個運行中的PySpark環境,是時候開始實踐了。你可以嘗試執行一些基本的Spark操作,例如讀取數據、執行轉換操作和行動操作。這些操作將幫助你理解Spark的核心概念,並為進一步的學習打下基礎。

Juptyer 釋出的jupyter/all-spark-notebook
除了基本的Juptyer note外
內容物還有Pytohn,Scala,R,Spark
還包括Apache Mesos
Apache Mesos將CPU,內存,存儲和其他計算資源從機器(物理或虛擬)中抽像出來,使容錯和彈性分佈式系統能夠輕鬆構建並有效運行。
Docker 安裝好後
簡單啟動
docker run -p 8888:8888 jupyter/all-spark-notebook
注意:此映像檔的python版本為3.10
raw-image

輸出畫面會跑出這個網址

貼上網址後就會出現Jupyter Notebook
raw-image
試試看是不是spark
from pyspark import SparkConf
from pyspark import SparkContext as sc
# Verify SparkContext
print(sc)
# Print Spark version
print(sc.version)
raw-image

Overview - Spark 2.4.3 Documentation
Apache Spark 2.4.3 documentation homepagespark.apache.org

手動練習Spark~!

結論

使用Docker來搭建PySpark環境為數據科學家和開發者提供了一個快速、一致且輕鬆的方法來進行大數據分析。通過幾個簡單的命令,你就能夠擁有一個功能強大的分析環境,並且可以直接在瀏覽器中進行操作。無論你是Spark的新手還是有經驗的專業人士,Docker都為你提供了一個無縫的開發體驗,讓你可以專注於數據的洞察,而不是環境的配置。

作者:黃翊鈜 Roy Hwang

經歷:ML engineer , AI engineer

    0會員
    24內容數
    留言0
    查看全部
    發表第一個留言支持創作者!
    你可能也想看
    創作者要怎麼好好休息 + 避免工作過量?《黑貓創作報#4》午安,最近累不累? 這篇不是虛假的關心。而是《黑貓創作報》發行以來可能最重要的一篇。 是的,我們這篇講怎麼補充能量,也就是怎麼休息。
    Thumbnail
    avatar
    黑貓老師
    2024-06-29
    Docker 之建立與使用 Docker Image 清理本地 Image前端 為了實驗我們上傳的 Docker Image 有沒有問題,我們先在學一個刪除本地 Docker Image,刪除 Docker Image 要使用 docker rmi <image> 這個語法,現在開始刪除本地 Docker Image 輸入以下指令 docker rmi timmmmm
    Thumbnail
    avatar
    Tim Bai
    2024-05-11
    Docker 之建立與使用 Docker Image 上傳雲端前言 大家好上次我們教了如何建立自己的 Docker Image,今天我們要來教怎麼把自己做好的 Docker Image 上傳到 Docker Hub,如果以後自己在公司有搭建 Docker Registry,也可以用同樣方式上傳到公司的 Docker Registry 私有倉庫 登入 Doc
    Thumbnail
    avatar
    Tim Bai
    2024-02-18
    Docker 之建立與使用 Docker Image 本地建立前言 大家好上次我們教了如何下載 Docker Image 使用,今天我們要教如何產出自己的 Image,這次會使用一個 Dockerfile 範例,自行打包 Docker Image,初步練習使用 Docker 指令 下載 Dockerfile 教學檔案 在這裡我已經幫忙寫好一個 Docke
    Thumbnail
    avatar
    Tim Bai
    2024-01-28
    Docker 之建立與使用 Docker Image 雲端下載前言 上次講到 Dockerfile、DockerImage、Docker Container 他們之間的關係,今天我們要來熟悉 Docker Image 如何使用,教你如何抓取雲端上的 Docker Image, Docker Image 下載來源 當我們今天要要使用 Docker Imag
    Thumbnail
    avatar
    Tim Bai
    2024-01-24
    DevOps效率提升:如何使用 ChatGPT 輕鬆優化 NodeJS Docker 镜像大小?嗨,你有沒有想過用 ChatGPT 來減少 DevOps 工作? 今天我將向您展示如何使用 ChatGPT 減少 NodeJS 網絡應用程式的鏡像大小。 您會驚訝於 ChatGPT 如何能夠在短短幾分鐘內輕鬆生成一個無錯誤的 Docker 文件,來優化 Node.js docker 映像的大小。
    Thumbnail
    avatar
    Eric Wei
    2023-11-10
    Golang - Gin #19: 使用Docker容器化Docker不僅僅改變了應用的部署方式,它還提供了一種封裝、分發和運行應用的統一方法。這篇文章將引導你完成Gin應用的容器化過程。
    Thumbnail
    avatar
    KH Huang
    2023-09-24
    Golang - Gin #19: 使用Docker容器化Docker不僅僅改變了應用的部署方式,它還提供了一種封裝、分發和運行應用的統一方法。這篇文章將引導你完成Gin應用的容器化過程。
    Thumbnail
    avatar
    KH Huang
    2023-09-24
    [GitLab] #2 使用Docker新增GitLab RunnerGitLab 是一個強大的程式碼託管和協作平台,而 GitLab Runner 是一個用於執行自動化測試和部署的工具。透過 Docker,您可以輕鬆新增 GitLab Runner 到您的環境中,提供更快速、可擴展的開發流程。以下就示範利用Docker新增GitLab Runner
    Thumbnail
    avatar
    Daniel
    2023-09-12
    [GitLab] #1 使用Docker自建GitLab Server在 Docker 上自建 GitLab Server 是一種方便且有效的方式來託管和管理您的程式碼。使用 Docker,您可以快速建立一個 GitLab 伺服器並且輕鬆進行配置和擴展。
    Thumbnail
    avatar
    Daniel
    2023-09-08
    使用Docker安裝GitLabGitLab不僅是一個源代碼管理工具,它還提供了一個統一的平台,將開發、運營和安全等流程整合在一起。通過GitLab,可以在單一的應用程序中進行專案計劃、源代碼管理、分支控制、CI/CD等操作。不論角色為何,GitLab提供了一個統一的資訊來源,讓你輕鬆地管理和追蹤整個開發流程。它消除了工具鏈的複雜
    Thumbnail
    avatar
    wang alan
    2023-05-19