2019-06-12|閱讀時間 ‧ 約 9 分鐘

使用Docekr快速架設PySpark環境

    Docker 安裝 請參考下列網址

    引言

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

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

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

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

    Docker 的介紹

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

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

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

    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
    輸出畫面會跑出這個網址
    貼上網址後就會出現Jupyter Notebook
    試試看是不是spark
    from pyspark import SparkConf
    from pyspark import SparkContext as sc
    # Verify SparkContext
    print(sc)
    # Print Spark version
    print(sc.version)

    手動練習Spark~!

    結論

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

    作者:黃翊鈜 Roy Hwang

    經歷:ML engineer , AI engineer

    分享至
    成為作者繼續創作的動力吧!
    從 Google News 追蹤更多 vocus 的最新精選內容從 Google News 追蹤更多 vocus 的最新精選內容

    發表回應

    成為會員 後即可發表留言
    © 2024 vocus All rights reserved.