亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專(zhuān)欄INFORMATION COLUMN

搭建Spark集群?沒(méi)想到你是這樣的k8s

bitkylin / 2979人閱讀

摘要:在本文的例子中,你將使用和創(chuàng)建一個(gè)功能型集群。第二步啟動(dòng)你的服務(wù)是集群的服務(wù)。這可能需要一些時(shí)間來(lái)拉取鏡像并啟動(dòng)。注將含有到的超鏈接。這些鏈接是不能正常工作的鏈接將嘗試連接到集群,而不會(huì)自動(dòng)代理的集群??焖偈褂檬褂眠B接到驅(qū)動(dòng)并運(yùn)行。

在本文的例子中,你將使用 Kubernetes 和 Docker 創(chuàng)建一個(gè)功能型Apache Spark集群。

你將使用Spark standalone模式 安裝一個(gè) Spark master服務(wù)和一組Spark workers。

對(duì)于已熟悉這部分內(nèi)容的讀者,可以直接跳到 tl;dr 章節(jié)。

源代碼

Docker 鏡像主要基于 https://github.com/mattf/dock...。 源碼托管在 https://github.com/kubernetes...

步驟零:準(zhǔn)備工作

本示例假定你已經(jīng)具備以下條件:

● 有已安裝并運(yùn)行的 kubernetes集群。
● 已在某個(gè)path路徑中安裝了kubectl 命令行工具。
● 已運(yùn)行了一個(gè)spark-master的k8s service,可以使用‘spark-master’域名在kube DNS實(shí)例中自動(dòng)發(fā)現(xiàn)該服務(wù)。

更多詳細(xì)內(nèi)容可在源碼的Dockerfile中查看。

第一步:創(chuàng)建命名空間
$ kubectl create -f examples/spark/namespace-spark-cluster.yaml

現(xiàn)在列出所有命名空間:

$ kubectl get namespaces
NAME          LABELS             STATUS
default                    Active
spark-cluster name=spark-cluster Active

對(duì)于kubectl 客戶(hù)端使用的命名空間,我們定義一個(gè)環(huán)境并使用它:

$ kubectl config set-context spark --namespace=spark-cluster --cluster=${CLUSTER_NAME} --user=${USER_NAME}
$ kubectl config use-context spark

你可以在Kubernetes配置文件~/.kube/config中查看集群名稱(chēng)以及用戶(hù)名稱(chēng)。

第二步:?jiǎn)?dòng)你的master服務(wù)

Master service 是 Spark集群的master服務(wù)。
使用 examples/spark/spark-master-controller.yaml 文件來(lái)創(chuàng)建一個(gè)replication controller 運(yùn)行Spark Master服務(wù)。

$ kubectl create -f examples/spark/spark-master-controller.yaml
replicationcontroller "spark-master-controller" created

然后,用examples/spark/spark-master-service.yaml 文件來(lái)創(chuàng)建一個(gè)邏輯上的服務(wù)端點(diǎn),Spark workers可以使用該服務(wù)來(lái)訪問(wèn)Master pod

$ kubectl create -f examples/spark/spark-master-service.yaml
service "spark-master" created

然后你可以為Spark Master WebUI 創(chuàng)建一個(gè)服務(wù):

$ kubectl create -f examples/spark/spark-webui.yaml
service "spark-webui" created

查看 Master 是否能運(yùn)行和可訪問(wèn)

$ kubectl get podsNAME                            READY     STATUS    RESTARTS   AGEspark-master-controller-5u0q5   1/1       Running   0          8m

檢查日志以查看master的狀態(tài)。(使用上一條指令輸出的pod名稱(chēng))

