天天看點

首發基于OpenPAI細化部署 Hadoop 叢集前提環境:

首發基于OpenPAI細化部署 Hadoop 叢集前提環境:

前提

  1. https://github.com/microsoft/pai/tree/v0.14.0
  2. Hadoop 2.9.0
  3. 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
           

可以看到有如下目錄:

首發基于OpenPAI細化部署 Hadoop 叢集前提環境:

其中,src 目錄下都是一些代碼目錄以及腳本:

首發基于OpenPAI細化部署 Hadoop 叢集前提環境:

看着很多,其實我們隻要看 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 容器中執行關閉。

子產品功能說明

  1. resource-manager 是排程中心,負責資源管理。
  2. node-manager 是容器啟動的的執行者。通常異常情況需要重新開機 node-manager。
  3. zookeeper 為資料的存儲中心。
  4. namenode 和 datanode 為 hadoop 服務(HDFS)的基礎層。

子產品運維方法說明

  1. resource-manager 重新開機:大量任務 waiting 和 stopping 和資料不一緻等情況。
  2. 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&nbsp;你真的了解嗎?

微服務架構設計之解耦合

大佬整理的mysql規範,分享給大家

如果張東升是個程式員

Oauth2的授權碼模式《上》

Oauth2的認證明戰-HA篇

淺談&nbsp;Java&nbsp;集合&nbsp;|&nbsp;底層源碼解析

基于 Sentinel 作熔斷 | 文末贈資料

基礎設施服務k8s快速部署之HA篇

今天被問微服務,這幾點,讓面試官刮目相看

Spring cloud 之多種方式限流(實戰)

Spring cloud 之熔斷機制(實戰)

面試被問finally 和 return,到底誰先執行?

Springcloud Oauth2 HA篇

Spring Cloud Kubernetes之實戰一配置管理

Spring Cloud Kubernetes之實戰二服務注冊與發現

Spring Cloud Kubernetes之實戰三網關Gateway

首發基于OpenPAI細化部署 Hadoop 叢集前提環境:

關注公衆号,回複入群,擷取更多驚喜!公衆号(程式猿Damon)裡回複 ES、Flink、Java、Kafka、MQ、ML、監控、大資料、k8s 等關鍵字可以檢視更多關鍵字對應的文章。

如有收獲,點個在看,謝謝

首發基于OpenPAI細化部署 Hadoop 叢集前提環境: