Rainbond 5分鐘部署 Spark Standalone 集羣

Standalone 是 Spark 自身提供的一種主從集羣部署模式。本文講述一個常規1主多從的集羣部署模式,該模式下master服務依靠Rainbond平臺監控保障其可用性,支持從新調度重啓。 worker服務能夠根據須要伸縮多個節點。html

部署效果截圖以下:docker

image-20201118160946574

<center>Rainbond 部署效果圖</center>apache

image-20201118161242094

<center>Spark master UI 圖</center>緩存

部署步驟

開始前,你須要完成Rainbond平臺的安裝和搭建,參考Rainbond 安裝與部署 本參考文檔適合已掌握Rainbond 基礎操做的同窗,所以若是你還剛接觸Rainbond平臺,請先參考 Rainbond 快速入門指南網絡

部署單實例的master服務

  1. 部署spark-master,採用Rainbond基於Docker鏡像建立組件:架構

    bde2020/spark-master:3.0.1-hadoop3.2

  2. 確認建立檢測成功後選擇高級設置進行三個特殊設置。分佈式

    • 在環境變量模塊中添加環境變量微服務

      SPARK_DAEMON_JAVA_OPTS=-Dspark.deploy.recoveryMode=FILESYSTEM -Dspark.deploy.recoveryDirectory=/dataoop

      咱們須要設置spark-master爲「Recovery with Local File System」模式。能夠在master發生重啓後從持久化文件中恢復數據,保持master服務的可用性。ui

    • 在存儲設置中添加共享存儲 /data 持久化master的數據,使其能夠重啓後恢復。

    • 在端口管理中將 8080端口的對外服務打開,組件啓動成功後便可訪問master的UI。

    • 在部署屬性中選擇組件類型爲有狀態單實例

      部署爲有狀態組件後,其能夠得到一個穩定的內部訪問域名,供worker組件鏈接。有狀態服務控制權能夠保障master節點不會重複啓動多個實例。

  3. 設置完成後選擇確認建立便可啓動master服務。

組件成功點擊訪問便可打開master UI。如上圖所示,咱們能夠在UI中獲取到master服務的訪問地址是:spark://gr7b570e:7077 ,注意UI上顯示的地址是spark://gr7b570e-0:7077 咱們須要使用的是spark://gr7b570e:7077 ,複製並記錄這個地址。

注意,地址實際值請查看你的UI顯示,這裏只是舉例說明。

部署多實例的worker實例

  1. 部署spark-worker,採用基於Docker-run命令建立組件,這種建立方式能夠直接設置一些必要屬性:

    docker run -it -e SPARK_MASTER=spark://gr7b570e:7077 -e SPARK_WORKER_MEMORY=1g bde2020/spark-worker:3.0.1-hadoop3.2

    如上建立方式指定了兩個環境變量。

    • SPARK_MASTER 指定的是master的地址,由上一步建立的組件獲取。
    • SPARK_WORKER_MEMORY 設置worker單個實例的內存量,這個根據每一個實例分配的內存進行設置便可。好比每一個實例分配1GB, 則設置SPARK_WORKER_MEMORY=1g 。若是不設置此變量,服務會自動讀取操做系統的內存量。因爲咱們是採用的容器部署方式,讀取的值會是宿主機的所有內存。將遠大於worker實例實際分配的可用內存值。

  1. 一樣進入高級設置,設置組件部署模式爲 有狀態多實例
  2. 確認建立組件,啓動成功後便可在組件的伸縮頁面中設置worker的運行實例數。

image-20201119224718640

到此,咱們的Spark集羣已部署完成。

Spark數據讀取

  • <b>就近數據處理原則逐步打破</b>

    過去咱們更偏心於把數據處理服務(hadoop、yarn等)部署到離數據最近的地方。主要緣由是hadoop計算數據的模式對IO消耗較多,若是數據與計算分類,網絡IO帶來的消耗將更大,對網絡帶寬要求較大。

    但Spark機制不一樣,Spark計算模式是將數據儘量緩存到內存中,也就意味着Spark消耗的資源主要是內存和CPU。而後存儲數據的設備內存和CPU配屬不必定充足。所以數據與計算分離將是更好的選擇。

  • <b>數據與計算分離後的更多選擇</b>

    數據與計算分離是指計算服務單獨部署,存儲服務經過網絡爲計算服務提供數據。經過網絡也就意味着能夠有多種協議模式可選,除了傳統的HDFS,目前經常使用的就是對象存儲,好比兼容S3的各種服務,也能夠是分佈式文件系統,能夠根據數據類型和實際須要合理選擇。計算服務(spark worker) 能夠根據任務的須要靈活的在分佈式集羣中分配計算資源。

    本文講述的在Rainbond中部署Spark集羣便是這種用例。

Master節點主備高可用

Spark 基於 ZooKeeper能夠提供master服務的主備切換。 配置方式也比較簡單,參考 官方文檔


Rainbond 雲原生應用管理平臺,實現微服務架構不用改代碼,管理 Kubernetes 不用學容器,幫企業實現應用上雲,一站式將任何企業應用持續交付到 Kubernetes 集羣、混合雲、多雲等基礎設施。是 Rainstore 雲原生應用商店的支撐平臺。

1. Rainbond 官網

2. Rainbond 安裝使用

3. Rainbond 參考手冊全集

相關文章
相關標籤/搜索