{{{$ kubectl logs spark-master-controller-5u0q5
starting org.apache.spark.deploy.master.Master, logging to /opt/spark
-1.5.1-bin-hadoop2.6/sbin/../logs/spark--org.apache.spark.deploy.master.
- Master-1-spark-
master-controller-g0oao.out
Spark Command: /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java -cp /
opt/spark-1.5.1-bin-hadoop2.6/sbin/../conf/:/opt/spark-1.5.1-bin-
hadoop2.6/lib/spark-assembly-1.5.1-hadoop2.6.0.jar:/opt/spark-1.5.1
-bin-hadoop2.6/lib/datanucleus-rdbms-3.2.9.jar:/opt/spark-1.5.1-bin
- -hadoop2.6/lib/datanucleus-core-3.2.10.jar:/opt/spark-1.5.1-bin-
- hadoop2.6/lib/datanucleus-api-jdo-3.2.6.jar -Xms1g -Xmx1g org.apache.spark.deploy.master.Master --ip spark-master --port 7077
-  --webui-port 8080
========================================
15/10/27 21:25:05 INFO Master: Registered signal handlers for 
[TERM, HUP, INT]
15/10/27 21:25:05 INFO SecurityManager: Changing view acls to: root
15/10/27 21:25:05 INFO SecurityManager: Changing modify acls to: root
15/10/27 21:25:05 INFO SecurityManager: SecurityManager: authentication 
disabled; ui acls disabled; users with view permissions: Set(root); users with 
modify permissions: Set(root)
15/10/27 21:25:06 INFO Slf4jLogger: Slf4jLogger started
15/10/27 21:25:06 INFO Remoting: Starting remoting
15/10/27 21:25:06 INFO Remoting: Remoting started; listening on addresses :[akka.tcp://sparkMaster@spark-master:7077]
15/10/27 21:25:06 INFO Utils: Successfully started service "sparkMaster" on port 
7077.
15/10/27 21:25:07 INFO Master: Starting Spark master at spark://spark-master:
7077
15/10/27 21:25:07 INFO Master: Running Spark version 1.5.1
15/10/27 21:25:07 INFO Utils: Successfully started service "MasterUI" on 
port 8080.
15/10/27 21:25:07 INFO MasterWebUI: Started MasterWebUI at http://
spark-master:8080
15/10/27 21:25:07 INFO Utils: Successfully started service on port 6066.
15/10/27 21:25:07 INFO StandaloneRestServer: Started REST server for
 submitting applications on port 6066
15/10/27 21:25:07 INFO Master: I have been elected leader! New state: ALIVE}}}

確認(rèn)master正常運(yùn)行后,你可以使用k8s集群代理訪問(wèn)Spark WebUI:

kubectl proxy --port=8001

此時(shí)可以通過(guò)http://localhost:8001/api/v1/...訪問(wèn)UI

第三步:?jiǎn)?dòng) Spark workers

Spark workers 在 Spark 集群中扮演十分重要的角色。他們?yōu)槌绦蛱峁﹫?zhí)行資源和數(shù)據(jù)緩存功能。

Spark workers 需要 Master service處于運(yùn)行狀態(tài)。

使用examples/spark/spark-worker-controller.yaml 文件創(chuàng)建一個(gè)replication controller來(lái)管理 worker pods 。

$ kubectl create -f examples/spark/spark-worker-controller.yaml
replicationcontroller "spark-worker-controller" created

查看 workers 是否正常運(yùn)行

如果你啟動(dòng)Spark WebUI,當(dāng)worker就緒后應(yīng)該出現(xiàn)在UI 中。(這可能需要一些時(shí)間來(lái)拉取鏡像并啟動(dòng)pods。)你也可以用以下方式查詢(xún)狀態(tài):

$ kubectl get pods
NAME                            READY     STATUS    RESTARTS   AGE
spark-master-controller-5u0q5   1/1       Running   0          25m
spark-worker-controller-e8otp   1/1       Running   0          6m
spark-worker-controller-fiivl   1/1       Running   0          6m
spark-worker-controller-ytc7o   1/1       Running   0          6m
$ kubectl logs spark-master-controller-5u0q5
[...]
15/10/26 18:20:14 INFO Master: Registering worker 10.244.1.13:53567 
with 2 cores, 6.3 GB RAM
15/10/26 18:20:14 INFO Master: Registering worker 10.244.2.7:46195
 with 2 cores, 6.3 GB RAM
