工作日誌——基於k8s搭建spark叢集
使用k8s搭建spark叢集
這幾天嘗試在k8s中搭建spark叢集,踩了一些坑,跟大 家分享一下。
Spark的元件介紹可參考官方文件
大資料生態圈簡介可參考這篇文章
基於k8s官方示例
具體參考github k8s
FAQ
映象拉取問題
該方法需要訪問gcr.io下載映象(國內一般需要vpn),需要注意的是gcr.io/google_containers/spark:1.5.2_v1映象不能使用index.tenxcloud.com/google_containers/spark替換,替換後拉取映象時會出現“docker: filesystem layer verification failed”錯誤。
可將zeppelin-controller.yaml使用的映象修改為index.tenxcloud.com/google_containers/zeppelin:v0.5.6_v1
webui service使用問題
文件中的kubectl proxy –port=8001指令只能監聽127.0.0.1的代理請求,不適用於測試環境和虛擬機器環境,因為使用的ip地址不是127.0.0.1。
此時使用kubectl proxy –port=8001 –address=
pyspark示例執行錯誤
示例中的資料來源存在問題,可使用本地檔案執行,例如“sc.textFile(“/opt/spark/licenses/*”).map(lambda s: len(s.split())).sum()”
Zeppelin webui使用問題
同樣只能通過localhost或127.0.0.1訪問,可以通過將zeppelin service型別配置為NodePort。參考spark-20160427.zip中的zeppelin-service.yaml。
使用方法為:
使用zeppelin-service.yaml建立zeppelin service,可通過spec.ports.nodePort指定埠,不指定時為埠隨機。
使用kubectl describe svc zeppelin|grep NodePort指令檢視埠。
在瀏覽器中訪問任意節點ip:NodePort訪問zeppelin webui。
點選“Create new note”,輸入Note Name。
在新頁面中執行以下內容:
%pyspark
print sc.textFile(“/opt/spark/licenses/*”).map(lambda s: len(s.split())).sum()
該示例會統計zeppelin本地/opt/spark/licenses/目錄下的所有檔案的單詞數量,幾秒後會看到執行結果。
基於tenxcloud映象庫搭建
需要根據k8s原始碼中的examples/spark/下的yaml檔案搭建,將所有yaml檔案複製到工作目錄下。
修改spark-master-controller.yaml和spark-worker-controller.yaml:
* spec.template.spec.containers.command均修改為“/start.sh”
* spec.template.spec.containers.images分別修改為index.tenxcloud.com/google_containers/spark-master:1.5.2_v1和index.tenxcloud.com/google_containers/spark-worker:1.5.2_v1
zeppelin-controller.yaml使用的映象修改為index.tenxcloud.com/google_containers/zeppelin:v0.5.6_v1
修改完成後,按k8s官方示例的步驟啟動即可。
簡易的spark-driver
由於zeppelin映象非常大,拉取會消耗很多時間。可以使用下面的spark-driver.yaml建立一個簡易的spark-driver:
kind: ReplicationController
apiVersion: v1
metadata:
name: spark-driver
spec:
replicas: 1
selector:
component: spark-driver
template:
metadata:
labels:
component: spark-driver
spec:
containers:
– name: spark-driver
image: index.tenxcloud.com/google_containers/spark-driver:1.5.2_v1
resources:
requests:
cpu: 100m
建立後,使用kubectl exec <spark-driver-podname> -it pyspark即可訪問。
本文轉自CSDN-工作日誌——基於k8s搭建spark叢集
相關文章
- 基於 ZooKeeper 搭建 Spark 高可用叢集Spark
- 搭建spark on yarn 叢集SparkYarn
- Spark3.0.0叢集搭建Spark
- 基於Dokcer搭建Redis叢集(主從叢集)Redis
- 從0到1搭建spark叢集---企業叢集搭建Spark
- 如何基於Jupyter notebook搭建Spark叢集開發環境Spark開發環境
- docker下,極速搭建spark叢集(含hdfs叢集)DockerSpark
- HADOOP SPARK 叢集環境搭建HadoopSpark
- 基於zookeeper+leveldb搭建activemq叢集MQ
- 基於kubeasz部署高可用k8s叢集K8S
- Spark3.0.1各種叢集模式搭建Spark模式
- 教你如何搭建K8S叢集。K8S
- k8s——搭建叢集環境K8S
- 基於 ZooKeeper 搭建 Hadoop 高可用叢集Hadoop
- 基於kerberos的hadoop安全叢集搭建ROSHadoop
- 基於 Redis3.2.4 叢集搭建說明RedisS3
- 關於k8s叢集容器日誌收集的總結K8S
- 基於樹莓派的叢集實驗(一)--spark on yarn樹莓派SparkYarn
- 在K8S上搭建Redis叢集K8SRedis
- Kubeadm方式搭建K8S叢集K8S
- k8s叢集搭建--kubeadm方式K8S
- 基於 HAProxy + KeepAlived 搭建 RabbitMQ 高可用叢集MQ
- PC基於Linux的叢集環境搭建?Linux
- 基於Ubuntu部署企業級kubernetes叢集---k8s叢集容部署UbuntuK8S
- Mac + Docker + K8S 本地搭建K8S叢集MacDockerK8S
- 【K8S】基於單Master節點安裝K8S叢集K8SAST
- 簡單的方式搭建k8s叢集K8S
- 高階k8s HA 叢集搭建(一)K8S
- 使用kind快速搭建本地k8s叢集K8S
- 從零搭建K8S測試叢集K8S
- 基於docker環境下搭建redis主從叢集DockerRedis
- 基於滴滴雲伺服器搭建 Consul 叢集伺服器
- Spark 叢集搭建從零開始之3 Spark Standalone叢集安裝、配置與測試Spark
- 本地開發spark程式碼上傳spark叢集服務並執行(基於spark官網文件)Spark
- 2019最新k8s叢集搭建教程 (centos k8s 搭建)K8SCentOS
- 基於Kubernetes v1.24.0的叢集搭建(一)
- 基於Kubernetes v1.24.0的叢集搭建(二)
- 基於Kubernetes v1.24.0的叢集搭建(三)