spark 2.3.0 開始支援使用k8s 作為資源管理原生排程spark。使用k8s原生排程的spark主要有以下好處:
採用k8s原生排程,不再需要二級排程,直接使用k8s原生的排程模組,實現與其他應用的混布;資源隔離:任務可以提交到指定的namespace,這樣可以復用k8s原生的qouta限制,實現任務資源的限制;
資源分配:可以指定每個spark任務的指定資源限制,任務之間更加隔離;
乙個k8s 1.7版本以上的集群,由於spark on k8s 任務提交後實際上在集群中是以custom resources和custom controller的形式,故你需要乙個1.7+版本的k8s集群,同時需要啟動k8s dns和rbac。以下為基礎映象,包含了spark和官方exemples,本文的試用使用的是該官方的exemple。
cd /path/to/spark-2.3.0-bin-hadoop2.7
docker build -t /spark:2.3.0
-f kubernetes/dockerfiles/spark/dockerfile .
docker push /spark:2.3.0
bin/spark-submit \
--master k8s://\
--deploy-mode cluster \
--name spark-pi \
--class org.apache.spark.examples.sparkpi \
--conf spark.executor.instances=5 \
--conf spark.kubernetes.container.image=/spark:2.3.0 \
local:///opt/spark/examples/jars/spark-examples_2.11-2.3.0.jar
更多預設的引數配置請參考:1.spark running on k8s
注意以下坑:
spark demo跑了起來後,可以看到spark-submit相當於起了乙個controller, 用於管理單個spark任務,首先會建立該任務的service
和driver
,待driver
執行後,會啟動exeuctor
,個數為--conf spark.executor.instances=5
指定的引數,待執行完畢後,submit會自動刪除exeuctor
,driver
會用預設的gc機制清理。
spark running on k8sissue #34377
k8s安裝步驟
第一天 說明 1 如果不是root,則通過su root進行切換。root預設密碼修改方式 sudo passwd root,本次設定為111111 2 hostname主機名不能有大寫。如果需要修改,參考 sudo hostnamectl set hostname master 3 可能的依賴包 ...
k8s安裝及部署步驟
國內安裝k8s的四種途徑 1.使用kubeadmin通過離線映象安裝 2.使用阿里公有雲平台k8s,鈔能力 3.通過yum官方倉庫安裝,上古版本 4.二進位製包的形式進行安裝,kubeasz github 安裝步驟 一 環境配置 1.設定主機名與時區 timedatectl set timezone...
k8s彈性伸縮概念以及測試用例
本文原文出處 彈性伸縮式k8s中的一大亮點功能,當負載大的時候,你可以對應用進行擴容,提公升pod的副本數來應對大量的流量,當負載小的時候可以對應用進行縮容,以避免資源浪費。也可以讓應用自動的進行擴容和縮容,這一功能有用。例如當微博出現了乙個話題時,這個時候人們都去訪問,此時他的伺服器將無法處理大量...