15/10/26 18:20:14 INFO Master: Registering worker 10.244.3.8:39926 
with 2 cores, 6.3 GB RAM

假如上一節(jié)中kubectl proxy仍在運(yùn)行,你應(yīng)該也能在UI中看到workers。注:UI 將含有到 worker Web UI的超鏈接。 這些鏈接是不能正常工作的(鏈接將嘗試連接到集群IP,而Kubernetes不會(huì)自動(dòng)代理的集群IP)。

第四步:在 Spark 集群中啟動(dòng) Zeppelin UI來(lái)加載工作任務(wù)

Zeppelin UI pod可以用來(lái)在Spark集群加載jobs,加載操作既可以通過(guò)web端的筆記本完成,也可以通過(guò)傳統(tǒng)的Spark命令行方式完成。更多細(xì)節(jié)見(jiàn) Zeppelin和 Spark architecture架構(gòu)。

$ kubectl create -f examples/spark/zeppelin-controller.yaml
replicationcontroller "zeppelin-controller" created

Zeppelin 需要 Master service處于運(yùn)行狀態(tài)。

查看 Zeppelin 是否正常運(yùn)行

$ kubectl get pods -l component=zeppelin
NAME                        READY     STATUS    RESTARTS   AGE
zeppelin-controller-ja09s   1/1       Running   0          53s
第五步:操作集群

現(xiàn)在你有兩個(gè)選擇:可以通過(guò)圖形界面訪問(wèn)Spark 集群,也可以保持使用CLI。

快速使用pyspark

使用 kubectl exec連接到Zeppelin 驅(qū)動(dòng)并運(yùn)行pipeline。

使用 kubectl exec連接到Zeppelin 驅(qū)動(dòng)并運(yùn)行pipeline。

