
前提
- https://github.com/microsoft/pai/tree/v0.14.0
- Hadoop 2.9.0
- k8s 1.9.4 (高版本未測)
本次講解的主要是基于 Microsoft 開源的 OpenPAI,向大家通俗易懂的講解 OpenPAI 是如何快速部署 Hadoop 叢集的。便于大家快速部署Hadoop叢集。
環境:
ubuntu 16.04
docker 18.06
k8s 1.9.4
Hadoop 2.9.0
1. 準備
分析
以上系統環境準備好,首先克隆 Microsoft 開源的 OpenPAI 的代碼: https://github.com/microsoft/pai,切換到分支 v0.14.0。
由于我的目錄在 /home/damon 下,是以直接:
cd /home/damon/pai
ll
可以看到有如下目錄:
其中,src 目錄下都是一些代碼目錄以及腳本:
看着很多,其實我們隻要看 quick-start 下的幾個檔案:
sudo vi deployment/quick-start/quick-start-example.yaml #配置master節點資訊
sudo vi deployment/quick-start/kubernetes-configuration.yaml.template #不作大改
sudo vi deployment/quick-start/layout.yaml.template #增加機器相關資訊
sudo vi deployment/quick-start/services-configuration.yaml.template #配置docker相關資訊
第一個配置檔案主要是關于 master 節點。第二個配置主要是配置 k8s 的基本資訊,因為 OpenPAI 不僅可以部署 Hadoop,還可以基于 Docker、python 來部署 k8s。第三個配置主要是增加機器的資訊,我們需要修改的是配置 master 節點的資訊,至于 node 節點,我們可以通過打标簽的方式來。第四個配置主要是配置 docker 資訊,存儲 image 的各種 tag 形式。
根據配置模闆生成配置檔案
sudo python paictl.py config generate -i deployment/quick-start/quick-start-example.yaml -o ~/damon/pai-config -f
把生成的本地配置檔案推送到遠端 k8s 叢集
sudo python paictl.py config push -p ~/damon/pai-config/
執行上面的指令時,會出現輸入指令,意思是讓你輸入一個 cluster-id,這是 OpenPAI 為叢集設定的一個 id。輸入後回車即可把配置推送到遠端了。
擷取 cluster-id
如果生成過,執行
[email protected]:~/damon/pai$ sudo python paictl.py config get-id
2020-07-16 19:56:48,066 [INFO] - deployment.confStorage.get_cluster_id : Cluster-id is: ustc
即可擷取。
重點
以上配置都結束後,上面說過了,配置中隻有 master 節點資訊,需要手動給 node 節點打标簽:
kubectl label node nodeName hdfsrole=master
同樣的标簽還有類似:
master labels:
hdfsrole=master,jobhistory=true,launcher=true,node-exporter=true,pai-master=true,yarnrole=master,zookeeper=true
node labels:
gpu-check=true,hdfsrole=worker,node-exporter=true,pai-worker=true,yarnrole=worker
打完标簽後,即可開始部署 Hadoop 叢集了。
部署 Hadoop
部署 Hadoop 的指令:
sudo python paictl.py service start [-c /path/to/kubeconfig] [ -n service-name ]
解釋:-c 參數中帶的是 k8s 授權的 kube-config 路徑,-n 參數是服務名,如果沒帶 -n,則會預設啟動 src 下的所有的服務。
Hadoop 中主要有這些服務:
zookeeper
hadoop-name-node
hadoop-data-node
hadoop-resource-manager
hadoop-node-manager
hadoop-batch-job
hadoop-jobhistory
那就手動一個個執行吧。執行一個後看看 pod 有沒有啟動,相關的 configmap 有沒有建立,預設都是官方的。
注意項
如果發現 namenode 啟用了安全模式,而不想啟用的話,執行:
kubectl exec -it hadoop-name-node-e3bw9 bash
hadoop dfsadmin -safemode leave
即:進入 name-node 容器中執行關閉。
子產品功能說明
- resource-manager 是排程中心,負責資源管理。
- node-manager 是容器啟動的的執行者。通常異常情況需要重新開機 node-manager。
- zookeeper 為資料的存儲中心。
- namenode 和 datanode 為 hadoop 服務(HDFS)的基礎層。
子產品運維方法說明
- resource-manager 重新開機:大量任務 waiting 和 stopping 和資料不一緻等情況。
- node-manager 重新開機:更新節點的資源資訊或者節點故障等。
<span class="suffix" style="display: none;"></span></h6>
<h4 data-tool="mdnice編輯器" style="margin-top: 30px; margin-bottom: 15px; font-weight: bold; color: black; font-size: 18px;"><span class="prefix" style="display: none;"></span><span class="content">個人網站</span><span class="suffix" style="display: none;"></span></h4>
[技術分享部落格](http://www.damon8.cn)
往期回顧
微服務自動化部署CI/CD
ArrayList、LinkedList 你真的了解嗎?
微服務架構設計之解耦合
大佬整理的mysql規範,分享給大家
如果張東升是個程式員
Oauth2的授權碼模式《上》
Oauth2的認證明戰-HA篇
淺談 Java 集合 | 底層源碼解析
基于 Sentinel 作熔斷 | 文末贈資料
基礎設施服務k8s快速部署之HA篇
今天被問微服務,這幾點,讓面試官刮目相看
Spring cloud 之多種方式限流(實戰)
Spring cloud 之熔斷機制(實戰)
面試被問finally 和 return,到底誰先執行?
Springcloud Oauth2 HA篇
Spring Cloud Kubernetes之實戰一配置管理
Spring Cloud Kubernetes之實戰二服務注冊與發現
Spring Cloud Kubernetes之實戰三網關Gateway
關注公衆号,回複入群,擷取更多驚喜!公衆号(程式猿Damon)裡回複 ES、Flink、Java、Kafka、MQ、ML、監控、大資料、k8s 等關鍵字可以檢視更多關鍵字對應的文章。
如有收獲,點個在看,謝謝