$ kubectl exec zeppelin-controller-ja09s -it pyspark
Python 2.7.9 (default, Mar  1 2015, 12:57:24)
[GCC 4.9.2] on linux2
Type "help", "copyright", "credits" or "license" for more
 information.
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _ / _ / _ `/ __/  "_/
   /__ / .__/\_,_/_/ /_/\_   version 1.5.1
      /_/
Using Python version 2.7.9 (default, Mar  1 2015 12:57:24)
SparkContext available as sc, HiveContext available as sqlContext.
>>> sc.textFile("gs://dataflow-samples/shakespeare/*").map
(lambda s: len(s.split())).sum()
939193

恭喜你,你把所有莎士比亞戲劇中的單詞個(gè)數(shù)統(tǒng)計(jì)出來(lái)了。

使用圖形界面,亮瞎你的眼!

使用之前創(chuàng)建的Zeppelin pod,設(shè)置WebUI的轉(zhuǎn)發(fā)端口:

$ kubectl port-forward zeppelin-controller-ja09s 8080:8080

這條指令將訪問(wèn)localhost 8080端口的請(qǐng)求轉(zhuǎn)發(fā)到容器中的8080端口。然后你可以通過(guò)https://localhost:8080/ 訪問(wèn)Zeppelin。

創(chuàng)建一個(gè)“New Notebook”。在其中輸入:

%pyspark
print sc.textFile("gs://dataflow-samples/shakespeare/*").map
(lambda s: len(s.split())).sum()

結(jié)論

現(xiàn)在你已為Spark master,Spark workers 和 Spark driver創(chuàng)建了service和replication controller。你可以用這個(gè)例子來(lái)進(jìn)行下一步,并開(kāi)始使用剛才創(chuàng)建的Apache Spark集群,更多信息見(jiàn)Spark 文檔。

tl;dr

kubectl create -f examples/spark

設(shè)置后:

kubectl get pods # Make sure everything is running
kubectl proxy --port=8001 # Start an application proxy, if you want
 to see the Spark Master WebUI
kubectl get pods -lcomponent=zeppelin # Get the driver pod to interact
 with.

此時(shí)Master UI 可以通過(guò)http://localhost:8001/api/v1/...訪問(wèn)。

你可以通過(guò)kubectl exec使用傳統(tǒng)的spark-shell / spark-subsubmit / pyspark 命令行與Spark 集群進(jìn)行交互,或者如果你想與Zeppelin交互:

kubectl port-forward zeppelin-controller-abc123 8080:8080 &
kubectl port-forward zeppelin-controller-abc123 8080:8080 &

然后訪問(wèn)http://localhost:8080/

使用Spark 的已知問(wèn)題

● 該方案提供了一個(gè)僅限于集群網(wǎng)絡(luò)的Spark 配置,這意味著Spark master 只能通過(guò)集群service訪問(wèn)。如果你需要在 zeppelin pod 中使用除了Zeppelin 或spark-submit 之外的外部客戶(hù)端來(lái)提交 jobs ,你需要為客戶(hù)端提供一種訪問(wèn)examples/spark/spark-master-service.yaml 的方式。參見(jiàn)service以了解更多信息。

使用 Zeppelin 的已知問(wèn)題

● Zeppelin pod 很大,因此拉取鏡像可能會(huì)消耗一段時(shí)間,拉取速度取決于你的網(wǎng)絡(luò)條件。Zeppelin pod 的尺寸是我們正要解決的問(wèn)題,詳見(jiàn)問(wèn)題# 17231。
● 第一次運(yùn)行Zeppelin 時(shí), pipeline可能會(huì)花費(fèi)很多時(shí)間(約一分鐘)。似乎需要相當(dāng)多的時(shí)間來(lái)加載。
● 在GKE環(huán)境中, kubectl port-forward 不可能長(zhǎng)時(shí)間保持穩(wěn)定狀態(tài)。如果你發(fā)現(xiàn)Zeppelin變成斷開(kāi)狀態(tài),port-forward很可能出現(xiàn)故障,并需要重啟。詳見(jiàn)# 12179。

本文由時(shí)速云翻譯,如若轉(zhuǎn)載,需注明轉(zhuǎn)載自“時(shí)速云”
原文鏈接:
https://github.com/kubernetes...

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/32498.html

相關(guān)文章

  • 關(guān)于 Mesos,你知道多少?

    摘要:是一個(gè)集群管理器,提供了有效的跨分布式應(yīng)用或框架的資源隔離和共享,可以運(yùn)行。更貼近于層,而在之上。所以有人稱(chēng)其為,或者分布式操作系統(tǒng)。你在這里可以看到使用的列表和有什么關(guān)聯(lián)嗎是一個(gè)為分布式應(yīng)用提供一致性服務(wù)的軟件,而是一個(gè)分布式應(yīng)用。 showImg(https://segmentfault.com/img/bVrBZJ); 聽(tīng)過(guò)不少人在討論 Mesos,然而并不是很明白 Mesos ...

    cartoon 評(píng)論0 收藏0
  • 關(guān)于 Mesos,你知道多少?

    摘要:是一個(gè)集群管理器,提供了有效的跨分布式應(yīng)用或框架的資源隔離和共享,可以運(yùn)行。更貼近于層,而在之上。所以有人稱(chēng)其為,或者分布式操作系統(tǒng)。你在這里可以看到使用的列表和有什么關(guān)聯(lián)嗎是一個(gè)為分布式應(yīng)用提供一致性服務(wù)的軟件,而是一個(gè)分布式應(yīng)用。 showImg(https://segmentfault.com/img/bVrBZJ); 聽(tīng)過(guò)不少人在討論 Mesos,然而并不是很明白 Mesos ...

    xietao3 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<